Ignore:
Timestamp:
Feb 19, 2006 1:38:06 AM (18 years ago)
Author:
bennylp
Message:

Initial SIMPLE implementation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsip/sip_ua_layer.c

    r184 r197  
    522522    } 
    523523 
    524     /* Dialog MUST be found! */ 
     524    /* Dialog may not be found, e.g. in this case: 
     525     *  - UAC sends SUBSCRIBE, then UAS sends NOTIFY before answering 
     526     *    SUBSCRIBE request with 2xx. 
     527     * 
     528     * In this case, we can accept the request ONLY when the original  
     529     * dialog still has empty To tag. 
     530     */ 
    525531    if (dlg == (pjsip_dialog*)&dlg_set->dlg_list) { 
    526532 
    527         /* Not found. Mulfunction UAC? */ 
    528         pj_mutex_unlock(mod_ua.mutex); 
    529  
    530         PJ_LOG(5,(THIS_FILE,  
    531                   "Unable to find dialog for %s, answering with 481", 
    532                   pjsip_rx_data_get_info(rdata))); 
    533  
    534         pjsip_endpt_respond_stateless(mod_ua.endpt, rdata, 
    535                                       PJSIP_SC_CALL_TSX_DOES_NOT_EXIST,  
    536                                       NULL, NULL, NULL); 
    537         return PJ_TRUE; 
     533        pjsip_dialog *first_dlg = dlg_set->dlg_list.next; 
     534 
     535        if (first_dlg->remote.info->tag.slen != 0) { 
     536            /* Not found. Mulfunction UAC? */ 
     537            pj_mutex_unlock(mod_ua.mutex); 
     538 
     539            PJ_LOG(5,(THIS_FILE,  
     540                      "Unable to find dialog for %s, answering with 481", 
     541                      pjsip_rx_data_get_info(rdata))); 
     542 
     543            pjsip_endpt_respond_stateless(mod_ua.endpt, rdata, 
     544                                          PJSIP_SC_CALL_TSX_DOES_NOT_EXIST,  
     545                                          NULL, NULL, NULL); 
     546            return PJ_TRUE; 
     547        } 
     548 
     549        dlg = first_dlg; 
    538550    } 
    539551 
Note: See TracChangeset for help on using the changeset viewer.