20 if( ctx->m_header.request_target().length() >
21 ctx->m_limits.max_url_size() )
26 catch(
const std::exception & )
43 if( ctx->m_last_was_value )
46 if( ctx->m_total_field_count == ctx->m_limits.max_field_count() )
52 ctx->m_last_was_value =
false;
56 ctx->m_current_field_name.append( at, length );
59 if( ctx->m_current_field_name.size() >
60 ctx->m_limits.max_field_name_size() )
65 catch(
const std::exception & )
76 fields.append_last_field( value );
88 ? ctx->m_chunked_info_block.m_trailing_fields
91 if( !ctx->m_last_was_value )
95 std::string{ at, length } );
97 ctx->m_last_value_total_size = length;
98 ctx->m_last_was_value =
true;
101 ctx->m_total_field_count += 1u;
106 ctx->m_last_value_total_size += length;
109 if( ctx->m_last_value_total_size >=
110 ctx->m_limits.max_field_value_size() )
115 catch(
const std::exception & )
133 if( ULLONG_MAX != parser->content_length &&
134 0 < parser->content_length )
137 if( parser->content_length > ctx->m_limits.max_body_size() )
146 parser->content_length) );
148 catch(
const std::exception & )
168 const auto total_length =
static_cast<std::uint64_t
>(
169 ctx->m_body.size() ) + length;
170 if( total_length > ctx->m_limits.max_body_size() )
175 ctx->
m_body.append( at, length );
177 catch(
const std::exception & )
194 if( 0u != parser->content_length )
209 catch(
const std::exception & )
224 template<
typename Http_Methods >
229 http_parser_pause( parser, 1 );
236 if( !ctx->m_last_was_value && !ctx->m_current_field_name.empty() )
243 ctx->m_message_complete =
true;
244 ctx->m_header.method( Http_Methods::from_nodejs( parser->method ) );
246 if( 0 == parser->upgrade )
247 ctx->m_header.should_keep_alive( 0 != http_should_keep_alive( parser ) );