diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-07-18 14:39:40 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-07-18 14:39:40 +0000 |
commit | 490bd78f06ea0c101244760b2a5bbb1dae1b3041 (patch) | |
tree | e676089d77bd8ff0e0748e4666b3f6b21fb1e2b6 /pjsip/src/pjsip-ua/sip_inv.c | |
parent | 65035358b4b7f51b4183a0937e9e93ff130d7525 (diff) |
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
Diffstat (limited to 'pjsip/src/pjsip-ua/sip_inv.c')
-rw-r--r-- | pjsip/src/pjsip-ua/sip_inv.c | 40 |
1 files changed, 33 insertions, 7 deletions
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; } |