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

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12478 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Anthony Minessale 2009-03-06 02:06:32 +00:00
parent f639c8c642
commit 8f9637d3f4
3 changed files with 56 additions and 6 deletions

View File

@ -31,7 +31,7 @@ AC_ARG_WITH(libgnutls-prefix,
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`

View File

@ -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 @@ struct stream_data {
};
#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 @@ tls_pull (iksparser *prs, char *buffer, size_t len)
{
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 @@ iks_is_secure (iksparser *prs)
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)

View File

@ -2495,9 +2495,10 @@ static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsessi
}
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);