Index: /team/bbryant/sip-call-pickup/channels/chan_sip.c =================================================================== --- /team/bbryant/sip-call-pickup/channels/chan_sip.c (revision 313524) +++ /team/bbryant/sip-call-pickup/channels/chan_sip.c (working copy) @@ -22087,7 +22087,9 @@ } else { /* Pickup call in call group */ ast_channel_unlock(c); *nounlock = 1; + sip_pvt_unlock(p); if (ast_pickup_call(c)) { + sip_pvt_lock(p); ast_log(LOG_NOTICE, "Nothing to pick up for %s\n", p->callid); transmit_response_reliable(p, "503 Unavailable", req); sip_alreadygone(p); @@ -22095,12 +22097,11 @@ sip_pvt_unlock(p); c->hangupcause = AST_CAUSE_CALL_REJECTED; } else { - sip_pvt_unlock(p); c->hangupcause = AST_CAUSE_NORMAL_CLEARING; - } - p->invitestate = INV_COMPLETED; + } ast_hangup(c); sip_pvt_lock(p); + p->invitestate = INV_COMPLETED; c = NULL; } break;