summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-03-02 21:14:16 +0000
committerBenny Prijono <bennylp@teluu.com>2006-03-02 21:14:16 +0000
commit9c6c63de6a5564b32ee1239bb77ef605c8a69837 (patch)
treeac15635f6314e1b67f1cb842f3136705bddcea9e
parent3bb3a2524cc7df01d7207fec609cd234085ba0c0 (diff)
Added optional header and body in pjsip_dlg_respond
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@265 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/include/pjsip/sip_dialog.h8
-rw-r--r--pjsip/src/pjsip/sip_dialog.c21
2 files changed, 25 insertions, 4 deletions
diff --git a/pjsip/include/pjsip/sip_dialog.h b/pjsip/include/pjsip/sip_dialog.h
index d4454a8e..27ea7980 100644
--- a/pjsip/include/pjsip/sip_dialog.h
+++ b/pjsip/include/pjsip/sip_dialog.h
@@ -321,9 +321,9 @@ PJ_DECL(pj_status_t) pjsip_dlg_send_response( pjsip_dialog *dlg,
/**
* This composite function sends response message statefully to an incoming
- * request message.
+ * request message inside dialog.
*
- * @param endpt The endpoint instance.
+ * @param dlg The endpoint instance.
* @param rdata The incoming request message.
* @param st_code Status code of the response.
* @param st_text Optional status text of the response.
@@ -336,7 +336,9 @@ PJ_DECL(pj_status_t) pjsip_dlg_send_response( pjsip_dialog *dlg,
PJ_DECL(pj_status_t) pjsip_dlg_respond( pjsip_dialog *dlg,
pjsip_rx_data *rdata,
int st_code,
- const pj_str_t *st_text);
+ const pj_str_t *st_text,
+ const pjsip_hdr *hdr_list,
+ const pjsip_msg_body *body );
/*
* Internal (called by sip_ua_layer.c)
diff --git a/pjsip/src/pjsip/sip_dialog.c b/pjsip/src/pjsip/sip_dialog.c
index 5a61100a..4139b221 100644
--- a/pjsip/src/pjsip/sip_dialog.c
+++ b/pjsip/src/pjsip/sip_dialog.c
@@ -1194,7 +1194,9 @@ PJ_DEF(pj_status_t) pjsip_dlg_send_response( pjsip_dialog *dlg,
PJ_DEF(pj_status_t) pjsip_dlg_respond( pjsip_dialog *dlg,
pjsip_rx_data *rdata,
int st_code,
- const pj_str_t *st_text )
+ const pj_str_t *st_text,
+ const pjsip_hdr *hdr_list,
+ const pjsip_msg_body *body )
{
pj_status_t status;
pjsip_tx_data *tdata;
@@ -1214,6 +1216,23 @@ PJ_DEF(pj_status_t) pjsip_dlg_respond( pjsip_dialog *dlg,
if (status != PJ_SUCCESS)
return status;
+ /* Add additional header, if any */
+ if (hdr_list) {
+ const pjsip_hdr *hdr;
+
+ hdr = hdr_list->next;
+ while (hdr != hdr_list) {
+ pjsip_msg_add_hdr(tdata->msg,
+ pjsip_hdr_clone(tdata->pool, hdr));
+ hdr = hdr->next;
+ }
+ }
+
+ /* Add the message body, if any. */
+ if (body) {
+ tdata->msg->body = pjsip_msg_body_clone( tdata->pool, body);
+ }
+
/* Send the response. */
return pjsip_dlg_send_response(dlg, pjsip_rdata_get_tsx(rdata), tdata);
}