Ignore:
Timestamp:
Nov 18, 2005 10:43:42 PM (17 years ago)
Author:
bennylp
Message:

The BIG transport modifications

File:
1 edited

Legend:

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

    r51 r54  
    193193 
    194194    PJ_ASSERT_RETURN(pool && str && method && rdata, PJ_EINVAL); 
    195     PJ_ASSERT_RETURN(rdata->msg, PJ_EINVAL); 
    196     PJ_ASSERT_RETURN(rdata->via, PJSIP_EMISSINGHDR); 
    197     PJ_ASSERT_RETURN(rdata->cseq, PJSIP_EMISSINGHDR); 
    198     PJ_ASSERT_RETURN(rdata->from, PJSIP_EMISSINGHDR); 
    199  
    200     host = &rdata->via->sent_by.host; 
    201     req_uri = (pjsip_uri*)rdata->msg->line.req.uri; 
     195    PJ_ASSERT_RETURN(rdata->msg_info.msg, PJ_EINVAL); 
     196    PJ_ASSERT_RETURN(rdata->msg_info.via, PJSIP_EMISSINGHDR); 
     197    PJ_ASSERT_RETURN(rdata->msg_info.cseq, PJSIP_EMISSINGHDR); 
     198    PJ_ASSERT_RETURN(rdata->msg_info.from, PJSIP_EMISSINGHDR); 
     199 
     200    host = &rdata->msg_info.via->sent_by.host; 
     201    req_uri = (pjsip_uri*)rdata->msg_info.msg->line.req.uri; 
    202202 
    203203    /* Calculate length required. */ 
    204204    len_required = 9 +                      /* CSeq number */ 
    205                    rdata->from->tag.slen +   /* From tag. */ 
    206                    rdata->call_id.slen +    /* Call-ID */ 
     205                   rdata->msg_info.from->tag.slen +   /* From tag. */ 
     206                   rdata->msg_info.call_id.slen +    /* Call-ID */ 
    207207                   host->slen +             /* Via host. */ 
    208208                   9 +                      /* Via port. */ 
     
    232232 
    233233    /* Add CSeq (only the number). */ 
    234     len = pj_utoa(rdata->cseq->cseq, p); 
     234    len = pj_utoa(rdata->msg_info.cseq->cseq, p); 
    235235    p += len; 
    236236    *p++ = SEPARATOR; 
    237237 
    238238    /* Add From tag. */ 
    239     len = rdata->from->tag.slen; 
    240     pj_memcpy( p, rdata->from->tag.ptr, len); 
     239    len = rdata->msg_info.from->tag.slen; 
     240    pj_memcpy( p, rdata->msg_info.from->tag.ptr, len); 
    241241    p += len; 
    242242    *p++ = SEPARATOR; 
    243243 
    244244    /* Add Call-ID. */ 
    245     len = rdata->call_id.slen; 
    246     pj_memcpy( p, rdata->call_id.ptr, len ); 
     245    len = rdata->msg_info.call_id.slen; 
     246    pj_memcpy( p, rdata->msg_info.call_id.ptr, len ); 
    247247    p += len; 
    248248    *p++ = SEPARATOR; 
     
    258258    *p++ = ':'; 
    259259 
    260     len = pj_utoa(rdata->via->sent_by.port, p); 
     260    len = pj_utoa(rdata->msg_info.via->sent_by.port, p); 
    261261    p += len; 
    262262    *p++ = SEPARATOR; 
     
    325325     * handled as RFC2543. 
    326326     */ 
    327     const pj_str_t *branch = &rdata->via->branch_param; 
     327    const pj_str_t *branch = &rdata->msg_info.via->branch_param; 
    328328 
    329329    if (pj_strncmp(branch,&rfc3261_branch,PJSIP_RFC3261_BRANCH_LEN)==0) { 
     
    643643 * has completed, with or without error. 
    644644 */ 
    645 static void tsx_transport_callback(pjsip_transport_t *tr,  
     645static void tsx_transport_callback(pjsip_transport *tr,  
    646646                                   void *token,  
    647647                                   pj_status_t status) 
     
    657657    if (status == PJ_SUCCESS) { 
    658658        PJ_LOG(4, (tsx->obj_name, "%s connected to %s:%d", 
    659                                   pjsip_transport_get_type_name(tr), 
     659                                  tr->type_name, 
    660660                                  addr, tsx->dest_name.port)); 
    661661    } else { 
    662662        PJ_LOG(4, (tsx->obj_name, "%s unable to connect to %s:%d, status=%d",  
    663                                   pjsip_transport_get_type_name(tr), 
     663                                  tr->type_name, 
    664664                                  addr, tsx->dest_name.port, status)); 
    665665    } 
     
    878878                                        pjsip_rx_data *rdata) 
    879879{ 
    880     pjsip_msg *msg = rdata->msg; 
     880    pjsip_msg *msg = rdata->msg_info.msg; 
    881881    pj_str_t *branch; 
    882882    pjsip_cseq_hdr *cseq; 
     
    890890 
    891891    /* Keep shortcut to message */ 
    892     msg = rdata->msg; 
     892    msg = rdata->msg_info.msg; 
    893893 
    894894    /* Role is UAS */ 
     
    909909 
    910910    /* Duplicate branch parameter for transaction. */ 
    911     branch = &rdata->via->branch_param; 
     911    branch = &rdata->msg_info.via->branch_param; 
    912912    pj_strdup(tsx->pool, &tsx->branch, branch); 
    913913 
     
    916916 
    917917    /* Save CSeq */ 
    918     cseq = rdata->cseq; 
     918    cseq = rdata->msg_info.cseq; 
    919919    tsx->cseq = cseq->cseq; 
    920920 
     
    932932     * then return the response using the same transport. 
    933933     */ 
    934     if (PJSIP_TRANSPORT_IS_RELIABLE(rdata->transport) ||  
    935         rdata->via->rport_param >= 0)  
     934    if (PJSIP_TRANSPORT_IS_RELIABLE(rdata->tp_info.transport) ||  
     935        rdata->msg_info.via->rport_param >= 0)  
    936936    { 
    937         tsx->transport = rdata->transport; 
     937        tsx->transport = rdata->tp_info.transport; 
    938938        pjsip_transport_add_ref(tsx->transport); 
    939939        tsx->transport_state = PJSIP_TSX_TRANSPORT_STATE_FINAL; 
     
    944944                pjsip_transport_get_type(tsx->transport); 
    945945        pj_memcpy(&tsx->remote_addr.entry[0].addr,  
    946                   &rdata->addr, rdata->addr_len); 
     946                  &rdata->pkt_info.addr, rdata->pkt_info.addr_len); 
    947947         
    948948    } else { 
    949949        pj_status_t status; 
    950950 
    951         status = pjsip_get_response_addr(tsx->pool, rdata->transport, 
    952                                          rdata->via, &tsx->dest_name); 
     951        status = pjsip_get_response_addr(tsx->pool, rdata->tp_info.transport, 
     952                                         rdata->msg_info.via, &tsx->dest_name); 
    953953        if (status != PJ_SUCCESS) { 
    954954            tsx->transport_state = PJSIP_TSX_TRANSPORT_STATE_FINAL; 
     
    12131213            /* Don't update Via sent-by on retransmission. */ 
    12141214            if (via->sent_by.host.slen == 0) { 
    1215                 addr_name = pjsip_transport_get_addr_name(tsx->transport); 
     1215                addr_name = &tsx->transport->public_addr; 
    12161216                pj_strdup2(tdata->pool, &via->transport,  
    1217                         pjsip_transport_get_type_name(tsx->transport)); 
     1217                           tsx->transport->type_name); 
    12181218                pj_strdup2(tdata->pool, &via->sent_by.host,  
    12191219                           pj_inet_ntoa(addr_name->sin_addr)); 
     
    13971397         */ 
    13981398        /* Keep last_tx for authorization. */ 
    1399         code = event->body.rx_msg.rdata->msg->line.status.code; 
     1399        code = event->body.rx_msg.rdata->msg_info.msg->line.status.code; 
    14001400        if (tsx->method.id != PJSIP_INVITE_METHOD && code!=401 && code!=407) { 
    14011401            pjsip_tx_data_dec_ref(tsx->last_tx); 
     
    16661666        } 
    16671667 
    1668         tsx->status_code = event->body.rx_msg.rdata->msg->line.status.code; 
     1668        tsx->status_code = event->body.rx_msg.rdata->msg_info.msg->line.status.code; 
    16691669    } else { 
    16701670        tsx->status_code = PJSIP_SC_TSX_TIMEOUT; 
     
    17631763 
    17641764    if (event->type == PJSIP_EVENT_RX_MSG) { 
    1765         pjsip_msg *msg = event->body.rx_msg.rdata->msg; 
     1765        pjsip_msg *msg = event->body.rx_msg.rdata->msg_info.msg; 
    17661766        pjsip_cseq_hdr *cseq = pjsip_msg_find_hdr( msg, PJSIP_H_CSEQ, NULL ); 
    17671767 
     
    18561856             * TU doesn't need to be informed. 
    18571857             */ 
    1858             pjsip_msg *msg = event->body.rx_msg.rdata->msg; 
     1858            pjsip_msg *msg = event->body.rx_msg.rdata->msg_info.msg; 
    18591859            pj_assert(msg->type == PJSIP_RESPONSE_MSG); 
    18601860            if (msg->type==PJSIP_RESPONSE_MSG && 
     
    19221922 
    19231923        pjsip_method_e method_id =  
    1924             event->body.rx_msg.rdata->msg->line.req.method.id; 
     1924            event->body.rx_msg.rdata->msg_info.msg->line.req.method.id; 
    19251925 
    19261926        /* Must be a request message. */ 
    1927         pj_assert(event->body.rx_msg.rdata->msg->type == PJSIP_REQUEST_MSG); 
     1927        pj_assert(event->body.rx_msg.rdata->msg_info.msg->type == PJSIP_REQUEST_MSG); 
    19281928 
    19291929        /* Must be an ACK request or a late INVITE retransmission. */ 
Note: See TracChangeset for help on using the changeset viewer.