Quellcode durchsuchen

modules/outbound: for non-reg requests, check if outbound is supported

   4.3.  Sending Non-REGISTER Requests
   ...
   UAs that support this specification SHOULD include the outbound
   option tag in a Supported header field in a request that is not a
   REGISTER request.
Juha Heinanen vor 12 Jahren
Ursprung
Commit
7a96d91203
1 geänderte Dateien mit 9 neuen und 0 gelöschten Zeilen
  1. 9 0
      modules/outbound/ob_mod.c

+ 9 - 0
modules/outbound/ob_mod.c

@@ -35,6 +35,7 @@
 #include "../../parser/contact/parse_contact.h"
 #include "../../parser/parse_rr.h"
 #include "../../parser/parse_uri.h"
+#include "../../parser/parse_supported.h"
 
 #include "api.h"
 #include "config.h"
@@ -323,6 +324,14 @@ static int use_outbound_non_reg(struct sip_msg *msg)
 	int ret;
 	struct receive_info *rcv = NULL;
 
+	/* Check if Supported: outbound is included */
+	if (parse_supported(msg) == 0) {
+                if (!(get_supported(msg) & F_OPTION_TAG_OUTBOUND)) {
+		        LM_INFO("outbound is not supported and thus not used\n");
+		        return 0;
+		}
+	}
+
 	/* Check to see if the top Route-URI is me and has a ;ob parameter */
 	if (msg->route
 		|| (parse_headers(msg, HDR_ROUTE_F, 0) != -1 && msg->route))