dtls mobile fix

This commit is contained in:
mom040267 2014-04-28 00:09:00 +00:00
parent c1d067d957
commit 94a676b816
3 changed files with 8 additions and 9 deletions

View File

@ -1634,7 +1634,7 @@ void close_ioa_socket(ioa_socket_handle s)
}
}
ioa_socket_handle detach_ioa_socket(ioa_socket_handle s)
ioa_socket_handle detach_ioa_socket(ioa_socket_handle s, int full_detach)
{
ioa_socket_handle ret = NULL;
@ -1666,15 +1666,13 @@ ioa_socket_handle detach_ioa_socket(ioa_socket_handle s)
evutil_socket_t udp_fd = -1;
if(s->parent_s) {
#if defined(SO_REUSEPORT)
if(s->parent_s && full_detach) {
udp_fd = socket(s->local_addr.ss.sa_family, SOCK_DGRAM, 0);
if (udp_fd < 0) {
perror("socket");
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR,"%s: Cannot allocate new socket\n",__FUNCTION__);
return ret;
}
#endif
}
detach_socket_net_data(s);
@ -1826,8 +1824,9 @@ ioa_addr* get_local_addr_from_ioa_socket(ioa_socket_handle s)
{
if (s && (s->magic == SOCKET_MAGIC) && !(s->done)) {
if(s->parent_s)
if(s->parent_s) {
s = s->parent_s;
}
if (s->local_addr_known) {
return &(s->local_addr);

View File

@ -235,7 +235,7 @@ int register_callback_on_ioa_socket(ioa_engine_handle e, ioa_socket_handle s, in
int send_data_from_ioa_socket_nbh(ioa_socket_handle s, ioa_addr* dest_addr, ioa_network_buffer_handle nbh, int ttl, int tos);
void close_ioa_socket(ioa_socket_handle s);
#define IOA_CLOSE_SOCKET(S) do { if(S) { close_ioa_socket(S); S = NULL; } } while(0)
ioa_socket_handle detach_ioa_socket(ioa_socket_handle s);
ioa_socket_handle detach_ioa_socket(ioa_socket_handle s, int full_detach);
void detach_socket_net_data(ioa_socket_handle s);
int set_df_on_ioa_socket(ioa_socket_handle s, int value);
void set_do_not_use_df(ioa_socket_handle s);

View File

@ -1240,7 +1240,7 @@ static int handle_turn_refresh(turn_turnserver *server,
if(tsid != server->id) {
if(server->send_socket_to_relay) {
ioa_socket_handle new_s = detach_ioa_socket(ss->client_session.s);
ioa_socket_handle new_s = detach_ioa_socket(ss->client_session.s,1);
if(new_s) {
if(server->send_socket_to_relay(tsid, mid, tid, new_s, message_integrity,
RMT_MOBILE_SOCKET, in_buffer)<0) {
@ -1318,7 +1318,7 @@ static int handle_turn_refresh(turn_turnserver *server,
//Transfer socket:
ioa_socket_handle s = detach_ioa_socket(ss->client_session.s);
ioa_socket_handle s = detach_ioa_socket(ss->client_session.s,0);
ss->to_be_closed = 1;
@ -1952,7 +1952,7 @@ static int handle_turn_connection_bind(turn_turnserver *server,
turnserver_id sid = (id & 0xFF000000)>>24;
ioa_socket_handle s = ss->client_session.s;
if(s) {
ioa_socket_handle new_s = detach_ioa_socket(s);
ioa_socket_handle new_s = detach_ioa_socket(s,1);
if(new_s) {
if(server->send_socket_to_relay(sid, id, tid, new_s, message_integrity, RMT_CB_SOCKET, NULL)<0) {
*err_code = 400;