From 88ae75988aaeb198f9633d36c424b07296389027 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 2 Aug 2009 19:14:50 -0700 Subject: http: preliminary chunk decoding --- ext/unicorn_http/unicorn_http_common.rl | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'ext/unicorn_http/unicorn_http_common.rl') diff --git a/ext/unicorn_http/unicorn_http_common.rl b/ext/unicorn_http/unicorn_http_common.rl index 61e6d52..f1ed138 100644 --- a/ext/unicorn_http/unicorn_http_common.rl +++ b/ext/unicorn_http/unicorn_http_common.rl @@ -50,8 +50,19 @@ field_value = any* >start_value %write_value; message_header = field_name ":" " "* field_value :> CRLF; + chunk_ext_val = token*; + chunk_ext_name = token*; + chunk_extension = ( ";" " "* chunk_ext_name ("=" chunk_ext_val)? )*; + last_chunk = "0"+ chunk_extension CRLF; + chunk_size = (xdigit* [1-9a-fA-F] xdigit*) $add_to_chunk_size; + chunk_end = CRLF; + chunk_body = any >skip_chunk_data; + chunk_begin = chunk_size chunk_extension CRLF; + chunk = chunk_begin chunk_body chunk_end; + ChunkedBody := chunk* last_chunk @end_chunked_body; + Trailers := (message_header)* CRLF @end_trailers; - Request = Request_Line ( message_header )* ( CRLF @done ); + Request = Request_Line (message_header)* CRLF @header_done; main := Request; -- cgit v1.2.3-24-ge0c7