mirror of
git://erdgeist.org/opentracker
synced 2025-01-14 00:40:09 +00:00
Debug file descriptors
This commit is contained in:
parent
6c62ed7928
commit
07a604e3d6
2
Makefile
2
Makefile
@ -1,5 +1,5 @@
|
|||||||
CC?=gcc
|
CC?=gcc
|
||||||
FEATURES=#-DWANT_IP_FROM_QUERY_STRING -DWANT_BLACKLIST -DWANT_CLOSED_TRACKER
|
FEATURES=#-D_DEBUG_FDS -DWANT_IP_FROM_QUERY_STRING -DWANT_BLACKLIST -DWANT_CLOSED_TRACKER
|
||||||
#DEBUG_OPTS=-g -ggdb -pg # -fprofile-arcs -ftest-coverage
|
#DEBUG_OPTS=-g -ggdb -pg # -fprofile-arcs -ftest-coverage
|
||||||
DEBUG_OPTS=-s -Os
|
DEBUG_OPTS=-s -Os
|
||||||
CFLAGS+=-I../libowfat -Wall -pipe -m64 # -pedantic -ansi
|
CFLAGS+=-I../libowfat -Wall -pipe -m64 # -pedantic -ansi
|
||||||
|
@ -35,6 +35,10 @@ static const size_t SUCCESS_HTTP_SIZE_OFF = 17;
|
|||||||
/* To always have space for error messages ;) */
|
/* To always have space for error messages ;) */
|
||||||
static char static_scratch[8192];
|
static char static_scratch[8192];
|
||||||
|
|
||||||
|
#ifdef _DEBUG_FDS
|
||||||
|
static char fd_debug_space[0x10000];
|
||||||
|
#endif
|
||||||
|
|
||||||
static void carp(const char* routine) {
|
static void carp(const char* routine) {
|
||||||
buffer_puts(buffer_2,routine);
|
buffer_puts(buffer_2,routine);
|
||||||
buffer_puts(buffer_2,": ");
|
buffer_puts(buffer_2,": ");
|
||||||
@ -70,10 +74,18 @@ void senddata(int64 s, struct http_data* h, char *buffer, size_t size ) {
|
|||||||
if( h ) array_reset(&h->r);
|
if( h ) array_reset(&h->r);
|
||||||
written_size = write( s, buffer, size );
|
written_size = write( s, buffer, size );
|
||||||
if( ( written_size < 0 ) || ( written_size == size ) ) {
|
if( ( written_size < 0 ) || ( written_size == size ) ) {
|
||||||
|
#ifdef _DEBUG_FDS
|
||||||
|
if( !fd_debug_space[s] ) fprintf( stderr, "close on non-open fd\n" );
|
||||||
|
fd_debug_space[s] = 0;
|
||||||
|
#endif
|
||||||
free(h); io_close( s );
|
free(h); io_close( s );
|
||||||
} else {
|
} else {
|
||||||
/* here we would take a copy of the buffer and remember it */
|
/* here we would take a copy of the buffer and remember it */
|
||||||
fprintf( stderr, "Should have handled this.\n" );
|
fprintf( stderr, "Should have handled this.\n" );
|
||||||
|
#ifdef _DEBUG_FDS
|
||||||
|
if( !fd_debug_space[s] ) fprintf( stderr, "close on non-open fd\n" );
|
||||||
|
fd_debug_space[s] = 0;
|
||||||
|
#endif
|
||||||
free(h); io_close( s );
|
free(h); io_close( s );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -337,6 +349,10 @@ e404:
|
|||||||
senddata( s, h, static_scratch + reply_off, reply_size );
|
senddata( s, h, static_scratch + reply_off, reply_size );
|
||||||
} else {
|
} else {
|
||||||
if( h ) array_reset(&h->r);
|
if( h ) array_reset(&h->r);
|
||||||
|
#ifdef _DEBUG_FDS
|
||||||
|
if( !fd_debug_space[s] ) fprintf( stderr, "close on non-open fd\n" );
|
||||||
|
fd_debug_space[s] = 0;
|
||||||
|
#endif
|
||||||
free( h ); io_close( s );
|
free( h ); io_close( s );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -349,6 +365,15 @@ void graceful( int s ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _DEBUG_FDS
|
||||||
|
void count_fds( int s ) {
|
||||||
|
int i, count = 0;
|
||||||
|
for( i=0; i<sizeof(fd_debug_space); ++i )
|
||||||
|
if( fd_debug_space[i] ) ++count;
|
||||||
|
fprintf( stderr, "Open fds here: %i\n", count );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void usage( char *name ) {
|
void usage( char *name ) {
|
||||||
fprintf( stderr, "Usage: %s [-i serverip] [-p serverport] [-d serverdirectory]"
|
fprintf( stderr, "Usage: %s [-i serverip] [-p serverport] [-d serverdirectory]"
|
||||||
#ifdef WANT_CLOSED_TRACKER
|
#ifdef WANT_CLOSED_TRACKER
|
||||||
@ -394,6 +419,10 @@ void handle_read( int64 clientsocket ) {
|
|||||||
array_reset(&h->r);
|
array_reset(&h->r);
|
||||||
free(h);
|
free(h);
|
||||||
}
|
}
|
||||||
|
#ifdef _DEBUG_FDS
|
||||||
|
if( !fd_debug_space[clientsocket] ) fprintf( stderr, "close on non-open fd\n" );
|
||||||
|
fd_debug_space[clientsocket] = 0;
|
||||||
|
#endif
|
||||||
io_close(clientsocket);
|
io_close(clientsocket);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -423,6 +452,11 @@ void handle_accept( int64 serversocket ) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _DEBUG_FDS
|
||||||
|
if( fd_debug_space[i] ) fprintf( stderr, "double use of fd: %i\n", (int)i );
|
||||||
|
fd_debug_space[i] = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
io_wantread( i );
|
io_wantread( i );
|
||||||
|
|
||||||
byte_zero(h,sizeof(struct http_data));
|
byte_zero(h,sizeof(struct http_data));
|
||||||
@ -448,6 +482,10 @@ void handle_timeouted( ) {
|
|||||||
array_reset( &h->r );
|
array_reset( &h->r );
|
||||||
free( h );
|
free( h );
|
||||||
}
|
}
|
||||||
|
#ifdef _DEBUG_FDS
|
||||||
|
if( !fd_debug_space[i] ) fprintf( stderr, "close on non-open fd\n" );
|
||||||
|
fd_debug_space[i] = 0;
|
||||||
|
#endif
|
||||||
io_close(i);
|
io_close(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -522,6 +560,9 @@ int main( int argc, char **argv ) {
|
|||||||
|
|
||||||
signal( SIGPIPE, SIG_IGN );
|
signal( SIGPIPE, SIG_IGN );
|
||||||
signal( SIGINT, graceful );
|
signal( SIGINT, graceful );
|
||||||
|
#ifdef _DEBUG_FDS
|
||||||
|
signal( SIGINFO, count_fds );
|
||||||
|
#endif
|
||||||
if( init_logic( serverdir ) == -1 )
|
if( init_logic( serverdir ) == -1 )
|
||||||
panic("Logic not started");
|
panic("Logic not started");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user