From 8b16e992c86dc61afda4ea10ec95c696fef082f1 Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Thu, 2 Jun 2016 12:51:31 -0500 Subject: [PATCH] pjsip_distributor.c: Ignore messages until fully booted. We should not be processing any incoming messages until we are fully booted. We may not have dialplan or other needed configuration loaded yet. ASTERISK-26089 #close Reported by: Scott Griepentrog ASTERISK-26088 Reported by: Richard Mudgett Change-Id: I584aefb4f34b885a8927e1f13a2c64babd606264 --- CHANGES | 9 +++++++++ res/res_pjsip/pjsip_distributor.c | 11 ++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 7314549702..8258b25f1d 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,15 @@ === ============================================================================== +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.1.0-cert4 to Asterisk 13.1-cert8 -- +------------------------------------------------------------------------------ + +res_pjsip +------------------ + * When starting Asterisk, received traffic will now be ignored until Asterisk + has loaded all modules and is fully booted. + ------------------------------------------------------------------------------ --- Functionality changes from Asterisk 13.1.0-cert3 to Asterisk 13.1-cert4 -- ------------------------------------------------------------------------------ diff --git a/res/res_pjsip/pjsip_distributor.c b/res/res_pjsip/pjsip_distributor.c index 79c1916510..75cb609f68 100644 --- a/res/res_pjsip/pjsip_distributor.c +++ b/res/res_pjsip/pjsip_distributor.c @@ -253,11 +253,20 @@ static pjsip_module endpoint_mod = { static pj_bool_t distributor(pjsip_rx_data *rdata) { - pjsip_dialog *dlg = find_dialog(rdata); + pjsip_dialog *dlg; struct distributor_dialog_data *dist = NULL; struct ast_taskprocessor *serializer = NULL; pjsip_rx_data *clone; + if (!ast_test_flag(&ast_options, AST_OPT_FLAG_FULLY_BOOTED)) { + /* + * Ignore everything until we are fully booted. Let the + * peer retransmit messages until we are ready. + */ + return PJ_TRUE; + } + + dlg = find_dialog(rdata); if (dlg) { ast_debug(3, "Searching for serializer on dialog %s for %s\n", dlg->obj_name, rdata->msg_info.info); -- 2.47.2