]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
change ssl symbol visibility to specific places in core only
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 4 Feb 2013 16:47:27 +0000 (10:47 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 1 Apr 2013 02:27:23 +0000 (21:27 -0500)
src/include/switch_core.h
src/include/switch_ssl.h
src/switch_core_cert.c
src/switch_core_media.c
src/switch_rtp.c

index 7381adf1e83ed79bc7dee04c13ab1bee1191ce05..21086b0b597cb9f8fc18e2de7691631b4b678975 100644 (file)
 #define SWITCH_CORE_H
 
 #include <switch.h>
-#include <openssl/pem.h>
-#include <openssl/conf.h>
-#include <openssl/x509v3.h>
-#ifndef OPENSSL_NO_ENGINE
-#include <openssl/engine.h>
-#endif
 
 SWITCH_BEGIN_EXTERN_C
 #define SWITCH_MAX_CORE_THREAD_SESSION_OBJS 128
@@ -2518,7 +2512,6 @@ SWITCH_DECLARE(pid_t) switch_fork(void);
 SWITCH_DECLARE(int) switch_core_gen_certs(const char *prefix);
 SWITCH_DECLARE(int) switch_core_cert_gen_fingerprint(const char *prefix, dtls_fingerprint_t *fp);
 SWITCH_DECLARE(int) switch_core_cert_expand_fingerprint(dtls_fingerprint_t *fp, const char *str);
-SWITCH_DECLARE(int) switch_core_cert_extract_fingerprint(X509* x509, dtls_fingerprint_t *fp);
 SWITCH_DECLARE(int) switch_core_cert_verify(dtls_fingerprint_t *fp);
 
 SWITCH_END_EXTERN_C
index 70d675e16bbc91e5e114cbb6c269f4c5909ce536..ee8bd8d4791cbe2174b7cc18f32fdeb7f02cc590 100644 (file)
 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
 #endif
 #include <openssl/crypto.h>
+#include <openssl/pem.h>
+#include <openssl/conf.h>
+#include <openssl/x509v3.h>
+#ifndef OPENSSL_NO_ENGINE
+#include <openssl/engine.h>
+#endif
+#include <openssl/ssl.h>
+#include <openssl/err.h>
+#include <openssl/bio.h>
 
-static switch_mutex_t **ssl_mutexes;
-static switch_memory_pool_t *ssl_pool = NULL;
-static int ssl_count = 0;
-
-static inline void switch_ssl_ssl_lock_callback(int mode, int type, char *file, int line)
-{
-       if (mode & CRYPTO_LOCK) {
-               switch_mutex_lock(ssl_mutexes[type]);
-       }
-       else {
-               switch_mutex_unlock(ssl_mutexes[type]);
-       }
-}
-
-static inline unsigned long switch_ssl_ssl_thread_id(void)
-{
-       return (unsigned long) switch_thread_self();
-}
-
-static inline void switch_ssl_init_ssl_locks(void)
-{
-
-       int i, num;
-
-       if (ssl_count == 0) {
-               num = CRYPTO_num_locks();
-               
-               ssl_mutexes = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(switch_mutex_t*));
-               switch_assert(ssl_mutexes != NULL);
-
-               switch_core_new_memory_pool(&ssl_pool);
-
-               for (i = 0; i < num; i++) {
-                       switch_mutex_init(&(ssl_mutexes[i]), SWITCH_MUTEX_NESTED, ssl_pool);
-                       switch_assert(ssl_mutexes[i] != NULL);
-               }
-
-               CRYPTO_set_id_callback(switch_ssl_ssl_thread_id);
-               CRYPTO_set_locking_callback((void (*)(int, int, const char*, int))switch_ssl_ssl_lock_callback);
-       }
-
-       ssl_count++;
-}
-
-static inline void switch_ssl_destroy_ssl_locks()
-{
-       int i;
-
-       if (ssl_count == 1) {
-               CRYPTO_set_locking_callback(NULL);
-               for (i = 0; i < CRYPTO_num_locks(); i++) {
-                       if (ssl_mutexes[i]) {
-                               switch_mutex_destroy(ssl_mutexes[i]);
-                       }
-               }
+SWITCH_DECLARE(int) switch_core_cert_extract_fingerprint(X509* x509, dtls_fingerprint_t *fp);
 
-               OPENSSL_free(ssl_mutexes);
-               ssl_count--;
-       }
-}
 #else
