Module: sip-router Branch: 4.0 Commit: e446aa58a89c60ef9449fc8f79492232c7ed6f7f URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=e446aa58...
Author: Juha Heinanen jh@tutpro.com Committer: Juha Heinanen jh@tutpro.com Date: Sat Mar 16 06:33:13 2013 +0200
modules/registrar: outbound_mode=1 fix
outbound_mode=1 now accepts REGISTER requests that either contain or do not contain a Supported: outbound header.
a Supported: outbound header is always added to 200 OK reply and if request contained a Supported: outbound header, also a Require: outbound header is added.
---
modules/registrar/doc/registrar_admin.xml | 14 +++++++++----- modules/registrar/reply.c | 13 ++++++++++--- 2 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/modules/registrar/doc/registrar_admin.xml b/modules/registrar/doc/registrar_admin.xml index 47e52d5..cb55218 100644 --- a/modules/registrar/doc/registrar_admin.xml +++ b/modules/registrar/doc/registrar_admin.xml @@ -731,11 +731,15 @@ modparam("registrar", "gruu_enabled", 0) with the outbound options tag. </para> <para> - If set to 1 then this module will accept REGISTER requests - that do not contain a Supported: header with the outbound - options-tag. The 200 OK response to REGISTER requests that this - module generates will contain a Supported: header with the - outbound options tag. + If set to 1 this module will accept REGISTER requests that do + not contain a Supported: header with the outbound options-tag + and REGISTER requests that do contain a Supported: or a + Requires: header with the outbound options-tag. The 200 OK + response that this module generates, will contain a Supported: + header with the outbound options tag. The 200 OK response + will also contain a Require: header with the outbound options + tag if the REGISTER request contained a Supported: + header with the outbound options-tag. </para> <para> If set to 2 then this module will reject REGISTER requests diff --git a/modules/registrar/reply.c b/modules/registrar/reply.c index 5903710..7ed2a05 100644 --- a/modules/registrar/reply.c +++ b/modules/registrar/reply.c @@ -658,11 +658,18 @@ int reg_send_reply(struct sip_msg* _m) if (add_flow_timer(_m) < 0) return -1; } - /* Fall-thru */ - case REG_OUTBOUND_SUPPORTED: if (add_supported(_m, &outbound_str) < 0) - return -1; + return -1; break; + case REG_OUTBOUND_SUPPORTED: + if ((parse_supported(_m) == 0) && + (((struct supported_body *)_m->supported->parsed)->supported_all & F_SUPPORTED_OUTBOUND)) { + if (add_require(_m, &outbound_str) < 0) + return -1; + } + if (add_supported(_m, &outbound_str) < 0) + return -1; + break; } break; case R_OB_UNSUP: