diff options
Diffstat (limited to 'pjsip/src/pjsip/sip_dialog.c')
-rw-r--r-- | pjsip/src/pjsip/sip_dialog.c | 80 |
1 files changed, 49 insertions, 31 deletions
diff --git a/pjsip/src/pjsip/sip_dialog.c b/pjsip/src/pjsip/sip_dialog.c index bd6e99f1..5cb285b1 100644 --- a/pjsip/src/pjsip/sip_dialog.c +++ b/pjsip/src/pjsip/sip_dialog.c @@ -69,7 +69,7 @@ static pj_status_t create_dialog( pjsip_user_agent *ua, if (!pool) return PJ_ENOMEM; - dlg = pj_pool_zalloc(pool, sizeof(pjsip_dialog)); + dlg = PJ_POOL_ZALLOC_T(pool, pjsip_dialog); PJ_ASSERT_RETURN(dlg != NULL, PJ_ENOMEM); dlg->pool = pool; @@ -154,7 +154,8 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uac( pjsip_user_agent *ua, c = param->value.ptr[param->value.slen]; param->value.ptr[param->value.slen] = '\0'; - hdr = pjsip_parse_hdr(dlg->pool, ¶m->name, param->value.ptr, + hdr = (pjsip_hdr*) + pjsip_parse_hdr(dlg->pool, ¶m->name, param->value.ptr, param->value.slen, NULL); param->value.ptr[param->value.slen] = (char)c; @@ -222,7 +223,8 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uac( pjsip_user_agent *ua, if (PJSIP_URI_SCHEME_IS_SIP(dlg->remote.info->uri) || PJSIP_URI_SCHEME_IS_SIPS(dlg->remote.info->uri)) { - pjsip_sip_uri *sip_uri = pjsip_uri_get_uri(dlg->remote.info->uri); + pjsip_sip_uri *sip_uri = (pjsip_sip_uri *) + pjsip_uri_get_uri(dlg->remote.info->uri); if (!pj_list_empty(&sip_uri->header_param)) { pj_str_t tmp; @@ -230,7 +232,8 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uac( pjsip_user_agent *ua, pj_list_init(&sip_uri->header_param); /* Print URI */ - tmp.ptr = pj_pool_alloc(dlg->pool, dlg->remote.info_str.slen); + tmp.ptr = (char*) pj_pool_alloc(dlg->pool, + dlg->remote.info_str.slen); tmp.slen = pjsip_uri_print(PJSIP_URI_IN_FROMTO_HDR, sip_uri, tmp.ptr, dlg->remote.info_str.slen); @@ -330,10 +333,11 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uas( pjsip_user_agent *ua, /* Temprary string for getting the string representation of * both local and remote URI. */ - tmp.ptr = pj_pool_alloc(rdata->tp_info.pool, TMP_LEN); + tmp.ptr = (char*) pj_pool_alloc(rdata->tp_info.pool, TMP_LEN); /* Init local info from the To header. */ - dlg->local.info = pjsip_hdr_clone(dlg->pool, rdata->msg_info.to); + dlg->local.info = (pjsip_fromto_hdr*) + pjsip_hdr_clone(dlg->pool, rdata->msg_info.to); pjsip_fromto_hdr_set_from(dlg->local.info); /* Generate local tag. */ @@ -388,7 +392,8 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uas( pjsip_user_agent *ua, } /* Init remote info from the From header. */ - dlg->remote.info = pjsip_hdr_clone(dlg->pool, rdata->msg_info.from); + dlg->remote.info = (pjsip_fromto_hdr*) + pjsip_hdr_clone(dlg->pool, rdata->msg_info.from); pjsip_fromto_hdr_set_to(dlg->remote.info); /* Print the remote info. */ @@ -405,13 +410,15 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uas( pjsip_user_agent *ua, /* Init remote's contact from Contact header. */ - contact_hdr = pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT, + contact_hdr = (pjsip_hdr*) + pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT, NULL); if (!contact_hdr) { status = PJSIP_ERRNO_FROM_SIP_STATUS(PJSIP_SC_BAD_REQUEST); goto on_error; } - dlg->remote.contact = pjsip_hdr_clone(dlg->pool, contact_hdr); + dlg->remote.contact = (pjsip_contact_hdr*) + pjsip_hdr_clone(dlg->pool, contact_hdr); /* Init remote's CSeq from CSeq header */ dlg->remote.cseq = dlg->remote.first_cseq = rdata->msg_info.cseq->cseq; @@ -431,7 +438,8 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uas( pjsip_user_agent *ua, PJSIP_URI_SCHEME_IS_SIPS(rdata->msg_info.msg->line.req.uri); /* Call-ID */ - dlg->call_id = pjsip_hdr_clone(dlg->pool, rdata->msg_info.cid); + dlg->call_id = (pjsip_cid_hdr*) + pjsip_hdr_clone(dlg->pool, rdata->msg_info.cid); /* Route set. * RFC 3261 Section 12.1.1: @@ -446,7 +454,7 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uas( pjsip_user_agent *ua, pjsip_route_hdr *route; /* Clone the Record-Route, change the type to Route header. */ - route = pjsip_hdr_clone(dlg->pool, rr); + route = (pjsip_route_hdr*) pjsip_hdr_clone(dlg->pool, rr); pjsip_routing_hdr_set_route(route); /* Add to route set. */ @@ -456,7 +464,8 @@ PJ_DEF(pj_status_t) pjsip_dlg_create_uas( pjsip_user_agent *ua, rr = rr->next; if (rr == (void*)&rdata->msg_info.msg->hdr) break; - rr = pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_RECORD_ROUTE, rr); + rr = (pjsip_route_hdr*) pjsip_msg_find_hdr(rdata->msg_info.msg, + PJSIP_H_RECORD_ROUTE, rr); } /* Init client authentication session. */ @@ -569,10 +578,11 @@ PJ_DEF(pj_status_t) pjsip_dlg_fork( const pjsip_dialog *first_dlg, return status; /* Clone remote target. */ - dlg->target = pjsip_uri_clone(dlg->pool, first_dlg->target); + dlg->target = (pjsip_uri*) pjsip_uri_clone(dlg->pool, first_dlg->target); /* Clone local info. */ - dlg->local.info = pjsip_hdr_clone(dlg->pool, first_dlg->local.info); + dlg->local.info = (pjsip_fromto_hdr*) + pjsip_hdr_clone(dlg->pool, first_dlg->local.info); /* Clone local tag. */ pj_strdup(dlg->pool, &dlg->local.info->tag, &first_dlg->local.info->tag); @@ -583,10 +593,12 @@ PJ_DEF(pj_status_t) pjsip_dlg_fork( const pjsip_dialog *first_dlg, dlg->local.cseq = first_dlg->local.cseq; /* Clone local Contact. */ - dlg->local.contact = pjsip_hdr_clone(dlg->pool, first_dlg->local.contact); + dlg->local.contact = (pjsip_contact_hdr*) + pjsip_hdr_clone(dlg->pool, first_dlg->local.contact); /* Clone remote info. */ - dlg->remote.info = pjsip_hdr_clone(dlg->pool, first_dlg->remote.info); + dlg->remote.info = (pjsip_fromto_hdr*) + pjsip_hdr_clone(dlg->pool, first_dlg->remote.info); /* Set remote tag from the response. */ pj_strdup(dlg->pool, &dlg->remote.info->tag, &rdata->msg_info.to->tag); @@ -610,7 +622,8 @@ PJ_DEF(pj_status_t) pjsip_dlg_fork( const pjsip_dialog *first_dlg, dlg->secure = PJSIP_URI_SCHEME_IS_SIPS(dlg->target); /* Clone Call-ID header. */ - dlg->call_id = pjsip_hdr_clone(dlg->pool, first_dlg->call_id); + dlg->call_id = (pjsip_cid_hdr*) + pjsip_hdr_clone(dlg->pool, first_dlg->call_id); /* Duplicate Route-Set. */ pj_list_init(&dlg->route_set); @@ -618,7 +631,7 @@ PJ_DEF(pj_status_t) pjsip_dlg_fork( const pjsip_dialog *first_dlg, while (r != &first_dlg->route_set) { pjsip_route_hdr *h; - h = pjsip_hdr_clone(dlg->pool, r); + h = (pjsip_route_hdr*) pjsip_hdr_clone(dlg->pool, r); pj_list_push_back(&dlg->route_set, h); r = r->next; @@ -720,7 +733,7 @@ PJ_DEF(pj_status_t) pjsip_dlg_set_route_set( pjsip_dialog *dlg, while (r != route_set) { pjsip_route_hdr *new_r; - new_r = pjsip_hdr_clone(dlg->pool, r); + new_r = (pjsip_route_hdr*) pjsip_hdr_clone(dlg->pool, r); pj_list_push_back(&dlg->route_set, new_r); r = r->next; @@ -979,7 +992,7 @@ static pj_status_t dlg_create_request_throw( pjsip_dialog *dlg, end_list = &dlg->route_set; for (; route != end_list; route = route->next ) { pjsip_route_hdr *r; - r = pjsip_hdr_shallow_clone( tdata->pool, route ); + r = (pjsip_route_hdr*) pjsip_hdr_shallow_clone( tdata->pool, route ); pjsip_routing_hdr_set_route(r); pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)r); } @@ -1176,7 +1189,8 @@ static void dlg_beautify_response(pjsip_dialog *dlg, if (pjsip_msg_find_hdr(tdata->msg, PJSIP_H_CONTACT, NULL) == 0 && pjsip_msg_find_hdr_by_name(tdata->msg, &hcontact, NULL) == 0) { - hdr = pjsip_hdr_clone(tdata->pool, dlg->local.contact); + hdr = (pjsip_hdr*) pjsip_hdr_clone(tdata->pool, + dlg->local.contact); pjsip_msg_add_hdr(tdata->msg, hdr); } } @@ -1188,7 +1202,7 @@ static void dlg_beautify_response(pjsip_dialog *dlg, c_hdr = pjsip_endpt_get_capability(dlg->endpt, PJSIP_H_ALLOW, NULL); if (c_hdr) { - hdr = pjsip_hdr_clone(tdata->pool, c_hdr); + hdr = (pjsip_hdr*) pjsip_hdr_clone(tdata->pool, c_hdr); pjsip_msg_add_hdr(tdata->msg, hdr); } } @@ -1200,7 +1214,7 @@ static void dlg_beautify_response(pjsip_dialog *dlg, c_hdr = pjsip_endpt_get_capability(dlg->endpt, PJSIP_H_SUPPORTED, NULL); if (c_hdr) { - hdr = pjsip_hdr_clone(tdata->pool, c_hdr); + hdr = (pjsip_hdr*) pjsip_hdr_clone(tdata->pool, c_hdr); pjsip_msg_add_hdr(tdata->msg, hdr); } } @@ -1285,7 +1299,7 @@ PJ_DEF(pj_status_t) pjsip_dlg_modify_response( pjsip_dialog *dlg, /* Remove existing Contact header (without this, when dialog sent * 180 and then 302, the Contact in 302 will not get updated). */ - hdr = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_CONTACT, NULL); + hdr = (pjsip_hdr*) pjsip_msg_find_hdr(tdata->msg, PJSIP_H_CONTACT, NULL); if (hdr) pj_list_erase(hdr); @@ -1398,7 +1412,7 @@ PJ_DEF(pj_status_t) pjsip_dlg_respond( pjsip_dialog *dlg, hdr = hdr_list->next; while (hdr != hdr_list) { pjsip_msg_add_hdr(tdata->msg, - pjsip_hdr_clone(tdata->pool, hdr)); + (pjsip_hdr*)pjsip_hdr_clone(tdata->pool, hdr)); hdr = hdr->next; } } @@ -1526,7 +1540,7 @@ static void dlg_update_routeset(pjsip_dialog *dlg, const pjsip_msg *msg) for (hdr=msg->hdr.prev; hdr!=end_hdr; hdr=hdr->prev) { if (hdr->type == PJSIP_H_RECORD_ROUTE) { pjsip_route_hdr *r; - r = pjsip_hdr_clone(dlg->pool, hdr); + r = (pjsip_route_hdr*) pjsip_hdr_clone(dlg->pool, hdr); pjsip_routing_hdr_set_route(r); pj_list_push_back(&dlg->route_set, r); } @@ -1598,10 +1612,12 @@ void pjsip_dlg_on_rx_response( pjsip_dialog *dlg, pjsip_rx_data *rdata ) /* The remote target MUST be set to the URI from the Contact header * field of the response. */ - contact = pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT, + contact = (pjsip_contact_hdr*) + pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT, NULL); if (contact) { - dlg->remote.contact = pjsip_hdr_clone(dlg->pool, contact); + dlg->remote.contact = (pjsip_contact_hdr*) + pjsip_hdr_clone(dlg->pool, contact); dlg->target = dlg->remote.contact->uri; } @@ -1642,10 +1658,12 @@ void pjsip_dlg_on_rx_response( pjsip_dialog *dlg, pjsip_rx_data *rdata ) { pjsip_contact_hdr *contact; - contact = pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_CONTACT, - NULL); + contact = (pjsip_contact_hdr*) pjsip_msg_find_hdr(rdata->msg_info.msg, + PJSIP_H_CONTACT, + NULL); if (contact) { - dlg->remote.contact = pjsip_hdr_clone(dlg->pool, contact); + dlg->remote.contact = (pjsip_contact_hdr*) + pjsip_hdr_clone(dlg->pool, contact); dlg->target = dlg->remote.contact->uri; } |