-static inline void switch_ssl_init_ssl_locks(void) { return; }
-static inline void switch_ssl_destroy_ssl_locks(void) { return; }
+static inline int switch_core_cert_extract_fingerprint(void* x509, dtls_fingerprint_t *fp) { return 0; }
 #endif
 
+SWITCH_DECLARE(void) switch_ssl_destroy_ssl_locks(void);
+SWITCH_DECLARE(void) switch_ssl_init_ssl_locks(void);
+
 #endif
index bbcfb185053d6f35e147d9b8ec32822380879aa2..4f52384e942cbb3628dd5cbe408a706d95069dd9 100644 (file)
  */
 
 #include <switch.h>
+#include <switch_ssl.h>
 
+static switch_mutex_t **ssl_mutexes;
+static switch_memory_pool_t *ssl_pool = NULL;
+static int ssl_count = 0;
+
+static inline void switch_ssl_ssl_lock_callback(int mode, int type, char *file, int line)
+{
+       if (mode & CRYPTO_LOCK) {
+               switch_mutex_lock(ssl_mutexes[type]);
+       }
+       else {
+               switch_mutex_unlock(ssl_mutexes[type]);
+       }
+}
+
+static inline unsigned long switch_ssl_ssl_thread_id(void)
+{
+       return (unsigned long) switch_thread_self();
+}
+
+SWITCH_DECLARE(void) switch_ssl_init_ssl_locks(void)
+{
+
+       int i, num;
+
+       if (ssl_count == 0) {
+               num = CRYPTO_num_locks();
+               
+               ssl_mutexes = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(switch_mutex_t*));
+               switch_assert(ssl_mutexes != NULL);
+
+               switch_core_new_memory_pool(&ssl_pool);
+
+               for (i = 0; i < num; i++) {
+                       switch_mutex_init(&(ssl_mutexes[i]), SWITCH_MUTEX_NESTED, ssl_pool);
+                       switch_assert(ssl_mutexes[i] != NULL);
+               }
+
+               CRYPTO_set_id_callback(switch_ssl_ssl_thread_id);
+               CRYPTO_set_locking_callback((void (*)(int, int, const char*, int))switch_ssl_ssl_lock_callback);
+       }
+
+       ssl_count++;
+}
+
+SWITCH_DECLARE(void) switch_ssl_destroy_ssl_locks(void)
+{
+       int i;
+
+       if (ssl_count == 1) {
+               CRYPTO_set_locking_callback(NULL);
+               for (i = 0; i < CRYPTO_num_locks(); i++) {
+                       if (ssl_mutexes[i]) {
+                               switch_mutex_destroy(ssl_mutexes[i]);
+                       }
+               }
+
+               OPENSSL_free(ssl_mutexes);
+               ssl_count--;
+       }
+}
 
 static const EVP_MD *get_evp_by_name(const char *name)
 {
index bc443c9a6d8c4ac2c50753ff3d3af0fa94a24692..d36bf29c540272db70d537c53bee89e7b816bef6 100644 (file)
@@ -1055,7 +1055,6 @@ SWITCH_DECLARE(void) switch_core_media_prepare_codecs(switch_core_session_t *ses
                goto ready;
        }
 
-
        if ((ocodec = switch_channel_get_variable(session->channel, SWITCH_ORIGINATOR_CODEC_VARIABLE))) {
                if (!codec_string || (smh->media_flags[SCMF_DISABLE_TRANSCODING])) {
                        codec_string = ocodec;
index ad521de3be7bae6bb1f1713bbf0812f2d1c940c1..86d258ab8e4d336696bfde1ce08613b827013820 100644 (file)
 #include <srtp.h>
 #include <srtp_priv.h>
 #include <switch_version.h>
-
-#include <openssl/ssl.h>
-#include <openssl/err.h>
-#include <openssl/bio.h>
-
-
+#include <switch_ssl.h>
 
 #define READ_INC(rtp_session) switch_mutex_lock(rtp_session->read_mutex); rtp_session->reading++
 #define READ_DEC(rtp_session)  switch_mutex_unlock(rtp_session->read_mutex); rtp_session->reading--