From 490bd78f06ea0c101244760b2a5bbb1dae1b3041 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Tue, 18 Jul 2006 14:39:40 +0000 Subject: Small improvements: (1) pjsua now responds to incoming OPTIONS request, which means that some modules (evsub, invite) need to register their capabilities to the endpoint, (2) added command in pjsua to send arbitrary request git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@612 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsip-ua/sip_inv.c | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) (limited to 'pjsip/src/pjsip-ua') diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c index d3176862..e35f0eea 100644 --- a/pjsip/src/pjsip-ua/sip_inv.c +++ b/pjsip/src/pjsip-ua/sip_inv.c @@ -112,11 +112,16 @@ struct tsx_inv_data static pj_status_t mod_inv_load(pjsip_endpoint *endpt) { pj_str_t allowed[] = {{"INVITE", 6}, {"ACK",3}, {"BYE",3}, {"CANCEL",6}}; + pj_str_t accepted = { "application/sdp", 15 }; /* Register supported methods: INVITE, ACK, BYE, CANCEL */ pjsip_endpt_add_capability(endpt, &mod_inv.mod, PJSIP_H_ALLOW, NULL, PJ_ARRAY_SIZE(allowed), allowed); + /* Register "application/sdp" in Accept header */ + pjsip_endpt_add_capability(endpt, &mod_inv.mod, PJSIP_H_ACCEPT, NULL, + 1, &accepted); + return PJ_SUCCESS; } @@ -959,22 +964,43 @@ static int print_sdp(pjsip_msg_body *body, char *buf, pj_size_t len) return pjmedia_sdp_print(body->data, buf, len); } -static pjsip_msg_body *create_sdp_body(pj_pool_t *pool, - const pjmedia_sdp_session *c_sdp) + +PJ_DEF(pj_status_t) pjsip_create_sdp_body( pj_pool_t *pool, + pjmedia_sdp_session *sdp, + pjsip_msg_body **p_body) { + const pj_str_t STR_APPLICATION = { "application", 11}; + const pj_str_t STR_SDP = { "sdp", 3 }; pjsip_msg_body *body; - body = pj_pool_zalloc(pool, sizeof(pjsip_msg_body)); - PJ_ASSERT_RETURN(body != NULL, NULL); + PJ_ASSERT_RETURN(body != NULL, PJ_ENOMEM); - body->content_type.type = pj_str("application"); - body->content_type.subtype = pj_str("sdp"); - body->data = pjmedia_sdp_session_clone(pool, c_sdp); + body->content_type.type = STR_APPLICATION; + body->content_type.subtype = STR_SDP; + body->data = sdp; body->len = 0; body->clone_data = &clone_sdp; body->print_body = &print_sdp; + *p_body = body; + + return PJ_SUCCESS; +} + +static pjsip_msg_body *create_sdp_body(pj_pool_t *pool, + const pjmedia_sdp_session *c_sdp) +{ + pjsip_msg_body *body; + pj_status_t status; + + status = pjsip_create_sdp_body(pool, + pjmedia_sdp_session_clone(pool, c_sdp), + &body); + + if (status != PJ_SUCCESS) + return NULL; + return body; } -- cgit v1.2.3