Ignore:
Timestamp:
Jun 23, 2007 4:22:51 AM (17 years ago)
Author:
bennylp
Message:

Ticket #341: implemented pjsip_send_raw_data() function to send raw data to a destination

File:
1 edited

Legend:

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

    r1310 r1387  
    602602    return status; 
    603603} 
     604 
     605 
     606/* Send raw data */ 
     607PJ_DEF(pj_status_t) pjsip_transport_send_raw(pjsip_transport *tr, 
     608                                             const void *raw_data, 
     609                                             pj_size_t data_len, 
     610                                             const pj_sockaddr_t *addr, 
     611                                             int addr_len, 
     612                                             void *token, 
     613                                             pjsip_tp_send_callback cb) 
     614{ 
     615    pjsip_tx_data *tdata; 
     616    pj_status_t status; 
     617  
     618    status = pjsip_endpt_create_tdata(tr->endpt, &tdata); 
     619    if (status != PJ_SUCCESS) 
     620        return status; 
     621 
     622    /* Add reference counter. */ 
     623    pjsip_tx_data_add_ref(tdata); 
     624  
     625    /* Allocate buffer */ 
     626    tdata->buf.start = (char*) pj_pool_alloc(tdata->pool, data_len); 
     627    tdata->buf.end = tdata->buf.start + data_len; 
     628  
     629    /* Copy data */ 
     630    pj_memcpy(tdata->buf.start, raw_data, data_len); 
     631    tdata->buf.cur = tdata->buf.start + data_len; 
     632  
     633    /* Save callback data. */ 
     634    tdata->token = token; 
     635    tdata->cb = cb; 
     636 
     637    /* Mark as pending. */ 
     638    tdata->is_pending = 1; 
     639 
     640    /* Send to transoprt */ 
     641    status = tr->send_msg(tr, tdata, addr, addr_len, 
     642                          tdata, &transport_send_callback); 
     643  
     644    if (status != PJ_EPENDING) { 
     645        /* callback will not be called, so destroy tdata now. */ 
     646        pjsip_tx_data_dec_ref(tdata); 
     647    } 
     648 
     649    return status; 
     650} 
     651 
    604652 
    605653static void transport_idle_callback(pj_timer_heap_t *timer_heap, 
Note: See TracChangeset for help on using the changeset viewer.