static int on_headers_complete(http_parser* parser) { if(PARSER->field_start) { _set_header_free_both( wsgi_http_header(PARSER->field_start, PARSER->field_len), PyString_FromStringAndSize(PARSER->value_start, PARSER->value_len) ); } return 0; }
static int on_header_field(http_parser* parser, const char* field, size_t len) { if(PARSER->value.data) { /* Store previous header and start a new one */ _set_header_free_both( wsgi_http_header(PARSER->field), PyString_FromStringAndSize(PARSER->value.data, PARSER->value.len) ); } else if(PARSER->field.data) { UPDATE_LENGTH(field); return 0; } PARSER->field = (string){(char*)field, len}; PARSER->value = (string){NULL, 0}; return 0; }
static int on_header_field(http_parser* parser, const char* field_start, const size_t field_len) { if(PARSER->value_start) { /* Store previous header and start a new one */ _set_header_free_both( wsgi_http_header(PARSER->field_start, PARSER->field_len), PyString_FromStringAndSize(PARSER->value_start, PARSER->value_len) ); } else if(PARSER->field_start) { _update_length(field); return 0; } PARSER->field_start = field_start; PARSER->field_len = field_len; PARSER->value_start = NULL; PARSER->value_len = 0; return 0; }