Changeset 5805


Ignore:
Timestamp:
Jun 13, 2018 4:58:49 PM (6 years ago)
Author:
riza
Message:

Re #2119 (closed): Don't raise assert when receiving an incoming call with no
pjsua account available.

Location:
pjproject/trunk/pjsip/src/pjsua-lib
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_acc.c

    r5788 r5805  
    30013001    unsigned i; 
    30023002 
    3003     /* Check that there's at least one account configured */ 
    3004     PJ_ASSERT_RETURN(pjsua_var.acc_cnt!=0, pjsua_var.default_acc); 
     3003    if (pjsua_var.acc_cnt == 0) { 
     3004        PJ_LOG(2, (THIS_FILE, "No available account to handle %s", 
     3005                  pjsip_rx_data_get_info(rdata))); 
     3006 
     3007        return PJSUA_INVALID_ID; 
     3008    } 
    30053009 
    30063010    uri = rdata->msg_info.to->uri; 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c

    r5795 r5805  
    13201320     */ 
    13211321    acc_id = call->acc_id = pjsua_acc_find_for_incoming(rdata); 
     1322    if (acc_id == PJSUA_INVALID_ID) { 
     1323        pjsip_endpt_respond_stateless(pjsua_var.endpt, rdata, 
     1324                                      PJSIP_SC_TEMPORARILY_UNAVAILABLE, NULL, 
     1325                                      NULL, NULL); 
     1326 
     1327        PJ_LOG(2,(THIS_FILE, 
     1328                  "Unable to accept incoming call (no available account)")); 
     1329 
     1330        goto on_return; 
     1331    } 
    13221332    call->call_hold_type = pjsua_var.acc[acc_id].cfg.call_hold_type; 
    13231333 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_im.c

    r5373 r5805  
    210210            } 
    211211 
    212  
    213             (*pjsua_var.ua_cfg.cb.on_typing2)(call_id, from, to, &contact, 
    214                                               is_typing, rdata, acc_id); 
     212            if (acc_id != PJSUA_INVALID_ID) { 
     213                (*pjsua_var.ua_cfg.cb.on_typing2)(call_id, from, to, &contact, 
     214                                                  is_typing, rdata, acc_id); 
     215            } 
    215216        } 
    216217 
     
    259260            } 
    260261 
    261             (*pjsua_var.ua_cfg.cb.on_pager2)(call_id, from, to, &contact,  
    262                                              &mime_type, &text_body, rdata, 
    263                                              acc_id); 
     262            if (acc_id != PJSUA_INVALID_ID) { 
     263                (*pjsua_var.ua_cfg.cb.on_pager2)(call_id, from, to, &contact, 
     264                                                 &mime_type, &text_body, rdata, 
     265                                                 acc_id); 
     266            } 
    264267        } 
    265268    } 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_pres.c

    r5701 r5805  
    831831    /* Find which account for the incoming request. */ 
    832832    acc_id = pjsua_acc_find_for_incoming(rdata); 
     833    if (acc_id == PJSUA_INVALID_ID) { 
     834        PJ_LOG(2, (THIS_FILE,  
     835                   "Unable to process incoming message %s " 
     836                   "due to no available account",  
     837                   pjsip_rx_data_get_info(rdata))); 
     838 
     839        PJSUA_UNLOCK(); 
     840        pjsip_endpt_respond_stateless(pjsua_var.endpt, rdata,  
     841                                      PJSIP_SC_TEMPORARILY_UNAVAILABLE, NULL, 
     842                                      NULL, NULL); 
     843        pj_log_pop_indent(); 
     844        return PJ_TRUE;  
     845    } 
    833846    acc = &pjsua_var.acc[acc_id]; 
    834847 
Note: See TracChangeset for help on using the changeset viewer.