[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