From 25c68ead315a70ef14a5880ed026fb6eeeb447f5 Mon Sep 17 00:00:00 2001 From: mom040267 Date: Fri, 9 May 2014 07:51:47 +0000 Subject: [PATCH] kernel channel condition improved --- src/server/ns_turn_server.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/server/ns_turn_server.c b/src/server/ns_turn_server.c index c80520e1..42b35180 100644 --- a/src/server/ns_turn_server.c +++ b/src/server/ns_turn_server.c @@ -2242,17 +2242,21 @@ static int handle_turn_channel_bind(turn_turnserver *server, ioa_network_buffer_set_size(nbh,len); *resp_constructed = 1; - if(get_ioa_socket_type(ss->client_session.s) == UDP_SOCKET || - get_ioa_socket_type(ss->client_session.s) == TCP_SOCKET) { - chn->kernel_channel = CREATE_TURN_CHANNEL_KERNEL(chn->chnum, - get_ioa_socket_address_family(ss->client_session.s), - get_ioa_socket_address_family(ss->alloc.relay_session.s), - get_ioa_socket_type(ss->client_session.s)==UDP_SOCKET ? IPPROTO_UDP : IPPROTO_TCP, - &(get_remote_addr_from_ioa_socket(ss->client_session.s)->ss), - &(get_local_addr_from_ioa_socket(ss->client_session.s)->ss), - &(get_local_addr_from_ioa_socket(ss->alloc.relay_session.s)), - &(get_remote_addr_from_ioa_socket(ss->alloc.relay_session.s)) - ); + if(!(ss->is_mobile)) { + if(get_ioa_socket_type(ss->client_session.s) == UDP_SOCKET || + get_ioa_socket_type(ss->client_session.s) == TCP_SOCKET) { + if(get_ioa_socket_type(ss->alloc.relay_session.s) == UDP_SOCKET) { + chn->kernel_channel = CREATE_TURN_CHANNEL_KERNEL(chn->chnum, + get_ioa_socket_address_family(ss->client_session.s), + get_ioa_socket_address_family(ss->alloc.relay_session.s), + (get_ioa_socket_type(ss->client_session.s)==UDP_SOCKET ? IPPROTO_UDP : IPPROTO_TCP), + &(get_remote_addr_from_ioa_socket(ss->client_session.s)->ss), + &(get_local_addr_from_ioa_socket(ss->client_session.s)->ss), + &(get_local_addr_from_ioa_socket(ss->alloc.relay_session.s)), + &(get_remote_addr_from_ioa_socket(ss->alloc.relay_session.s)) + ); + } + } } } }