Browse Source

Fixed one leak from struct_http

dynamic-accesslists
erdgeist 17 years ago
parent
commit
ddd85ec7e0
  1. 12
      opentracker.c

12
opentracker.c

@ -610,8 +610,9 @@ static void handle_read( const int64 clientsocket ) {
ssize_t l; ssize_t l;
if( ( l = io_tryread( clientsocket, static_inbuf, sizeof static_inbuf ) ) <= 0 ) { if( ( l = io_tryread( clientsocket, static_inbuf, sizeof static_inbuf ) ) <= 0 ) {
if( h && ( h->flag & STRUCT_HTTP_FLAG_ARRAY_USED ) ) { if( h ) {
array_reset( &h->request ); if( h->flag & STRUCT_HTTP_FLAG_ARRAY_USED )
array_reset( &h->request );
free( h ); free( h );
} }
io_close( clientsocket ); io_close( clientsocket );
@ -645,7 +646,8 @@ static void handle_read( const int64 clientsocket ) {
static void handle_write( const int64 clientsocket ) { static void handle_write( const int64 clientsocket ) {
struct http_data* h=io_getcookie( clientsocket ); struct http_data* h=io_getcookie( clientsocket );
if( !h || ( iob_send( clientsocket, &h->batch ) <= 0 ) ) { if( !h ) return;
if( iob_send( clientsocket, &h->batch ) <= 0 ) {
iob_reset( &h->batch ); iob_reset( &h->batch );
io_close( clientsocket ); io_close( clientsocket );
free( h ); free( h );
@ -666,14 +668,12 @@ static void handle_accept( const int64 serversocket ) {
io_close( i ); io_close( i );
continue; continue;
} }
io_setcookie( i, h );
io_wantread( i ); io_wantread( i );
byte_zero( h, sizeof( struct http_data ) ); byte_zero( h, sizeof( struct http_data ) );
memmove( h->ip, ip, sizeof( ip ) ); memmove( h->ip, ip, sizeof( ip ) );
io_setcookie( i, h );
++ot_overall_tcp_connections; ++ot_overall_tcp_connections;
/* That breaks taia encapsulation. But there is no way to take system /* That breaks taia encapsulation. But there is no way to take system

Loading…
Cancel
Save