Changeset 4318


Ignore:
Timestamp:
Jan 16, 2013 9:51:45 AM (11 years ago)
Author:
bennylp
Message:

Fixed #1607: Send UDP keep-alive to original request address if response comes from different address

File:
1 edited

Legend:

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

    r4294 r4318  
    18631863        acc->ka_transport = param->rdata->tp_info.transport; 
    18641864        pjsip_transport_add_ref(acc->ka_transport); 
    1865         pj_memcpy(&acc->ka_target, &param->rdata->pkt_info.src_addr, 
    1866                   param->rdata->pkt_info.src_addr_len); 
    1867         acc->ka_target_len = param->rdata->pkt_info.src_addr_len; 
     1865 
     1866        /* https://trac.pjsip.org/repos/ticket/1607: 
     1867         * Calculate the destination address from the original request. Some 
     1868         * (broken) servers send the response using different source address 
     1869         * than the one that receives the request, which is forbidden by RFC 
     1870         * 3581. 
     1871         */ 
     1872        { 
     1873            pjsip_transaction *tsx; 
     1874            pjsip_tx_data *req; 
     1875 
     1876            tsx = pjsip_rdata_get_tsx(param->rdata); 
     1877            PJ_ASSERT_ON_FAIL(tsx, return); 
     1878 
     1879            req = tsx->last_tx; 
     1880 
     1881            pj_memcpy(&acc->ka_target, &req->tp_info.dst_addr, 
     1882                      req->tp_info.dst_addr_len); 
     1883            acc->ka_target_len = req->tp_info.dst_addr_len; 
     1884        } 
    18681885 
    18691886        /* Setup and start the timer */ 
Note: See TracChangeset for help on using the changeset viewer.