|
|
@ -15,6 +15,7 @@
|
|
|
|
/* Libowfat */
|
|
|
|
/* Libowfat */
|
|
|
|
#include "scan.h"
|
|
|
|
#include "scan.h"
|
|
|
|
#include "byte.h"
|
|
|
|
#include "byte.h"
|
|
|
|
|
|
|
|
#include "io.h"
|
|
|
|
|
|
|
|
|
|
|
|
/* Opentracker */
|
|
|
|
/* Opentracker */
|
|
|
|
#include "trackerlogic.h"
|
|
|
|
#include "trackerlogic.h"
|
|
|
@ -163,9 +164,9 @@ size_t return_peers_for_torrent( ot_hash *hash, size_t amount, char *reply, int
|
|
|
|
if( is_tcp )
|
|
|
|
if( is_tcp )
|
|
|
|
r += sprintf( r, "d8:completei%zde10:incompletei%zde8:intervali%ie5:peers%zd:", peer_list->seed_count, peer_list->peer_count-peer_list->seed_count, OT_CLIENT_REQUEST_INTERVAL_RANDOM, 6*amount );
|
|
|
|
r += sprintf( r, "d8:completei%zde10:incompletei%zde8:intervali%ie5:peers%zd:", peer_list->seed_count, peer_list->peer_count-peer_list->seed_count, OT_CLIENT_REQUEST_INTERVAL_RANDOM, 6*amount );
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
*(ot_dword*)(r+0) = htonl( OT_CLIENT_REQUEST_INTERVAL_RANDOM );
|
|
|
|
*(uint32_t*)(r+0) = htonl( OT_CLIENT_REQUEST_INTERVAL_RANDOM );
|
|
|
|
*(ot_dword*)(r+4) = htonl( peer_list->peer_count );
|
|
|
|
*(uint32_t*)(r+4) = htonl( peer_list->peer_count );
|
|
|
|
*(ot_dword*)(r+8) = htonl( peer_list->seed_count );
|
|
|
|
*(uint32_t*)(r+8) = htonl( peer_list->seed_count );
|
|
|
|
r += 12;
|
|
|
|
r += 12;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -216,7 +217,7 @@ size_t return_udp_scrape_for_torrent( ot_hash *hash, char *reply ) {
|
|
|
|
if( !exactmatch ) {
|
|
|
|
if( !exactmatch ) {
|
|
|
|
memset( reply, 0, 12);
|
|
|
|
memset( reply, 0, 12);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
ot_dword *r = (ot_dword*) reply;
|
|
|
|
uint32_t *r = (uint32_t*) reply;
|
|
|
|
|
|
|
|
|
|
|
|
if( clean_single_torrent( torrent ) ) {
|
|
|
|
if( clean_single_torrent( torrent ) ) {
|
|
|
|
vector_remove_torrent( torrents_list, torrent );
|
|
|
|
vector_remove_torrent( torrents_list, torrent );
|
|
|
@ -273,8 +274,8 @@ size_t remove_peer_from_torrent( ot_hash *hash, ot_peer *peer, char *reply, int
|
|
|
|
return sprintf( reply, "d8:completei0e10:incompletei0e8:intervali%ie5:peers0:e", OT_CLIENT_REQUEST_INTERVAL_RANDOM );
|
|
|
|
return sprintf( reply, "d8:completei0e10:incompletei0e8:intervali%ie5:peers0:e", OT_CLIENT_REQUEST_INTERVAL_RANDOM );
|
|
|
|
|
|
|
|
|
|
|
|
/* Create fake packet to satisfy parser on the other end */
|
|
|
|
/* Create fake packet to satisfy parser on the other end */
|
|
|
|
((ot_dword*)reply)[2] = htonl( OT_CLIENT_REQUEST_INTERVAL_RANDOM );
|
|
|
|
((uint32_t*)reply)[2] = htonl( OT_CLIENT_REQUEST_INTERVAL_RANDOM );
|
|
|
|
((ot_dword*)reply)[3] = ((ot_dword*)reply)[4] = 0;
|
|
|
|
((uint32_t*)reply)[3] = ((uint32_t*)reply)[4] = 0;
|
|
|
|
return (size_t)20;
|
|
|
|
return (size_t)20;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -299,9 +300,9 @@ exit_loop:
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* else { Handle UDP reply */
|
|
|
|
/* else { Handle UDP reply */
|
|
|
|
((ot_dword*)reply)[2] = htonl( OT_CLIENT_REQUEST_INTERVAL_RANDOM );
|
|
|
|
((uint32_t*)reply)[2] = htonl( OT_CLIENT_REQUEST_INTERVAL_RANDOM );
|
|
|
|
((ot_dword*)reply)[3] = peer_list->peer_count - peer_list->seed_count;
|
|
|
|
((uint32_t*)reply)[3] = peer_list->peer_count - peer_list->seed_count;
|
|
|
|
((ot_dword*)reply)[4] = peer_list->seed_count;
|
|
|
|
((uint32_t*)reply)[4] = peer_list->seed_count;
|
|
|
|
|
|
|
|
|
|
|
|
mutex_bucket_unlock_by_hash( hash );
|
|
|
|
mutex_bucket_unlock_by_hash( hash );
|
|
|
|
return (size_t)20;
|
|
|
|
return (size_t)20;
|
|
|
@ -322,6 +323,7 @@ int trackerlogic_init( const char * const serverdir ) {
|
|
|
|
#ifdef WANT_TRACKER_SYNC
|
|
|
|
#ifdef WANT_TRACKER_SYNC
|
|
|
|
sync_init( );
|
|
|
|
sync_init( );
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
stats_init( );
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -343,6 +345,7 @@ void trackerlogic_deinit( void ) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Deinitialise background worker threads */
|
|
|
|
/* Deinitialise background worker threads */
|
|
|
|
|
|
|
|
stats_deinit( );
|
|
|
|
#ifdef WANT_TRACKER_SYNC
|
|
|
|
#ifdef WANT_TRACKER_SYNC
|
|
|
|
sync_deinit( );
|
|
|
|
sync_deinit( );
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|