Browse Source

Fix endianess issues, also obey number of peers requested in udp announces

dynamic-accesslists
erdgeist 17 years ago
parent
commit
cadf1803e1
  1. 4
      ot_udp.c
  2. 4
      trackerlogic.c

4
ot_udp.c

@ -84,10 +84,12 @@ void handle_udp4( int64 serversocket ) {
/* if( !udp_test_connectionid( inpacket, remoteip )) /* if( !udp_test_connectionid( inpacket, remoteip ))
fprintf( stderr, "UDP Connection id missmatch.\n" ); */ fprintf( stderr, "UDP Connection id missmatch.\n" ); */
numwant = 200;
/* We do only want to know, if it is zero */ /* We do only want to know, if it is zero */
left = inpacket[64/4] | inpacket[68/4]; left = inpacket[64/4] | inpacket[68/4];
numwant = ntohl( inpacket[92/4] );
if (numwant > 200) numwant = 200;
event = ntohl( inpacket[80/4] ); event = ntohl( inpacket[80/4] );
port = *(uint16_t*)( static_inbuf + 96 ); port = *(uint16_t*)( static_inbuf + 96 );
hash = (ot_hash*)( static_inbuf + 16 ); hash = (ot_hash*)( static_inbuf + 16 );

4
trackerlogic.c

@ -304,8 +304,8 @@ exit_loop:
/* else { Handle UDP reply */ /* else { Handle UDP reply */
((uint32_t*)reply)[2] = htonl( OT_CLIENT_REQUEST_INTERVAL_RANDOM ); ((uint32_t*)reply)[2] = htonl( OT_CLIENT_REQUEST_INTERVAL_RANDOM );
((uint32_t*)reply)[3] = peer_list->peer_count - peer_list->seed_count; ((uint32_t*)reply)[3] = htonl( peer_list->peer_count - peer_list->seed_count );
((uint32_t*)reply)[4] = peer_list->seed_count; ((uint32_t*)reply)[4] = htonl( peer_list->seed_count);
mutex_bucket_unlock_by_hash( hash ); mutex_bucket_unlock_by_hash( hash );
return (size_t)20; return (size_t)20;

Loading…
Cancel
Save