[Freeswitch-svn] [commit] r13388 - in freeswitch/trunk/libs/sofia-sip: . libsofia-sip-ua/tport
FreeSWITCH SVN
mikej at freeswitch.org
Tue May 19 10:25:08 PDT 2009
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 at 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 at 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)) {
More information about the Freeswitch-svn
mailing list