[commit] r13388 - in freeswitch/trunk/libs/sofia-sip: . libsofia-sip-ua/tport
Author: mikej Date: Tue May 19 12:25:08 2009 New Revision: 13388 Log: Tue May 19 12:00:30 CDT 2009 Pekka Pessi <first.last@nokia.com> * su_uniqueid.c: Solaris misdefines PTHREAD_ONCE_INIT Ignore-this: 9fe2247164d572901ed4a30b009353db Solaris defines pthread_once_t as a struct containing an array. The initializer PTHREAD_ONCE_INIT needs two levels of brackets it but only has one. Original patch from Mike Jerris <mike@jerris.com>. Modified: freeswitch/trunk/libs/sofia-sip/.update freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls.c Modified: freeswitch/trunk/libs/sofia-sip/.update ============================================================================== --- freeswitch/trunk/libs/sofia-sip/.update (original) +++ freeswitch/trunk/libs/sofia-sip/.update Tue May 19 12:25:08 2009 @@ -1 +1 @@ -Tue May 19 12:23:01 CDT 2009 +Tue May 19 12:24:21 CDT 2009 Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls.c ============================================================================== --- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls.c (original) +++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls.c Tue May 19 12:25:08 2009 @@ -68,11 +68,38 @@ #include <signal.h> #endif +#if SU_HAVE_PTHREADS + +#include <pthread.h> + +#if __sun +#undef PTHREAD_ONCE_INIT +#define PTHREAD_ONCE_INIT {{ 0, 0, 0, PTHREAD_ONCE_NOTDONE }} +#endif + +static pthread_once_t once = PTHREAD_ONCE_INIT; +#define ONCE_INIT(f) pthread_once(&once, f) + +#else + +static int once; +#define ONCE_INIT(f) (!once ? (once = 1), f() : (void)0) + +#endif + #include "tport_tls.h" char const tls_version[] = OPENSSL_VERSION_TEXT; int tls_ex_data_idx = -1; /* see SSL_get_ex_new_index(3ssl) */ +static void +tls_init_once(void) +{ + SSL_library_init(); + SSL_load_error_strings(); + tls_ex_data_idx = SSL_get_ex_new_index(0, "sofia-sip private data", NULL, NULL, NULL); +} + enum { tls_master = 0, tls_slave = 1}; struct tls_s { @@ -218,15 +245,13 @@ static int tls_init_context(tls_t *tls, tls_issues_t const *ti) { - static int initialized = 0; int verify; + static int random_loaded; + + ONCE_INIT(tls_init_once); - if (!initialized) { - initialized = 1; - SSL_library_init(); - SSL_load_error_strings(); - tls_ex_data_idx = SSL_get_ex_new_index(0, \ - "sofia-sip private data", NULL, NULL, NULL); + if (!random_loaded) { + random_loaded = 1; if (ti->randFile && !RAND_load_file(ti->randFile, 1024 * 1024)) {
participants (1)
-
FreeSWITCH SVN