msrp: cache in a local variable if tls module is loaded
authorDaniel-Constantin Mierla <miconda@gmail.com>
Mon, 13 May 2013 08:35:35 +0000 (10:35 +0200)
committerDaniel-Constantin Mierla <miconda@gmail.com>
Mon, 13 May 2013 08:35:35 +0000 (10:35 +0200)
- avoid looping at runtime through the list of modules

modules/msrp/msrp_cmap.c
modules/msrp/msrp_mod.c
modules/msrp/msrp_vars.c

index 5ae3b0c..0ae14a6 100644 (file)
@@ -43,6 +43,7 @@ static sruid_t _msrp_sruid;
 
 extern int msrp_auth_min_expires;
 extern int msrp_auth_max_expires;
+extern int msrp_tls_module_loaded;
 extern str msrp_use_path_addr;
 
 /**
@@ -211,8 +212,8 @@ int msrp_cmap_save(msrp_frame_t *mf)
        hid = msrp_get_hashid(&_msrp_sruid.uid);        
        idx = msrp_get_slot(hid, _msrp_cmap_head->mapsize);
 
-       srcaddr.s = sbuf;;
-       if (module_loaded("tls"))
+       srcaddr.s = sbuf;
+       if (msrp_tls_module_loaded)
        {
                memcpy(srcaddr.s, "msrps://", 8);
                srcaddr.s+=8;
index edc4666..4b85ffe 100644 (file)
@@ -69,6 +69,7 @@ int msrp_auth_min_expires = 60;
 int msrp_auth_max_expires = 3600;
 int msrp_timer_interval = 60;
 str msrp_use_path_addr = { 0 };
+int msrp_tls_module_loaded = 0;
 
 static int msrp_frame_received(void *data);
 sip_msg_t *msrp_fake_sipmsg(msrp_frame_t *mf);
@@ -172,6 +173,8 @@ static int mod_init(void)
                LM_WARN("\"tls\" module is not loaded. TLS is mandatory for"
                        " MSRP Relays. To comply with RFC 4976 you must use"
                        "  TLS.\n");
+       } else {
+               msrp_tls_module_loaded = 1;
        }
 
        return 0;
index 673b20d..7e135e5 100644 (file)
@@ -36,6 +36,8 @@
 #include "msrp_parser.h"
 #include "msrp_vars.h"
 
+extern int msrp_tls_module_loaded;
+
 /**
  *
  */
@@ -274,7 +276,7 @@ int pv_get_msrp(sip_msg_t *msg,  pv_param_t *param, pv_value_t *res)
                                return pv_get_null(msg, param, res);
                        s.s = pv_get_buffer();
                        p = s.s;
-                       if (module_loaded("tls"))
+                       if (msrp_tls_module_loaded)
                        {
                                memcpy(p, "msrps://", 8);
                                p+=8;