Browse Source

fixed udp remoteport handling

dynamic-accesslists
denis 18 years ago
parent
commit
92213c286a
  1. 10
      opentracker.c

10
opentracker.c

@ -563,10 +563,10 @@ static void handle_udp4( int64 serversocket ) {
unsigned long *inpacket = (unsigned long*)static_inbuf; unsigned long *inpacket = (unsigned long*)static_inbuf;
unsigned long *outpacket = (unsigned long*)static_outbuf; unsigned long *outpacket = (unsigned long*)static_outbuf;
unsigned long numwant, left, event; unsigned long numwant, left, event;
uint16 port; uint16 port, remoteport;
size_t r; size_t r;
r = socket_recv4( serversocket, static_inbuf, 8192, remoteip, &port); r = socket_recv4( serversocket, static_inbuf, 8192, remoteip, &remoteport);
/* Minimum udp tracker packet size, also catches error */ /* Minimum udp tracker packet size, also catches error */
if( r < 16 ) if( r < 16 )
@ -576,7 +576,7 @@ static void handle_udp4( int64 serversocket ) {
case 0: /* This is a connect action */ case 0: /* This is a connect action */
outpacket[0] = 0; outpacket[1] = inpacket[3]; outpacket[0] = 0; outpacket[1] = inpacket[3];
outpacket[2] = inpacket[0]; outpacket[3] = inpacket[1]; outpacket[2] = inpacket[0]; outpacket[3] = inpacket[1];
socket_send4( serversocket, static_outbuf, 16, remoteip, port ); socket_send4( serversocket, static_outbuf, 16, remoteip, remoteport );
break; break;
case 1: /* This is an announce action */ case 1: /* This is an announce action */
/* Minimum udp announce packet size */ /* Minimum udp announce packet size */
@ -611,7 +611,7 @@ static void handle_udp4( int64 serversocket ) {
outpacket[1] = inpacket[12/4]; outpacket[1] = inpacket[12/4];
outpacket[2] = htonl( OT_CLIENT_REQUEST_INTERVAL_RANDOM ); outpacket[2] = htonl( OT_CLIENT_REQUEST_INTERVAL_RANDOM );
outpacket[3] = outpacket[4] = 0; outpacket[3] = outpacket[4] = 0;
socket_send4( serversocket, static_outbuf, 20, remoteip, port ); socket_send4( serversocket, static_outbuf, 20, remoteip, remoteport );
} else { } else {
torrent = add_peer_to_torrent( hash, &peer ); torrent = add_peer_to_torrent( hash, &peer );
if( !torrent ) if( !torrent )
@ -620,7 +620,7 @@ static void handle_udp4( int64 serversocket ) {
outpacket[0] = htonl( 1 ); outpacket[0] = htonl( 1 );
outpacket[1] = inpacket[12/4]; outpacket[1] = inpacket[12/4];
r = 8 + return_peers_for_torrent( torrent, numwant, static_outbuf + 8, 0 ); r = 8 + return_peers_for_torrent( torrent, numwant, static_outbuf + 8, 0 );
socket_send4( serversocket, static_outbuf, r, remoteip, port ); socket_send4( serversocket, static_outbuf, r, remoteip, remoteport );
} }
break; break;
} }

Loading…
Cancel
Save