summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsip-ua
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-07-18 14:39:40 +0000
committerBenny Prijono <bennylp@teluu.com>2006-07-18 14:39:40 +0000
commit490bd78f06ea0c101244760b2a5bbb1dae1b3041 (patch)
treee676089d77bd8ff0e0748e4666b3f6b21fb1e2b6 /pjsip/src/pjsip-ua
parent65035358b4b7f51b4183a0937e9e93ff130d7525 (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')
-rw-r--r--pjsip/src/pjsip-ua/sip_inv.c40
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;
}