mirror of
git://erdgeist.org/opentracker
synced 2025-03-11 05:01:20 +00:00
Preparing more efficient header parsing
This commit is contained in:
parent
1665c54179
commit
90e7262d9d
@ -122,6 +122,24 @@ static void help( char *name ) {
|
|||||||
}
|
}
|
||||||
#undef HELPLINE
|
#undef HELPLINE
|
||||||
|
|
||||||
|
static size_t header_complete( char * request, ssize_t byte_count ) {
|
||||||
|
int i = 0, state = 0;
|
||||||
|
|
||||||
|
for( i=1; i < byte_count; i+=2 )
|
||||||
|
if( request[i] <= 13 ) {
|
||||||
|
i--;
|
||||||
|
for( state = 0 ; i < byte_count; ++i ) {
|
||||||
|
char c = request[i];
|
||||||
|
if( c == '\r' || c == '\n' )
|
||||||
|
state = ( state >> 2 ) | ( ( c << 6 ) & 0xc0 );
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
if( state >= 0xa0 || state == 0x99 ) return i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void handle_dead( const int64 sock ) {
|
static void handle_dead( const int64 sock ) {
|
||||||
struct http_data* cookie=io_getcookie( sock );
|
struct http_data* cookie=io_getcookie( sock );
|
||||||
if( cookie ) {
|
if( cookie ) {
|
||||||
|
@ -118,8 +118,10 @@ struct ot_workstruct {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* HTTP specific, non static */
|
/* HTTP specific, non static */
|
||||||
|
int keep_alive;
|
||||||
char *request;
|
char *request;
|
||||||
ssize_t request_size;
|
ssize_t request_size;
|
||||||
|
ssize_t header_size;
|
||||||
char *reply;
|
char *reply;
|
||||||
ssize_t reply_size;
|
ssize_t reply_size;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user