struct http_data* h=io_getcookie( socket );
if( h ) {
if( h->flag & STRUCT_HTTP_FLAG_IOB_USED )
- iob_reset( &h->batch );
+ iob_reset( &h->data.batch );
if( h->flag & STRUCT_HTTP_FLAG_ARRAY_USED )
- array_reset( &h->request );
+ array_reset( &h->data.request );
if( h->flag & STRUCT_HTTP_FLAG_WAITINGFORTASK )
mutex_workqueue_canceltask( socket );
free( h );
}
/* If we get the whole request in one packet, handle it without copying */
- if( !array_start( &h->request ) ) {
+ if( !array_start( &h->data.request ) ) {
if( memchr( static_inbuf, '\n', l ) )
return http_handle_request( clientsocket, static_inbuf, l );
h->flag |= STRUCT_HTTP_FLAG_ARRAY_USED;
- array_catb( &h->request, static_inbuf, l );
+ array_catb( &h->data.request, static_inbuf, l );
return 0;
}
h->flag |= STRUCT_HTTP_FLAG_ARRAY_USED;
- array_catb( &h->request, static_inbuf, l );
+ array_catb( &h->data.request, static_inbuf, l );
- if( array_failed( &h->request ) )
+ if( array_failed( &h->data.request ) )
return http_issue_error( clientsocket, CODE_HTTPERROR_500 );
- if( array_bytes( &h->request ) > 8192 )
+ if( array_bytes( &h->data.request ) > 8192 )
return http_issue_error( clientsocket, CODE_HTTPERROR_500 );
- if( memchr( array_start( &h->request ), '\n', array_bytes( &h->request ) ) )
- return http_handle_request( clientsocket, array_start( &h->request ), array_bytes( &h->request ) );
+ if( memchr( array_start( &h->data.request ), '\n', array_bytes( &h->data.request ) ) )
+ return http_handle_request( clientsocket, array_start( &h->data.request ), array_bytes( &h->data.request ) );
return 0;
}
static void handle_write( const int64 clientsocket ) {
struct http_data* h=io_getcookie( clientsocket );
- if( !h || ( iob_send( clientsocket, &h->batch ) <= 0 ) )
+ if( !h || ( iob_send( clientsocket, &h->data.batch ) <= 0 ) )
handle_dead( clientsocket );
}
/* whoever sends data is not interested in its input-array */
if( h && ( h->flag & STRUCT_HTTP_FLAG_ARRAY_USED ) ) {
h->flag &= ~STRUCT_HTTP_FLAG_ARRAY_USED;
- array_reset( &h->request );
+ array_reset( &h->data.request );
}
written_size = write( client_socket, buffer, size );
return;
}
- iob_reset( &h->batch );
+ iob_reset( &h->data.batch );
memmove( outbuf, buffer + written_size, size - written_size );
- iob_addbuf_free( &h->batch, outbuf, size - written_size );
+ iob_addbuf_free( &h->data.batch, outbuf, size - written_size );
h->flag |= STRUCT_HTTP_FLAG_IOB_USED;
/* writeable short data sockets just have a tcp timeout */
free it now */
if( h->flag & STRUCT_HTTP_FLAG_ARRAY_USED ) {
h->flag &= ~STRUCT_HTTP_FLAG_ARRAY_USED;
- array_reset( &h->request );
+ array_reset( &h->data.request );
}
/* If we came here, wait for the answer is over */
else
header_size = sprintf( header, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\nContent-Length: %zd\r\n\r\n", size );
- iob_reset( &h->batch );
- iob_addbuf_free( &h->batch, header, header_size );
+ iob_reset( &h->data.batch );
+ iob_addbuf_free( &h->data.batch, header, header_size );
/* Will move to ot_iovec.c */
for( i=0; i<iovec_entries; ++i )
- iob_addbuf_munmap( &h->batch, iovector[i].iov_base, iovector[i].iov_len );
+ iob_addbuf_munmap( &h->data.batch, iovector[i].iov_base, iovector[i].iov_len );
free( iovector );
h->flag |= STRUCT_HTTP_FLAG_IOB_USED;