everything: shotgun attempt to put PROTO_WS and PROTO_WSS across core and in modules...
[sip-router] / modules / tm / tm.c
index 5e06470..a251826 100644 (file)
@@ -1039,7 +1039,12 @@ inline static int str2proto(char *s, int len) {
                return PROTO_TLS;       
        else if (len == 4 && !strncasecmp(s, "sctp", 4))
                return PROTO_SCTP;
-       else
+       else if (len == 2 && !strncasecmp(s, "ws", 2))
+               return PROTO_WS;
+       else if (len == 3 && !strncasecmp(s, "wss", 3)) {
+               LM_WARN("\"wss\" used somewhere...\n");
+               return PROTO_WS;
+       } else
                return PROTO_NONE;
 }
 
@@ -1286,6 +1291,12 @@ inline static int w_t_release(struct sip_msg* msg, char* str, char* str2)
        struct cell *t;
        int ret;
        
+       if(get_route_type()!=REQUEST_ROUTE)
+       {
+               LM_INFO("invalid usage - not in request route\n");
+               return -1;
+       }
+
        if (t_check( msg  , 0  )==-1) return -1;
        t=get_t();
        if ( t && t!=T_UNDEFINED ) {
@@ -1466,22 +1477,14 @@ inline static int w_t_relay_to_avp( struct sip_msg  *p_msg ,
        return r;
 }
 
-inline static int w_t_replicate_uri(struct sip_msg  *msg ,
-                               char *uri,       /* sip uri as string or variable */
-                               char *_foo       /* nothing expected */ )
+int t_replicate_uri(struct sip_msg *msg, str *suri)
 {
        struct proxy_l *proxy;
        struct sip_uri turi;
-       str suri;
        int r = -1;
 
        memset(&turi, 0, sizeof(struct sip_uri));
-       if(fixup_get_svalue(msg, (gparam_p)uri, &suri)!=0)
-       {
-               LM_ERR("invalid replicate uri parameter");
-               return -1;
-       }
-       if(parse_uri(suri.s, suri.len, &turi)!=0)
+       if(parse_uri(suri->s, suri->len, &turi)!=0)
        {
                LM_ERR("bad replicate SIP address!\n");
                return -1;
@@ -1490,7 +1493,7 @@ inline static int w_t_replicate_uri(struct sip_msg  *msg ,
        proxy=mk_proxy(&turi.host, turi.port_no, turi.proto);
        if (proxy==0) {
                LM_ERR("cannot create proxy from URI <%.*s>\n",
-                       suri.len, suri.s );
+                       suri->len, suri->s );
                return -1;
        }
 
@@ -1498,7 +1501,20 @@ inline static int w_t_replicate_uri(struct sip_msg  *msg ,
        free_proxy(proxy);
        pkg_free(proxy);
        return r;
+}
 
+inline static int w_t_replicate_uri(struct sip_msg  *msg ,
+                               char *uri,       /* sip uri as string or variable */
+                               char *_foo       /* nothing expected */ )
+{
+       str suri;
+
+       if(fixup_get_svalue(msg, (gparam_p)uri, &suri)!=0)
+       {
+               LM_ERR("invalid replicate uri parameter");
+               return -1;
+       }
+       return t_replicate_uri(msg, &suri);
 }
 
 inline static int w_t_replicate( struct sip_msg  *p_msg ,