Ignore:
Timestamp:
Nov 11, 2005 7:01:31 PM (19 years ago)
Author:
bennylp
Message:

First clean compile of pjsip

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/main/pjsip/src/pjsip/sip_misc.c

    • Property svn:keywords set to Id
    r3 r43  
    11/* $Id$ 
    2  * 
    32 */ 
    43#include <pjsip/sip_misc.h> 
     
    1413#include <pj/pool.h> 
    1514#include <pj/except.h> 
    16  
    17 #define LOG_THIS    "endpoint..." 
     15#include <pj/rand.h> 
     16#include <pj/assert.h> 
     17#include <pj/errno.h> 
     18 
     19#define THIS_FILE    "endpoint" 
    1820 
    1921static const char *event_str[] =  
     
    4547                                 struct pjsip_module *mod, pj_uint32_t id ) 
    4648{ 
    47     PJ_UNUSED_ARG(endpt) 
    48     PJ_UNUSED_ARG(mod) 
     49    PJ_UNUSED_ARG(endpt); 
     50    PJ_UNUSED_ARG(mod); 
    4951 
    5052    aux_mod_id = id; 
     
    5456static void aux_tsx_handler( struct pjsip_module *mod, pjsip_event *event ) 
    5557{ 
    56     pjsip_transaction *tsx = event->obj.tsx; 
     58    pjsip_transaction *tsx; 
    5759    struct aux_tsx_data *tsx_data; 
    5860 
    59     PJ_UNUSED_ARG(mod) 
    60  
    61     if (event->type != PJSIP_EVENT_TSX_STATE_CHANGED) 
     61    PJ_UNUSED_ARG(mod); 
     62 
     63    if (event->type != PJSIP_EVENT_TSX_STATE) 
    6264        return; 
     65 
     66    pj_assert(event->body.tsx_state.tsx != NULL); 
     67    tsx = event->body.tsx_state.tsx; 
    6368    if (tsx == NULL) 
    6469        return; 
     
    101106    pjsip_transaction *tsx; 
    102107    struct aux_tsx_data *tsx_data; 
    103  
    104     tsx = pjsip_endpt_create_tsx(endpt); 
     108    pj_status_t status; 
     109 
     110    status = pjsip_endpt_create_tsx(endpt, &tsx); 
    105111    if (!tsx) { 
    106112        pjsip_tx_data_dec_ref(tdata); 
     
    135141 * this function. 
    136142 */ 
    137 static void init_request_throw( pjsip_tx_data *tdata,  
     143static void init_request_throw( pjsip_endpoint *endpt, 
     144                                pjsip_tx_data *tdata,  
    138145                                pjsip_method *method, 
    139146                                pjsip_uri *param_target, 
     
    147154    pjsip_msg *msg; 
    148155    pjsip_msg_body *body; 
     156    const pjsip_hdr *endpt_hdr; 
    149157 
    150158    /* Create the message. */ 
     
    154162    pj_memcpy(&msg->line.req.method, method, sizeof(*method)); 
    155163    msg->line.req.uri = param_target; 
     164 
     165    /* Add additional request headers from endpoint. */ 
     166    endpt_hdr = pjsip_endpt_get_request_headers(endpt)->next; 
     167    while (endpt_hdr != pjsip_endpt_get_request_headers(endpt)) { 
     168        pjsip_hdr *hdr = pjsip_hdr_shallow_clone(tdata->pool, endpt_hdr); 
     169        pjsip_msg_add_hdr( tdata->msg, hdr ); 
     170        endpt_hdr = endpt_hdr->next; 
     171    } 
    156172 
    157173    /* Add From header. */ 
     
    190206 * Create arbitrary request. 
    191207 */ 
    192 PJ_DEF(pjsip_tx_data*) pjsip_endpt_create_request(  pjsip_endpoint *endpt,  
    193                                                     const pjsip_method *method, 
    194                                                     const pj_str_t *param_target, 
    195                                                     const pj_str_t *param_from, 
    196                                                     const pj_str_t *param_to,  
    197                                                     const pj_str_t *param_contact, 
    198                                                     const pj_str_t *param_call_id, 
    199                                                     int param_cseq,  
    200                                                     const pj_str_t *param_text) 
     208PJ_DEF(pj_status_t) pjsip_endpt_create_request(  pjsip_endpoint *endpt,  
     209                                                 const pjsip_method *method, 
     210                                                 const pj_str_t *param_target, 
     211                                                 const pj_str_t *param_from, 
     212                                                 const pj_str_t *param_to,  
     213                                                 const pj_str_t *param_contact, 
     214                                                 const pj_str_t *param_call_id, 
     215                                                 int param_cseq,  
     216                                                 const pj_str_t *param_text, 
     217                                                 pjsip_tx_data **p_tdata) 
    201218{ 
    202219    pjsip_uri *target; 
     
    208225    pjsip_cid_hdr *call_id; 
    209226    pj_str_t tmp; 
     227    pj_status_t status; 
    210228    PJ_USE_EXCEPTION; 
    211229 
    212     PJ_LOG(5,(LOG_THIS, "Entering pjsip_endpt_create_request()")); 
    213  
    214     tdata = pjsip_endpt_create_tdata(endpt); 
    215     if (!tdata) 
    216         return NULL; 
     230    PJ_LOG(5,(THIS_FILE, "Entering pjsip_endpt_create_request()")); 
     231 
     232    status = pjsip_endpt_create_tdata(endpt, &tdata); 
     233    if (status != PJ_SUCCESS) 
     234        return status; 
    217235 
    218236    /* Init reference counter to 1. */ 
     
    224242        target = pjsip_parse_uri( tdata->pool, tmp.ptr, tmp.slen, 0); 
    225243        if (target == NULL) { 
    226             PJ_LOG(4,(LOG_THIS, "Error creating request: invalid target %s",  
     244            PJ_LOG(4,(THIS_FILE, "Error creating request: invalid target %s",  
    227245                      tmp.ptr)); 
    228246            goto on_error; 
     
    235253                                     PJSIP_PARSE_URI_AS_NAMEADDR); 
    236254        if (from->uri == NULL) { 
    237             PJ_LOG(4,(LOG_THIS, "Error creating request: invalid 'From' URI '%s'", 
     255            PJ_LOG(4,(THIS_FILE, "Error creating request: invalid 'From' URI '%s'", 
    238256                                tmp.ptr)); 
    239257            goto on_error; 
     
    247265                                   PJSIP_PARSE_URI_AS_NAMEADDR); 
    248266        if (to->uri == NULL) { 
    249             PJ_LOG(4,(LOG_THIS, "Error creating request: invalid 'To' URI '%s'", 
     267            PJ_LOG(4,(THIS_FILE, "Error creating request: invalid 'To' URI '%s'", 
    250268                                tmp.ptr)); 
    251269            goto on_error; 
     
    259277                                            PJSIP_PARSE_URI_AS_NAMEADDR); 
    260278            if (contact->uri == NULL) { 
    261                 PJ_LOG(4,(LOG_THIS,  
     279                PJ_LOG(4,(THIS_FILE,  
    262280                          "Error creating request: invalid 'Contact' URI '%s'", 
    263281                          tmp.ptr)); 
     
    286304 
    287305        /* Create the request. */ 
    288         init_request_throw( tdata, &cseq->method, target, from, to, contact,  
    289                             call_id, cseq, param_text); 
     306        init_request_throw( endpt, tdata, &cseq->method, target, from, to,  
     307                            contact, call_id, cseq, param_text); 
    290308    } 
    291309    PJ_DEFAULT { 
    292         PJ_LOG(4,(LOG_THIS, "Caught exception %d when creating request",  
    293                             PJ_GET_EXCEPTION())); 
     310        status = PJ_ENOMEM; 
    294311        goto on_error; 
    295312    } 
    296313    PJ_END 
    297314 
    298     PJ_LOG(4,(LOG_THIS, "Request %s (%d %.*s) created.",  
     315    PJ_LOG(4,(THIS_FILE, "Request %s (%d %.*s) created.",  
    299316                        tdata->obj_name,  
    300317                        cseq->cseq,  
     
    302319                        cseq->method.name.ptr)); 
    303320 
    304     return tdata; 
     321    *p_tdata = tdata; 
     322    return PJ_SUCCESS; 
    305323 
    306324on_error: 
    307325    pjsip_tx_data_dec_ref(tdata); 
    308     return NULL; 
    309 } 
    310  
    311 PJ_DEF(pjsip_tx_data*) 
     326    return status; 
     327} 
     328 
     329PJ_DEF(pj_status_t) 
    312330pjsip_endpt_create_request_from_hdr( pjsip_endpoint *endpt, 
    313331                                     const pjsip_method *method, 
     
    318336                                     const pjsip_cid_hdr *param_call_id, 
    319337                                     int param_cseq, 
    320                                      const pj_str_t *param_text ) 
     338                                     const pj_str_t *param_text, 
     339                                     pjsip_tx_data **p_tdata) 
    321340{ 
    322341    pjsip_uri *target; 
     
    327346    pjsip_cid_hdr *call_id; 
    328347    pjsip_cseq_hdr *cseq = NULL; /* The NULL because warning in VC6 */ 
     348    pj_status_t status; 
    329349    PJ_USE_EXCEPTION; 
    330350 
    331     PJ_LOG(5,(LOG_THIS, "Entering pjsip_endpt_create_request_from_hdr()")); 
    332  
    333     tdata = pjsip_endpt_create_tdata(endpt); 
    334     if (!tdata) 
    335         return NULL; 
     351    PJ_LOG(5,(THIS_FILE, "Entering pjsip_endpt_create_request_from_hdr()")); 
     352 
     353    status = pjsip_endpt_create_tdata(endpt, &tdata); 
     354    if (status != PJ_SUCCESS) 
     355        return status; 
    336356 
    337357    pjsip_tx_data_add_ref(tdata); 
     
    355375        pjsip_method_copy(tdata->pool, &cseq->method, method); 
    356376 
    357         init_request_throw(tdata, &cseq->method, target, from, to, contact,  
    358                           call_id, cseq, param_text); 
     377        init_request_throw(endpt, tdata, &cseq->method, target, from, to,  
     378                           contact, call_id, cseq, param_text); 
    359379    } 
    360380    PJ_DEFAULT { 
    361         PJ_LOG(4,(LOG_THIS, "Caught exception %d when creating request",  
    362                             PJ_GET_EXCEPTION())); 
     381        status = PJ_ENOMEM; 
    363382        goto on_error; 
    364383    } 
    365384    PJ_END; 
    366385 
    367     PJ_LOG(4,(LOG_THIS, "Request %s (%d %.*s) created.",  
     386    PJ_LOG(4,(THIS_FILE, "Request %s (%d %.*s) created.",  
    368387                        tdata->obj_name,  
    369388                        cseq->cseq,  
    370389                        cseq->method.name.slen, 
    371390                        cseq->method.name.ptr)); 
    372     return tdata; 
     391 
     392    *p_tdata = tdata; 
     393    return PJ_SUCCESS; 
    373394 
    374395on_error: 
    375396    pjsip_tx_data_dec_ref(tdata); 
    376     return NULL; 
     397    return status; 
    377398} 
    378399 
     
    380401 * Construct a minimal response message for the received request. 
    381402 */ 
    382 PJ_DEF(pjsip_tx_data*) pjsip_endpt_create_response( pjsip_endpoint *endpt, 
    383                                                     const pjsip_rx_data *rdata, 
    384                                                     int code) 
     403PJ_DEF(pj_status_t) pjsip_endpt_create_response( pjsip_endpoint *endpt, 
     404                                                 const pjsip_rx_data *rdata, 
     405                                                 int code, 
     406                                                 pjsip_tx_data **p_tdata) 
    385407{ 
    386408    pjsip_tx_data *tdata; 
     
    389411    pjsip_via_hdr *via; 
    390412    pjsip_rr_hdr *rr; 
     413    pj_status_t status; 
    391414 
    392415    /* rdata must be a request message. */ 
     
    395418 
    396419    /* Log this action. */ 
    397     PJ_LOG(5,(LOG_THIS, "pjsip_endpt_create_response(rdata=%p, code=%d)",  
     420    PJ_LOG(5,(THIS_FILE, "pjsip_endpt_create_response(rdata=%p, code=%d)",  
    398421                         rdata, code)); 
    399422 
    400423    /* Create a new transmit buffer. */ 
    401     tdata = pjsip_endpt_create_tdata( endpt ); 
    402     if (!tdata) 
    403         return NULL; 
     424    status = pjsip_endpt_create_tdata( endpt, &tdata); 
     425    if (status != PJ_SUCCESS) 
     426        return status; 
    404427 
    405428    /* Create new response message. */ 
     
    452475 
    453476    /* All done. */ 
    454     return tdata; 
     477    *p_tdata = tdata; 
     478    return PJ_SUCCESS; 
    455479} 
    456480 
     
    479503 
    480504    /* Log this action. */ 
    481     PJ_LOG(5,(LOG_THIS, "pjsip_endpt_create_ack(rdata=%p)", rdata)); 
     505    PJ_LOG(5,(THIS_FILE, "pjsip_endpt_create_ack(rdata=%p)", rdata)); 
    482506 
    483507    /* Create new request message. */ 
     
    503527    to = (pjsip_to_hdr*)pjsip_msg_find_remove_hdr( invite_msg,  
    504528                                                   PJSIP_H_TO, NULL); 
    505     pj_strdup(tdata->pool, &to->tag, &rdata->to_tag); 
     529    pj_strdup(tdata->pool, &to->tag, &rdata->to->tag); 
    506530    pjsip_msg_add_hdr( ack_msg, (pjsip_hdr*)to ); 
    507531 
     
    543567 * chapter 9.1 of RFC3261. 
    544568 */ 
    545 PJ_DEF(pjsip_tx_data*) pjsip_endpt_create_cancel( pjsip_endpoint *endpt, 
    546                                                   pjsip_tx_data *req_tdata ) 
     569PJ_DEF(pj_status_t) pjsip_endpt_create_cancel( pjsip_endpoint *endpt, 
     570                                               pjsip_tx_data *req_tdata, 
     571                                               pjsip_tx_data **p_tdata) 
    547572{ 
    548573    pjsip_msg *req_msg; /* the original request. */ 
     
    552577    pjsip_cseq_hdr *req_cseq, *cseq; 
    553578    pjsip_uri *req_uri; 
     579    pj_status_t status; 
    554580 
    555581    /* Log this action. */ 
    556     PJ_LOG(5,(LOG_THIS, "pjsip_endpt_create_cancel(tdata=%p)", req_tdata)); 
     582    PJ_LOG(5,(THIS_FILE, "pjsip_endpt_create_cancel(tdata=%p)", req_tdata)); 
    557583 
    558584    /* Get the original request. */ 
     
    560586 
    561587    /* The transmit buffer must INVITE request. */ 
    562     pj_assert(req_msg->type == PJSIP_REQUEST_MSG && 
    563               req_msg->line.req.method.id == PJSIP_INVITE_METHOD ); 
     588    PJ_ASSERT_RETURN(req_msg->type == PJSIP_REQUEST_MSG && 
     589                     req_msg->line.req.method.id == PJSIP_INVITE_METHOD, 
     590                     PJ_EINVAL); 
    564591 
    565592    /* Create new transmit buffer. */ 
    566     cancel_tdata = pjsip_endpt_create_tdata( endpt ); 
    567     if (!cancel_tdata) { 
    568         return NULL; 
     593    status = pjsip_endpt_create_tdata( endpt, &cancel_tdata); 
     594    if (status != PJ_SUCCESS) { 
     595        return status; 
    569596    } 
    570597 
     
    624651     * Return the transmit buffer containing the CANCEL request. 
    625652     */ 
    626     return cancel_tdata; 
     653    *p_tdata = cancel_tdata; 
     654    return PJ_SUCCESS; 
    627655} 
    628656 
     
    651679        remote_addr = pjsip_transport_get_remote_addr(req_transport); 
    652680        pj_strdup2(pool, &send_addr->host,  
    653                    pj_sockaddr_get_str_addr(remote_addr)); 
    654         send_addr->port = pj_sockaddr_get_port(remote_addr); 
     681                   pj_inet_ntoa(remote_addr->sin_addr)); 
     682        send_addr->port = pj_sockaddr_in_get_port(remote_addr); 
    655683 
    656684    } else { 
Note: See TracChangeset for help on using the changeset viewer.