Explorar o código

ims_ipsec_pcscf: fix sha1 algorithm and tcp connections for SIP Replies over TCP

Rikyz %!s(int64=3) %!d(string=hai) anos
pai
achega
79bb2b1c4e
Modificáronse 2 ficheiros con 8 adicións e 10 borrados
  1. 7 9
      src/modules/ims_ipsec_pcscf/cmd.c
  2. 1 1
      src/modules/ims_ipsec_pcscf/ipsec.c

+ 7 - 9
src/modules/ims_ipsec_pcscf/cmd.c

@@ -846,17 +846,15 @@ int ipsec_forward(struct sip_msg* m, udomain_t* d, int _cflags)
         // for Reply get the dest proto from the received request
         // for Reply get the dest proto from the received request
         dst_proto = req->rcv.proto;
         dst_proto = req->rcv.proto;
 
 
+        // for Reply and TCP sends from P-CSCF server port, for Reply and UDP sends from P-CSCF client port
+        src_port = dst_proto == PROTO_TCP ? s->port_ps : s->port_pc;
+
+        // for Reply and TCP sends to UE client port, for Reply and UDP sends to UE server port
+        dst_port = dst_proto == PROTO_TCP ? s->port_uc : s->port_us;
+
         // Check send socket
         // Check send socket
         struct socket_info * client_sock = grep_sock_info(via_host.af == AF_INET ? &ipsec_listen_addr : &ipsec_listen_addr6, src_port, dst_proto);
         struct socket_info * client_sock = grep_sock_info(via_host.af == AF_INET ? &ipsec_listen_addr : &ipsec_listen_addr6, src_port, dst_proto);
-        if(client_sock) {
-            // for Reply and TCP sends from P-CSCF server port, for Reply and UDP sends from P-CSCF client port
-            src_port = dst_proto == PROTO_TCP ? s->port_ps : s->port_pc;
-
-            // for Reply and TCP sends to UE client port, for Reply and UDP sends to UE server port
-            dst_port = dst_proto == PROTO_TCP ? s->port_uc : s->port_us;
-        }
-        else
-        {
+        if(!client_sock) {
             src_port = s->port_pc;
             src_port = s->port_pc;
             dst_port = s->port_us;
             dst_port = s->port_us;
         }
         }

+ 1 - 1
src/modules/ims_ipsec_pcscf/ipsec.c

@@ -184,7 +184,7 @@ int add_sa(struct mnl_socket* nl_sock, const struct ip_addr *src_addr_param, con
     if(strncasecmp(r_alg.s, "hmac-md5-96", r_alg.len) == 0) {
     if(strncasecmp(r_alg.s, "hmac-md5-96", r_alg.len) == 0) {
         strcpy(l_auth_algo->alg_name,"md5");
         strcpy(l_auth_algo->alg_name,"md5");
     }
     }
-    else if(strncasecmp(r_alg.s, "hmac-sha1-96", r_alg.len) == 0) {
+    else if(strncasecmp(r_alg.s, "hmac-sha-1-96", r_alg.len) == 0) {
         strcpy(l_auth_algo->alg_name,"sha1");
         strcpy(l_auth_algo->alg_name,"sha1");
     } else {
     } else {
         // set default algorithm to sha1
         // set default algorithm to sha1