From: Mark Michelson Date: Tue, 7 Apr 2015 15:35:13 +0000 (+0000) Subject: Do not queue message requests that we do not respond to. X-Git-Tag: certified/13.1-cert3-rc1~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45f09898e99cd70329aeaff2598297b58c09de3a;p=thirdparty%2Fasterisk.git Do not queue message requests that we do not respond to. If we receive a MESSAGE request that we cannot send a response to, we should not send the incoming MESSAGE to the dialplan. This commit should help the bouncing message_retrans test to pass consistently. ........ Merged revisions 434218 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@434220 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/res/res_pjsip_messaging.c b/res/res_pjsip_messaging.c index 6b0eb029e3..c125864084 100644 --- a/res/res_pjsip_messaging.c +++ b/res/res_pjsip_messaging.c @@ -673,9 +673,16 @@ static pj_bool_t module_on_rx_request(pjsip_rx_data *rdata) return PJ_TRUE; } - /* send it to the messaging core */ - ast_msg_queue(msg); - send_response(rdata, PJSIP_SC_ACCEPTED, NULL, NULL); + /* Send it to the messaging core. + * + * If we are unable to send a response, the most likely reason is that we + * are handling a retransmission of an incoming MESSAGE and were unable to + * create a transaction due to a duplicate key. If we are unable to send + * a response, we should not queue the message to the dialplan + */ + if (!send_response(rdata, PJSIP_SC_ACCEPTED, NULL, NULL)) { + ast_msg_queue(msg); + } return PJ_TRUE; }