[Freeswitch-svn] [commit] r12478 - in freeswitch/trunk: libs/iksemel/build libs/iksemel/src src/mod/endpoints/mod_dingaling

FreeSWITCH SVN anthm at freeswitch.org
Thu Mar 5 18:06:33 PST 2009


Author: anthm
Date: Thu Mar  5 20:06:32 2009
New Revision: 12478

Log:
LIBDING-11 use svn update; make iks-reconf; make current

Modified:
   freeswitch/trunk/libs/iksemel/build/libgnutls.m4
   freeswitch/trunk/libs/iksemel/src/stream.c
   freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c

Modified: freeswitch/trunk/libs/iksemel/build/libgnutls.m4
==============================================================================
--- freeswitch/trunk/libs/iksemel/build/libgnutls.m4	(original)
+++ freeswitch/trunk/libs/iksemel/build/libgnutls.m4	Thu Mar  5 20:06:32 2009
@@ -31,7 +31,7 @@
     no_libgnutls=yes
   else
     LIBGNUTLS_CFLAGS=`$LIBGNUTLS_CONFIG $libgnutls_config_args --cflags`
-    LIBGNUTLS_LIBS=`$LIBGNUTLS_CONFIG $libgnutls_config_args --libs`
+    LIBGNUTLS_LIBS="`$LIBGNUTLS_CONFIG $libgnutls_config_args --libs` -lpthread"
     libgnutls_config_version=`$LIBGNUTLS_CONFIG $libgnutls_config_args --version`
 
 

Modified: freeswitch/trunk/libs/iksemel/src/stream.c
==============================================================================
--- freeswitch/trunk/libs/iksemel/src/stream.c	(original)
+++ freeswitch/trunk/libs/iksemel/src/stream.c	Thu Mar  5 20:06:32 2009
@@ -4,6 +4,14 @@
 ** modify it under the terms of GNU Lesser General Public License.
 */
 
+#include "config.h"
+#ifdef HAVE_GNUTLS
+#define _XOPEN_SOURCE 500
+#define _GNU_SOURCE
+#include <pthread.h>
+#endif
+
+
 #include "common.h"
 #include "iksemel.h"
 
@@ -37,14 +45,17 @@
 };
 
 #ifdef HAVE_GNUTLS
+static pthread_mutex_t tls_send_mutex;
+static pthread_mutex_t tls_recv_mutex;
 
 static size_t
 tls_push (iksparser *prs, const char *buffer, size_t len)
 {
 	struct stream_data *data = iks_user_data (prs);
 	int ret;
-
+	pthread_mutex_lock(&tls_send_mutex);
 	ret = data->trans->send (data->sock, buffer, len);
+	pthread_mutex_unlock(&tls_send_mutex);
 	if (ret) return (size_t) -1;
 	return len;
 }
@@ -54,8 +65,9 @@
 {
 	struct stream_data *data = iks_user_data (prs);
 	int ret;
-
+	pthread_mutex_lock(&tls_recv_mutex);
 	ret = data->trans->recv (data->sock, buffer, len, -1);
+	pthread_mutex_unlock(&tls_recv_mutex);
 	if (ret == -1) return (size_t) -1;
 	return ret;
 }
@@ -584,6 +596,43 @@
 	return 0;
 #endif
 }
+#ifdef HAVE_GNUTLS
+
+
+int
+iks_init(void)
+{
+	int ok = 0;
+	pthread_mutexattr_t attr;
+
+	if (pthread_mutexattr_init(&attr))
+		return -1;
+	
+	if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE))
+		ok = -1;
+	
+	if (ok == 0 && pthread_mutex_init(&tls_send_mutex, &attr))
+		ok = -1;
+
+	if (ok == 0 && pthread_mutex_init(&tls_recv_mutex, &attr)) {
+		pthread_mutex_destroy(&tls_send_mutex);
+		ok = -1;
+	}
+	
+
+	pthread_mutexattr_destroy(&attr);
+
+	return ok;
+
+}
+#else
+int
+iks_init(void)
+{
+	return 0;
+}
+#endif
+
 
 int
 iks_start_tls (iksparser *prs)

Modified: freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c	Thu Mar  5 20:06:32 2009
@@ -2495,9 +2495,10 @@
 					}
 					from = ffrom;
 				}
-
-
-				switch_core_chat_send(proto, MDL_CHAT_PROTO, from, to, subject, switch_str_nil(msg), NULL, hint);
+				
+				if (strcasecmp(proto, MDL_CHAT_PROTO)) { /* yes no ! on purpose */
+					switch_core_chat_send(proto, MDL_CHAT_PROTO, from, to, subject, switch_str_nil(msg), NULL, hint);
+				}
 
 				switch_safe_free(pproto);
 				switch_safe_free(ffrom);



More information about the Freeswitch-svn mailing list