Ignore:
Timestamp:
Aug 5, 2008 8:14:39 PM (16 years ago)
Author:
bennylp
Message:

Ticket #585: Handle non-SIP URI in Contact header of incoming INVITE and SUBSCRIBE requests

File:
1 edited

Legend:

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

    r2162 r2194  
    16751675                pjsip_uri_get_uri(rdata->msg_info.record_route->name_addr.uri); 
    16761676    } else { 
     1677        pjsip_hdr *pos = NULL; 
    16771678        pjsip_contact_hdr *h_contact; 
    16781679        pjsip_uri *uri = NULL; 
    16791680 
    1680         /* Otherwise URI is Contact URI */ 
    1681         h_contact = (pjsip_contact_hdr*) 
    1682                     pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT, 
    1683                                        NULL); 
    1684         if (h_contact) 
    1685             uri = (pjsip_uri*) pjsip_uri_get_uri(h_contact->uri); 
     1681        /* Otherwise URI is Contact URI. 
     1682         * Iterate the Contact URI until we find sip: or sips: scheme. 
     1683         */ 
     1684        do { 
     1685            h_contact = (pjsip_contact_hdr*) 
     1686                        pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT, 
     1687                                           pos); 
     1688            if (h_contact) { 
     1689                uri = (pjsip_uri*) pjsip_uri_get_uri(h_contact->uri); 
     1690                if (!PJSIP_URI_SCHEME_IS_SIP(uri) &&  
     1691                    !PJSIP_URI_SCHEME_IS_SIPS(uri)) 
     1692                { 
     1693                    pos = (pjsip_hdr*)h_contact->next; 
     1694                    if (pos == &rdata->msg_info.msg->hdr) 
     1695                        h_contact = NULL; 
     1696                } else { 
     1697                    break; 
     1698                } 
     1699            } 
     1700        } while (h_contact); 
    16861701         
    16871702 
Note: See TracChangeset for help on using the changeset viewer.