Ignore:
Timestamp:
Dec 26, 2005 12:52:19 PM (18 years ago)
Author:
bennylp
Message:

Modify transport to use generic sockaddr address

File:
1 edited

Legend:

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

    r65 r105  
    499499static pj_status_t tsx_process_route( pjsip_transaction *tsx, 
    500500                                      pjsip_tx_data *tdata, 
    501                                       pjsip_host_port *send_addr ) 
     501                                      pjsip_host_info *send_addr ) 
    502502{ 
    503503    const pjsip_uri *new_request_uri, *target_uri; 
     
    596596        const pjsip_url *url = (const pjsip_url*)pjsip_uri_get_uri(uri); 
    597597        send_addr->flag |= (PJSIP_TRANSPORT_SECURE | PJSIP_TRANSPORT_RELIABLE); 
    598         pj_strdup(tdata->pool, &send_addr->host, &url->host); 
    599         send_addr->port = url->port; 
     598        pj_strdup(tdata->pool, &send_addr->addr.host, &url->host); 
     599        send_addr->addr.port = url->port; 
    600600        send_addr->type =  
    601601            pjsip_transport_get_type_from_name(&url->transport_param); 
     
    604604        pjsip_uri *uri = (pjsip_uri*) target_uri; 
    605605        const pjsip_url *url = (const pjsip_url*)pjsip_uri_get_uri(uri); 
    606         pj_strdup(tdata->pool, &send_addr->host, &url->host); 
    607         send_addr->port = url->port; 
     606        pj_strdup(tdata->pool, &send_addr->addr.host, &url->host); 
     607        send_addr->addr.port = url->port; 
    608608        send_addr->type =  
    609609            pjsip_transport_get_type_from_name(&url->transport_param); 
     
    651651    struct tsx_lock_data lck; 
    652652 
    653     pj_memcpy(addr, tsx->dest_name.host.ptr, tsx->dest_name.host.slen); 
    654     addr[tsx->dest_name.host.slen] = '\0'; 
     653    pj_memcpy(addr, tsx->dest_name.addr.host.ptr, tsx->dest_name.addr.host.slen); 
     654    addr[tsx->dest_name.addr.host.slen] = '\0'; 
    655655 
    656656 
     
    658658        PJ_LOG(4, (tsx->obj_name, "%s connected to %s:%d", 
    659659                                  tr->type_name, 
    660                                   addr, tsx->dest_name.port)); 
     660                                  addr, tsx->dest_name.addr.port)); 
    661661    } else { 
    662662        PJ_LOG(4, (tsx->obj_name, "%s unable to connect to %s:%d, status=%d",  
    663663                                  tr->type_name, 
    664                                   addr, tsx->dest_name.port, status)); 
     664                                  addr, tsx->dest_name.addr.port, status)); 
    665665    } 
    666666 
     
    738738 
    739739    /* Create/find the transport for the remote address. */ 
    740     PJ_LOG(5,(tsx->obj_name, "tsx getting transport for %s:%d", 
    741                              pj_inet_ntoa(addr->entry[0].addr.sin_addr), 
    742                              pj_ntohs(addr->entry[0].addr.sin_port))); 
    743  
    744740    tsx->transport_state = PJSIP_TSX_TRANSPORT_STATE_CONNECTING; 
    745741    status = pjsip_endpt_alloc_transport( tsx->endpt, addr->entry[0].type, 
    746742                                          &addr->entry[0].addr, 
     743                                          addr->entry[0].addr_len, 
    747744                                          &tp); 
    748745    tsx_transport_callback(tp, tsx, status); 
     
    852849     */ 
    853850    PJ_LOG(5,(tsx->obj_name, "tsx resolving destination %.*s:%d", 
    854                              tsx->dest_name.host.slen,  
    855                              tsx->dest_name.host.ptr, 
    856                              tsx->dest_name.port)); 
     851                             tsx->dest_name.addr.host.slen,  
     852                             tsx->dest_name.addr.host.ptr, 
     853                             tsx->dest_name.addr.port)); 
    857854 
    858855    tsx->transport_state = PJSIP_TSX_TRANSPORT_STATE_RESOLVING; 
     
    942939        tsx->current_addr = 0; 
    943940        tsx->remote_addr.count = 1; 
    944         tsx->remote_addr.entry[0].type = tsx->transport->type; 
     941        tsx->remote_addr.entry[0].type = tsx->transport->key.type; 
    945942        pj_memcpy(&tsx->remote_addr.entry[0].addr,  
    946                   &rdata->pkt_info.addr, rdata->pkt_info.addr_len); 
     943                  &rdata->pkt_info.src_addr, rdata->pkt_info.src_addr_len); 
    947944         
    948945    } else { 
     
    965962         */ 
    966963        PJ_LOG(5,(tsx->obj_name, "tsx resolving destination %.*s:%d", 
    967                                  tsx->dest_name.host.slen,  
    968                                  tsx->dest_name.host.ptr, 
    969                                  tsx->dest_name.port)); 
     964                                 tsx->dest_name.addr.host.slen,  
     965                                 tsx->dest_name.addr.host.ptr, 
     966                                 tsx->dest_name.addr.port)); 
    970967 
    971968        tsx->transport_state = PJSIP_TSX_TRANSPORT_STATE_RESOLVING; 
     
    10241021{ 
    10251022    pjsip_msg *msg; 
    1026     pjsip_host_port dest_addr; 
     1023    pjsip_host_info dest_addr; 
    10271024    pjsip_via_hdr *via; 
    10281025    struct tsx_lock_data lck; 
     
    10601057    if (dest_addr.type == tsx->dest_name.type && 
    10611058        dest_addr.flag == tsx->dest_name.flag && 
    1062         dest_addr.port == tsx->dest_name.port && 
    1063         pj_stricmp(&dest_addr.host, &tsx->dest_name.host) == 0) 
     1059        dest_addr.addr.port == tsx->dest_name.addr.port && 
     1060        pj_stricmp(&dest_addr.addr.host, &tsx->dest_name.addr.host) == 0) 
    10641061    { 
    10651062        /* Equal destination. We can use current transport. */ 
     
    10721069    /* New destination; we'll have to resolve host and create new transport. */ 
    10731070    pj_memcpy(&tsx->dest_name, &dest_addr, sizeof(dest_addr)); 
    1074     pj_strdup(tsx->pool, &tsx->dest_name.host, &dest_addr.host); 
     1071    pj_strdup(tsx->pool, &tsx->dest_name.addr.host, &dest_addr.addr.host); 
    10751072 
    10761073    PJ_LOG(5,(tsx->obj_name, "tsx resolving destination %.*s:%d", 
    1077                              tsx->dest_name.host.slen,  
    1078                              tsx->dest_name.host.ptr, 
    1079                              tsx->dest_name.port)); 
     1074                             tsx->dest_name.addr.host.slen,  
     1075                             tsx->dest_name.addr.host.ptr, 
     1076                             tsx->dest_name.addr.port)); 
    10801077 
    10811078    tsx->transport_state = PJSIP_TSX_TRANSPORT_STATE_RESOLVING; 
     
    12161213         */ 
    12171214        if (tdata->msg->type == PJSIP_REQUEST_MSG) { 
    1218             const pj_sockaddr_in *addr_name; 
    12191215            pjsip_via_hdr *via = (pjsip_via_hdr*)  
    12201216                pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL); 
     
    12261222            /* Don't update Via sent-by on retransmission. */ 
    12271223            if (via->sent_by.host.slen == 0) { 
    1228                 addr_name = &tsx->transport->public_addr; 
    12291224                pj_strdup2(tdata->pool, &via->transport,  
    12301225                           tsx->transport->type_name); 
    1231                 pj_strdup2(tdata->pool, &via->sent_by.host,  
    1232                            pj_inet_ntoa(addr_name->sin_addr)); 
    1233                 via->sent_by.port = pj_ntohs(addr_name->sin_port); 
     1226                pj_strdup(tdata->pool, &via->sent_by.host,  
     1227                          &tsx->transport->local_name.host); 
     1228                via->sent_by.port = tsx->transport->local_name.port; 
    12341229            } 
    12351230        } 
     
    12431238        status = pjsip_transport_send(tsx->transport, tdata, 
    12441239                        &tsx->remote_addr.entry[tsx->current_addr].addr, 
     1240                        tsx->remote_addr.entry[tsx->current_addr].addr_len, 
    12451241                        tsx, &tsx_on_send_complete); 
    12461242        if (status != PJ_SUCCESS && status != PJ_EPENDING) { 
Note: See TracChangeset for help on using the changeset viewer.