--- asterisk/channels/chan_sip.c.orig 2003-10-24 14:17:41.000000000 -0400 +++ asterisk/channels/chan_sip.c 2003-10-24 14:18:09.000000000 -0400 @@ -5013,13 +5013,13 @@ ast_log(LOG_NOTICE, "Nothing to pick up\n"); transmit_response_reliable(p, "503 Unavailable", req); p->alreadygone = 1; - /* Unlock locks so ast_hangup can do its magic */ - ast_mutex_unlock(&p->lock); + /* Unlock locks so ast_hangup can do its magic */ ast_mutex_unlock(&p->lock); ast_hangup(c); ast_mutex_lock(&p->lock); c = NULL; } else { ast_mutex_unlock(&p->lock); + ast_setstate(c, AST_STATE_DOWN); ast_hangup(c); ast_mutex_lock(&p->lock); c = NULL;