|
|
@@ -672,14 +672,16 @@ static int client_read(app_ur_session *elem, int is_tcp_data, app_tcp_conn_info
|
|
|
|
|
|
uint16_t chnumber = 0;
|
|
|
|
|
|
- const message_info *mi = NULL;
|
|
|
-
|
|
|
+ message_info mi;
|
|
|
+ ns_bzero(&mi, sizeof(message_info));
|
|
|
+ int miset=0;
|
|
|
size_t buffers = 1;
|
|
|
|
|
|
if(is_tcp_data) {
|
|
|
- if ((int)elem->in_buffer.len == clmessage_length) {
|
|
|
- mi = (message_info*)(elem->in_buffer.buf);
|
|
|
- }
|
|
|
+ if ((int)elem->in_buffer.len == clmessage_length) {
|
|
|
+ ns_bcopy((elem->in_buffer.buf), &mi, sizeof(message_info));
|
|
|
+ miset=1;
|
|
|
+ }
|
|
|
} else if (stun_is_indication(&(elem->in_buffer))) {
|
|
|
|
|
|
uint16_t method = stun_get_method(&elem->in_buffer);
|
|
|
@@ -726,7 +728,8 @@ static int client_read(app_ur_session *elem, int is_tcp_data, app_tcp_conn_info
|
|
|
|
|
|
const u08bits* data = stun_attr_get_value(sar);
|
|
|
|
|
|
- mi = (const message_info*) data;
|
|
|
+ ns_bcopy(data, &mi, sizeof(message_info));
|
|
|
+ miset=1;
|
|
|
}
|
|
|
|
|
|
} else if (stun_is_success_response(&(elem->in_buffer))) {
|
|
|
@@ -781,7 +784,8 @@ static int client_read(app_ur_session *elem, int is_tcp_data, app_tcp_conn_info
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
- mi = (message_info*)(elem->in_buffer.buf + 4);
|
|
|
+ ns_bcopy(elem->in_buffer.buf + 4, &mi, sizeof(message_info));
|
|
|
+ miset=1;
|
|
|
applen = elem->in_buffer.len -4;
|
|
|
}
|
|
|
} else {
|
|
|
@@ -790,15 +794,16 @@ static int client_read(app_ur_session *elem, int is_tcp_data, app_tcp_conn_info
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
- if(mi) {
|
|
|
+ if(miset) {
|
|
|
/*
|
|
|
printf("%s: 111.111: msgnum=%d, rmsgnum=%d, sent=%lu, recv=%lu\n",__FUNCTION__,
|
|
|
mi->msgnum,elem->recvmsgnum,(unsigned long)mi->mstime,(unsigned long)current_mstime);
|
|
|
*/
|
|
|
- if(mi->msgnum != elem->recvmsgnum+1)
|
|
|
+
|
|
|
+ if(mi.msgnum != elem->recvmsgnum+1)
|
|
|
++(elem->loss);
|
|
|
else {
|
|
|
- u64bits clatency = (u64bits)time_minus(current_mstime,mi->mstime);
|
|
|
+ u64bits clatency = (u64bits)time_minus(current_mstime,mi.mstime);
|
|
|
if(clatency>max_latency)
|
|
|
max_latency = clatency;
|
|
|
if(clatency<min_latency)
|
|
|
@@ -816,7 +821,7 @@ static int client_read(app_ur_session *elem, int is_tcp_data, app_tcp_conn_info
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- elem->recvmsgnum = mi->msgnum;
|
|
|
+ elem->recvmsgnum = mi.msgnum;
|
|
|
}
|
|
|
|
|
|
elem->rmsgnum+=buffers;
|