mirror of
git://erdgeist.org/opentracker
synced 2025-02-04 02:57:07 +00:00
account downloaded before early returns
This commit is contained in:
parent
65675cd4da
commit
c094695add
6
README
6
README
@ -15,9 +15,9 @@ cd opentracker-1.0
|
||||
make
|
||||
./opentracker
|
||||
|
||||
This tracker is open in a sense that everyone announcing a torrent is welcome to do so and will be informed about anyone else announcing the same torrent. Unless
|
||||
-DWANT_IP_FROM_QUERY_STRING is enabled (which is meant for debugging purposes only), only source IPs are accepted. The tracker implements a minimal set of
|
||||
essential features only but was able respond to far more than 10000 requests per second on a Sun Fire 2200 M2 (thats where we found no more clients able to fire
|
||||
This tracker is open in a sense that everyone announcing a torrent is welcome to do so and will be informed about anyone else announcing the same torrent. Unless
|
||||
-DWANT_IP_FROM_QUERY_STRING is enabled (which is meant for debugging purposes only), only source IPs are accepted. The tracker implements a minimal set of
|
||||
essential features only but was able respond to far more than 10000 requests per second on a Sun Fire 2200 M2 (thats where we found no more clients able to fire
|
||||
more of our testsuite.sh script).
|
||||
|
||||
Some tweaks you may want to try under FreeBSD:
|
||||
|
@ -1,8 +1,8 @@
|
||||
Q: Why is there no v6-support in opentracker?
|
||||
|
||||
A: Although I tried very hard, implementing v6 right now would be a terrible waste of bandwidth, there is no compact format for v6 addresses, so instead of
|
||||
answering "d5:peers6:AAAAPPe" I'd have to send "d5:peersld2:ip39:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA4:port2:PPPPeee" for a single peer. Even if there was a
|
||||
A: Although I tried very hard, implementing v6 right now would be a terrible waste of bandwidth, there is no compact format for v6 addresses, so instead of
|
||||
answering "d5:peers6:AAAAPPe" I'd have to send "d5:peersld2:ip39:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA4:port2:PPPPeee" for a single peer. Even if there was a
|
||||
compact mode, v6 addresses still would eat up thrice the memory, v4 addresses take. This, however, wouldn't be a show stopper.
|
||||
|
||||
Other problems concern efficient peer selection for obviously v6-capable peers and how to select peers for non-v6 clients. v6 addresses eat up more memory on the
|
||||
Other problems concern efficient peer selection for obviously v6-capable peers and how to select peers for non-v6 clients. v6 addresses eat up more memory on the
|
||||
host, too ;)
|
||||
|
@ -285,7 +285,7 @@ SCRAPE_WORKAROUND:
|
||||
/* Enough for http header + whole scrape string */
|
||||
if( ( reply_size = return_scrape_for_torrent( hash, SUCCESS_HTTP_HEADER_LENGTH + static_scratch ) ) <= 0 ) HTTPERROR_500;
|
||||
break;
|
||||
case 8:
|
||||
case 8:
|
||||
if( byte_diff(data,8,"announce")) HTTPERROR_404;
|
||||
|
||||
ANNOUNCE_WORKAROUND:
|
||||
@ -383,7 +383,7 @@ ANNOUNCE_WORKAROUND:
|
||||
if( byte_diff(data,11,"mrtg_scrape")) HTTPERROR_404;
|
||||
|
||||
t = time( NULL ) - ot_start_time;
|
||||
reply_size = sprintf( static_scratch + SUCCESS_HTTP_HEADER_LENGTH,
|
||||
reply_size = sprintf( static_scratch + SUCCESS_HTTP_HEADER_LENGTH,
|
||||
"%i\n%i\nUp: %i seconds (%i hours)\nPretuned by german engineers, currently handling %i connections per second.",
|
||||
ot_overall_connections, ot_overall_successfulannounces, (int)t, (int)(t / 3600), (int)ot_overall_connections / ( (int)t ? (int)t : 1 ) );
|
||||
break;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* This software was written by Dirk Engling <erdgeist@erdgeist.org>
|
||||
/* This software was written by Dirk Engling <erdgeist@erdgeist.org>
|
||||
It is considered beerware. Prost. Skol. Cheers or whatever. */
|
||||
|
||||
#include "scan.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* This software was written by Dirk Engling <erdgeist@erdgeist.org>
|
||||
/* This software was written by Dirk Engling <erdgeist@erdgeist.org>
|
||||
It is considered beerware. Prost. Skol. Cheers or whatever. */
|
||||
|
||||
#ifndef __SCAN_URLENCODED_QUERY_H__
|
||||
|
@ -195,6 +195,9 @@ ot_torrent *add_peer_to_torrent( ot_hash *hash, ot_peer *peer ) {
|
||||
peer_pool = &torrent->peer_list->peers[0];
|
||||
peer_dest = vector_find_or_insert( peer_pool, (void*)peer, sizeof( ot_peer ), OT_PEER_COMPARE_SIZE, &exactmatch );
|
||||
|
||||
if( OT_FLAG(peer) & PEER_FLAG_COMPLETED )
|
||||
torrent->peer_list->downloaded++;
|
||||
|
||||
/* If we hadn't had a match in current pool, create peer there and
|
||||
remove it from all older pools */
|
||||
if( !exactmatch ) {
|
||||
@ -215,8 +218,6 @@ ot_torrent *add_peer_to_torrent( ot_hash *hash, ot_peer *peer ) {
|
||||
if( !(OT_FLAG(peer_dest) & PEER_FLAG_SEEDING ) && (OT_FLAG(peer) & PEER_FLAG_SEEDING ) )
|
||||
torrent->peer_list->seed_count[0]++;
|
||||
}
|
||||
if( OT_FLAG(peer) & PEER_FLAG_COMPLETED )
|
||||
torrent->peer_list->downloaded++;
|
||||
|
||||
return torrent;
|
||||
}
|
||||
@ -435,13 +436,13 @@ void remove_peer_from_torrent( ot_hash *hash, ot_peer *peer ) {
|
||||
int exactmatch, i;
|
||||
ot_vector *torrents_list = &all_torrents[*hash[0]];
|
||||
ot_torrent *torrent = binary_search( hash, torrents_list->data, torrents_list->size, sizeof( ot_torrent ), OT_HASH_COMPARE_SIZE, &exactmatch );
|
||||
|
||||
|
||||
if( !exactmatch ) return;
|
||||
|
||||
|
||||
/* Maybe this does the job */
|
||||
if( clean_peerlist( NOW, torrent->peer_list ) ) {
|
||||
#ifdef WANT_CLOSED_TRACKER
|
||||
if( !g_closedtracker )
|
||||
if( !g_closedtracker )
|
||||
#endif
|
||||
vector_remove_torrent( torrents_list, hash );
|
||||
return;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* This software was written by Dirk Engling <erdgeist@erdgeist.org>
|
||||
/* This software was written by Dirk Engling <erdgeist@erdgeist.org>
|
||||
It is considered beerware. Prost. Skol. Cheers or whatever. */
|
||||
|
||||
#ifndef __TRACKERLOGIC_H__
|
||||
@ -44,7 +44,7 @@ typedef time_t ot_time;
|
||||
typedef struct {
|
||||
void *data;
|
||||
size_t size;
|
||||
size_t space;
|
||||
size_t space;
|
||||
} ot_vector;
|
||||
|
||||
typedef struct {
|
||||
|
Loading…
x
Reference in New Issue
Block a user