mirror of
https://github.com/coturn/coturn.git
synced 2025-10-29 14:01:01 +01:00
SPARC64 mem alingment fixes
This commit is contained in:
parent
7f201e86a6
commit
53bae81e78
@ -672,13 +672,14 @@ static int client_read(app_ur_session *elem, int is_tcp_data, app_tcp_conn_info
|
|||||||
|
|
||||||
uint16_t chnumber = 0;
|
uint16_t chnumber = 0;
|
||||||
|
|
||||||
const message_info *mi = NULL;
|
message_info mi;
|
||||||
|
int miset=0;
|
||||||
size_t buffers = 1;
|
size_t buffers = 1;
|
||||||
|
|
||||||
if(is_tcp_data) {
|
if(is_tcp_data) {
|
||||||
if ((int)elem->in_buffer.len == clmessage_length) {
|
if ((int)elem->in_buffer.len == clmessage_length) {
|
||||||
mi = (message_info*)(elem->in_buffer.buf);
|
ns_bcopy((elem->in_buffer.buf), &mi, sizeof(message_info));
|
||||||
|
miset=1;
|
||||||
}
|
}
|
||||||
} else if (stun_is_indication(&(elem->in_buffer))) {
|
} else if (stun_is_indication(&(elem->in_buffer))) {
|
||||||
|
|
||||||
@ -726,7 +727,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);
|
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))) {
|
} else if (stun_is_success_response(&(elem->in_buffer))) {
|
||||||
@ -781,7 +783,8 @@ static int client_read(app_ur_session *elem, int is_tcp_data, app_tcp_conn_info
|
|||||||
return rc;
|
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;
|
applen = elem->in_buffer.len -4;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -790,15 +793,15 @@ static int client_read(app_ur_session *elem, int is_tcp_data, app_tcp_conn_info
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mi) {
|
if(miset) {
|
||||||
/*
|
/*
|
||||||
printf("%s: 111.111: msgnum=%d, rmsgnum=%d, sent=%lu, recv=%lu\n",__FUNCTION__,
|
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);
|
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);
|
++(elem->loss);
|
||||||
else {
|
else {
|
||||||
u64bits clatency = (u64bits)time_minus(current_mstime,mi->mstime);
|
u64bits clatency = (u64bits)time_minus(current_mstime,mi.mstime);
|
||||||
if(clatency>max_latency)
|
if(clatency>max_latency)
|
||||||
max_latency = clatency;
|
max_latency = clatency;
|
||||||
if(clatency<min_latency)
|
if(clatency<min_latency)
|
||||||
@ -816,7 +819,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;
|
elem->rmsgnum+=buffers;
|
||||||
|
|||||||
@ -106,7 +106,8 @@ u32bits addr_hash(const ioa_addr *addr)
|
|||||||
if (addr->ss.sa_family == AF_INET) {
|
if (addr->ss.sa_family == AF_INET) {
|
||||||
ret = hash_int32(addr->s4.sin_addr.s_addr + addr->s4.sin_port);
|
ret = hash_int32(addr->s4.sin_addr.s_addr + addr->s4.sin_port);
|
||||||
} else {
|
} else {
|
||||||
const u64bits *a = (const u64bits *) (&(addr->s6.sin6_addr));
|
u64bits a[2];
|
||||||
|
ns_bcopy(&(addr->s6.sin6_addr), &a, sizeof(a));
|
||||||
ret = (u32bits)((hash_int64(a[0])<<3) + (hash_int64(a[1] + addr->s6.sin6_port)));
|
ret = (u32bits)((hash_int64(a[0])<<3) + (hash_int64(a[1] + addr->s6.sin6_port)));
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -121,7 +122,8 @@ u32bits addr_hash_no_port(const ioa_addr *addr)
|
|||||||
if (addr->ss.sa_family == AF_INET) {
|
if (addr->ss.sa_family == AF_INET) {
|
||||||
ret = hash_int32(addr->s4.sin_addr.s_addr);
|
ret = hash_int32(addr->s4.sin_addr.s_addr);
|
||||||
} else {
|
} else {
|
||||||
const u64bits *a = (const u64bits *) (&(addr->s6.sin6_addr));
|
u64bits a[2];
|
||||||
|
ns_bcopy(&(addr->s6.sin6_addr), &a, sizeof(a));
|
||||||
ret = (u32bits)((hash_int64(a[0])<<3) + (hash_int64(a[1])));
|
ret = (u32bits)((hash_int64(a[0])<<3) + (hash_int64(a[1])));
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -153,10 +155,8 @@ int addr_eq(const ioa_addr* a1, const ioa_addr *a2) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
} else if(a1->ss.sa_family == AF_INET6 && a1->s6.sin6_port == a2->s6.sin6_port) {
|
} else if(a1->ss.sa_family == AF_INET6 && a1->s6.sin6_port == a2->s6.sin6_port) {
|
||||||
const u64bits *p1=(const u64bits *)(&(a1->s6.sin6_addr));
|
if( memcmp(&(a1->s6.sin6_addr), &(a2->s6.sin6_addr) ,sizeof(struct in6_addr)) == 0 ) {
|
||||||
const u64bits *p2=(const u64bits *)(&(a2->s6.sin6_addr));
|
return 1;
|
||||||
if(p1[0]==p2[0] && p1[1]==p2[1]) {
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -175,11 +175,9 @@ int addr_eq_no_port(const ioa_addr* a1, const ioa_addr *a2) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
} else if(a1->ss.sa_family == AF_INET6) {
|
} else if(a1->ss.sa_family == AF_INET6) {
|
||||||
const u64bits *p1=(const u64bits *)(&(a1->s6.sin6_addr));
|
if( memcmp(&(a1->s6.sin6_addr), &(a2->s6.sin6_addr) ,sizeof(struct in6_addr)) == 0 ) {
|
||||||
const u64bits *p2=(const u64bits *)(&(a2->s6.sin6_addr));
|
return 1;
|
||||||
if(p1[0]==p2[0] && p1[1]==p2[1]) {
|
}
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -1296,7 +1296,9 @@ u64bits stun_attr_get_reservation_token_value(stun_attr_ref attr) {
|
|||||||
if(attr) {
|
if(attr) {
|
||||||
const u08bits* value = stun_attr_get_value(attr);
|
const u08bits* value = stun_attr_get_value(attr);
|
||||||
if(value && (stun_attr_get_len(attr) == 8)) {
|
if(value && (stun_attr_get_len(attr) == 8)) {
|
||||||
return nswap64(((const u64bits*)value)[0]);
|
u64bits token;
|
||||||
|
ns_bcopy(value, &token, sizeof(u64bits));
|
||||||
|
return nswap64(token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -2432,8 +2434,9 @@ static int encode_oauth_token_gcm(const u08bits *server_name, encoded_oauth_toke
|
|||||||
ns_bcopy(dtoken->enc_block.mac_key,orig_field+len,dtoken->enc_block.key_length);
|
ns_bcopy(dtoken->enc_block.mac_key,orig_field+len,dtoken->enc_block.key_length);
|
||||||
len += dtoken->enc_block.key_length;
|
len += dtoken->enc_block.key_length;
|
||||||
|
|
||||||
*((uint64_t*)(orig_field+len)) = nswap64(dtoken->enc_block.timestamp);
|
uint64_t ts = nswap64(dtoken->enc_block.timestamp);
|
||||||
len += 8;
|
ns_bcopy( &ts, (orig_field+len), sizeof(ts));
|
||||||
|
len += sizeof(ts);
|
||||||
|
|
||||||
*((uint32_t*)(orig_field+len)) = nswap32(dtoken->enc_block.lifetime);
|
*((uint32_t*)(orig_field+len)) = nswap32(dtoken->enc_block.lifetime);
|
||||||
len += 4;
|
len += 4;
|
||||||
@ -2608,11 +2611,15 @@ static int decode_oauth_token_gcm(const u08bits *server_name, const encoded_oaut
|
|||||||
ns_bcopy(decoded_field+len,dtoken->enc_block.mac_key,dtoken->enc_block.key_length);
|
ns_bcopy(decoded_field+len,dtoken->enc_block.mac_key,dtoken->enc_block.key_length);
|
||||||
len += dtoken->enc_block.key_length;
|
len += dtoken->enc_block.key_length;
|
||||||
|
|
||||||
dtoken->enc_block.timestamp = nswap64(*((uint64_t*)(decoded_field+len)));
|
uint64_t ts;
|
||||||
len += 8;
|
ns_bcopy((decoded_field+len),&ts,sizeof(ts));
|
||||||
|
dtoken->enc_block.timestamp = nswap64(ts);
|
||||||
|
len += sizeof(ts);
|
||||||
|
|
||||||
dtoken->enc_block.lifetime = nswap32(*((uint32_t*)(decoded_field+len)));
|
uint32_t lt;
|
||||||
len += 4;
|
ns_bcopy((decoded_field+len),<,sizeof(lt));
|
||||||
|
dtoken->enc_block.lifetime = nswap32(lt);
|
||||||
|
len += sizeof(lt);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user