|
|
|
@ -38,6 +38,7 @@ time_t g_now_seconds;
|
|
|
|
|
char * g_redirecturl = NULL;
|
|
|
|
|
uint32_t g_tracker_id;
|
|
|
|
|
volatile int g_opentracker_running = 1;
|
|
|
|
|
int g_self_pipe[2];
|
|
|
|
|
|
|
|
|
|
static char * g_serverdir = NULL;
|
|
|
|
|
|
|
|
|
@ -216,6 +217,8 @@ static void server_mainloop( ) {
|
|
|
|
|
handle_accept( sock );
|
|
|
|
|
else if( (intptr_t)cookie == FLAG_UDP )
|
|
|
|
|
handle_udp6( sock, &ws );
|
|
|
|
|
else if( (intptr_t)cookie == FLAG_SELFPIPE ) { printf( "woke up\n" );
|
|
|
|
|
io_tryread( sock, ws.inbuf, G_INBUF_SIZE ); }
|
|
|
|
|
else
|
|
|
|
|
handle_read( sock, &ws );
|
|
|
|
|
}
|
|
|
|
@ -500,6 +503,15 @@ while( scanon ) {
|
|
|
|
|
|
|
|
|
|
g_now_seconds = time( NULL );
|
|
|
|
|
|
|
|
|
|
/* Create our self pipe which allows us to interrupt mainloops
|
|
|
|
|
io_wait in case some data is available to send out */
|
|
|
|
|
if( pipe( g_self_pipe ) == -1 )
|
|
|
|
|
panic( "selfpipe failed: " );
|
|
|
|
|
if( !io_fd( g_self_pipe[0] ) )
|
|
|
|
|
panic( "selfpipe io_fd failed: " );
|
|
|
|
|
io_setcookie( g_self_pipe[0], (void*)FLAG_SELFPIPE );
|
|
|
|
|
io_wantread( g_self_pipe[0] );
|
|
|
|
|
|
|
|
|
|
/* Init all sub systems. This call may fail with an exit() */
|
|
|
|
|
trackerlogic_init( );
|
|
|
|
|
|
|
|
|
|