mirror of
git://erdgeist.org/opentracker
synced 2025-03-13 06:01:07 +00:00
Fixed one leak from struct_http
This commit is contained in:
parent
8098adb48e
commit
ddd85ec7e0
@ -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…
x
Reference in New Issue
Block a user