diff options
author | Liong Sauw Ming <ming@teluu.com> | 2012-06-20 10:39:05 +0000 |
---|---|---|
committer | Liong Sauw Ming <ming@teluu.com> | 2012-06-20 10:39:05 +0000 |
commit | 8f176cf7c8af5c681b7b616500b6eb32adb28887 (patch) | |
tree | b4aba22b23c9d59115b0f190e161933c05f6d667 /pjsip/include/pjsip | |
parent | 253bf3c598087e7d4b11d0c0cb3940551becfcdc (diff) |
Fixed #1537: Via rewrite: putting the right IP address in Via sent-by for outgoing requests
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4173 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/include/pjsip')
-rw-r--r-- | pjsip/include/pjsip/sip_dialog.h | 26 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_transport.h | 8 |
2 files changed, 33 insertions, 1 deletions
diff --git a/pjsip/include/pjsip/sip_dialog.h b/pjsip/include/pjsip/sip_dialog.h index a9922d57..9f37c32f 100644 --- a/pjsip/include/pjsip/sip_dialog.h +++ b/pjsip/include/pjsip/sip_dialog.h @@ -173,6 +173,14 @@ struct pjsip_dialog /** Module specific data. */ void *mod_data[PJSIP_MAX_MODULE]; /**< Module data. */ + + /** + * If via_addr is set, it will be used as the "sent-by" field of the + * Via header for outgoing requests as long as the request uses via_tp + * transport. Normally application should not use or access these fields. + */ + pjsip_host_port via_addr; /**< Via address. */ + const void *via_tp; /**< Via transport. */ }; @@ -298,6 +306,22 @@ PJ_DECL(pj_status_t) pjsip_dlg_set_transport(pjsip_dialog *dlg, /** + * Set the "sent-by" field of the Via header for outgoing requests. + * + * @param dlg The dialog instance. + * @param via_addr Set via_addr to use for the Via header or NULL to use + * the transport's published name. + * @param via_tp via_addr will only be used if we are using via_tp + * transport. + * + * @return PJ_SUCCESS on success. + */ +PJ_DECL(pj_status_t) pjsip_dlg_set_via_sent_by(pjsip_dialog *dlg, + pjsip_host_port *via_addr, + pjsip_transport *via_tp); + + +/** * Create a new (forked) dialog on receipt on forked response in rdata. * The new dialog will be created from original_dlg, except that it will have * new remote tag as copied from the To header in the response. Upon return, @@ -402,7 +426,7 @@ PJ_DECL(pj_status_t) pjsip_dlg_add_usage( pjsip_dialog *dlg, * registered as a usage to the dialog. */ PJ_DECL(pj_bool_t) pjsip_dlg_has_usage(pjsip_dialog *dlg, - pjsip_module *module); + pjsip_module *module); /** * Attach module specific data to the dialog. Application can also set diff --git a/pjsip/include/pjsip/sip_transport.h b/pjsip/include/pjsip/sip_transport.h index 99f006a6..20ddcc5e 100644 --- a/pjsip/include/pjsip/sip_transport.h +++ b/pjsip/include/pjsip/sip_transport.h @@ -584,6 +584,14 @@ struct pjsip_tx_data * Arbitrary data attached by PJSIP modules. */ void *mod_data[PJSIP_MAX_MODULE]; + + /** + * If via_addr is set, it will be used as the "sent-by" field of the + * Via header for outgoing requests as long as the request uses via_tp + * transport. Normally application should not use or access these fields. + */ + pjsip_host_port via_addr; /**< Via address. */ + const void *via_tp; /**< Via transport. */ }; |