<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to HTTP</title><link>https://sourceforge.net/p/shproto/wiki/HTTP/</link><description>Recent changes to HTTP</description><atom:link href="https://sourceforge.net/p/shproto/wiki/HTTP/feed" rel="self"/><language>en</language><lastBuildDate>Mon, 21 Nov 2011 08:57:11 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/shproto/wiki/HTTP/feed" rel="self" type="application/rss+xml"/><item><title>WikiPage HTTP modified by mikerez</title><link>https://sourceforge.net/p/shproto/wiki/HTTP/</link><description>&lt;pre&gt;--- v20 
+++ v21 
@@ -13,35 +13,35 @@
     'CONNECT' &lt;HTTP_RECV&gt;
 
     &lt;@HTTP_RECV&gt;
-       [ \t]+ url:substring(1024, " \t") [ \t]+ "HTTP/" http_ver1:u32 "." http_ver2:u32 "\r"? "\n"
+       [ \t]+ url:substring(1024, " \t") [ \t]+ "HTTP/" ver1:u32 "." ver2:u32 "\r"? "\n"
            "\r"? "\n" $
            [ \t]+ header_continuation:string(50) "\r"? "\n"
            'Host:' [ \t]+ host:string(32) "\r"? "\n"
            'Referer:' [ \t]+ referer:string(128) "\r"? "\n"
            'Cookie' cookie:string(128) "\r"? "\n"
            header_name:substring(32, ":") ":" [ \t]+ header_value:string(128) "\r"? "\n" 
 
     &lt;@HTTP_SEND&gt;
        [ \t]+ url:substring(1024, " \t") [ \t]+ "HTTP/" http_ver1:u32 "." http_ver2:u32 "\r"? "\n"
            "\r"? "\n"
                { if( state-&gt;cont_len == 0 ) return false; }
                      body:data(state-&gt;cont_len) { state-&gt;content_length = 0; } $
                body:data $
            [ \t]+ header_continuation:string(50) "\r"? "\n"
         'Host:' [ \t]+ host:string(32) "\r"? "\n"
         'Referer:' [ \t]+ referer:string(128) "\r"? "\n"
         'Co' \
             'okie' cookie:string(128) "\r"? "\n"
             'ntent-' \
                 'Length:' [ \t]+ cont_len:u64 [ \t]* "\r"? "\n"
                 'Encoding:' [ \t]+ content_encoding:string(64) [ \t]* "\r"? "\n"
         default: header_name:substring(32, ":") ":" [ \t]+ header_val:string(128) "\r"? "\n" 
 
 &lt;br&gt;
 #### server side ####
 
     :::bash
-    "HTTP/" http_ver1:u32 "." http_ver2:u32 [ \t]+ rc:substring(3," ") [ \t]+ rt:string(16) "\r"? "\n"
+    "HTTP/" ver1:u32 "." ver2:u32 [ \t]+ rc:substring(3," ") [ \t]+ rt:string(16) "\r"? "\n"
         "\r"? "\n"
             { if( state-&gt;cont_len == 0 ) return false; }
                      body:data(state-&gt;cont_length) { state-&gt;cont_len = 0; } $
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mikerez</dc:creator><pubDate>Mon, 21 Nov 2011 08:57:11 -0000</pubDate><guid>https://sourceforge.netb80b370e0ed88bbb830baf9e890d374c4aca7ae0</guid></item><item><title>WikiPage HTTP modified by mikerez</title><link>https://sourceforge.net/p/shproto/wiki/HTTP/</link><description>&lt;pre&gt;--- v19 
+++ v20 
@@ -41,7 +41,7 @@
 #### server side ####
 
     :::bash
-    "HTTP/" http_ver1:u32 "." http_ver2:u32 [ \t]+ retcode:substring(3," ") [ \t]+ rtext:string(16) "\r"? "\n"
+    "HTTP/" http_ver1:u32 "." http_ver2:u32 [ \t]+ rc:substring(3," ") [ \t]+ rt:string(16) "\r"? "\n"
         "\r"? "\n"
             { if( state-&gt;cont_len == 0 ) return false; }
                      body:data(state-&gt;cont_length) { state-&gt;cont_len = 0; } $
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mikerez</dc:creator><pubDate>Mon, 21 Nov 2011 08:56:31 -0000</pubDate><guid>https://sourceforge.net0d9564c64672569bb19de1acb3d77cd3ba37851e</guid></item><item><title>WikiPage HTTP modified by mikerez</title><link>https://sourceforge.net/p/shproto/wiki/HTTP/</link><description>&lt;pre&gt;--- v18 
+++ v19 
@@ -41,7 +41,7 @@
 #### server side ####
 
     :::bash
-    "HTTP/" http_ver1:u32 "." http_ver2:u32 [ \t]+ rcode:string(3) [ \t]+ rtext:string(16) "\r"? "\n"
+    "HTTP/" http_ver1:u32 "." http_ver2:u32 [ \t]+ retcode:substring(3," ") [ \t]+ rtext:string(16) "\r"? "\n"
         "\r"? "\n"
             { if( state-&gt;cont_len == 0 ) return false; }
                      body:data(state-&gt;cont_length) { state-&gt;cont_len = 0; } $
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mikerez</dc:creator><pubDate>Mon, 14 Nov 2011 10:37:42 -0000</pubDate><guid>https://sourceforge.net66661d51009d3d1ce0ff22bccbeea5241e9308a2</guid></item><item><title>WikiPage HTTP modified by mikerez</title><link>https://sourceforge.net/p/shproto/wiki/HTTP/</link><description>&lt;pre&gt;--- v17 
+++ v18 
@@ -19,39 +19,45 @@
            'Host:' [ \t]+ host:string(32) "\r"? "\n"
            'Referer:' [ \t]+ referer:string(128) "\r"? "\n"
            'Cookie' cookie:string(128) "\r"? "\n"
-           header_name:substring(50, ":") ":" [ \t]+ header_value:string(128) "\r"? "\n" 
-
+           header_name:substring(32, ":") ":" [ \t]+ header_value:string(128) "\r"? "\n" 
+
     &lt;@HTTP_SEND&gt;
        [ \t]+ url:substring(1024, " \t") [ \t]+ "HTTP/" http_ver1:u32 "." http_ver2:u32 "\r"? "\n"
            "\r"? "\n"
                { if( state-&gt;cont_len == 0 ) return false; }
                      body:data(state-&gt;cont_len) { state-&gt;content_length = 0; } $
                body:data $
            [ \t]+ header_continuation:string(50) "\r"? "\n"
-           'Content-Length:' [ \t]+ cont_len:u32 [ \t]* "\r"? "\n"
-           default: header_name:substring(50, ":") ":" [ \t]+ header_val:string(128) "\r"? "\n" 
+        'Host:' [ \t]+ host:string(32) "\r"? "\n"
+        'Referer:' [ \t]+ referer:string(128) "\r"? "\n"
+        'Co' \
+            'okie' cookie:string(128) "\r"? "\n"
+            'ntent-' \
+                'Length:' [ \t]+ cont_len:u64 [ \t]* "\r"? "\n"
+                'Encoding:' [ \t]+ content_encoding:string(64) [ \t]* "\r"? "\n"
+        default: header_name:substring(32, ":") ":" [ \t]+ header_val:string(128) "\r"? "\n" 
 
 &lt;br&gt;
 #### server side ####
 
     :::bash
-    "HTTP/" http_ver1:u32 "." http_ver2:u32 [ \t]+ rcode:u32 [ \t]+ rtext:string(16) "\r"? "\n"
+    "HTTP/" http_ver1:u32 "." http_ver2:u32 [ \t]+ rcode:string(3) [ \t]+ rtext:string(16) "\r"? "\n"
         "\r"? "\n"
             { if( state-&gt;cont_len == 0 ) return false; }
-                     body:data(state-&gt;cont_length) { state-&gt;cont_len = 0; } $ 
+                     body:data(state-&gt;cont_length) { state-&gt;cont_len = 0; } $
+            { if( state-&gt;retcode[0] != '5' ) return false; } $     # error answer
             { if( strstr(state-&gt;transf_enc, "chunked") == NULL ) return false; }
                 chunklen:h32 [ \t]* "\r"? "\n" \
                     { if( state-&gt;chunklen != 0 ) return false; } "\r"? "\n"
                                                   { state-&gt;transf_enc.clear(); } $
                     chunk:data(state-&gt;chunklen) "\r"? "\n"
             body:data $
         [ \t]+ header_continuation:string(128) "\r"? "\n"
         'Host:' [ \t]+ host:string(32) "\r"? "\n"
-        'Referer:' [ \t]+ referer:string(128) "\r"? "\n"
-        'Co' \
-            'okie' cookie:string(128) "\r"? "\n"
-            'ntent-' \
-                'Length:' [ \t]+ cont_len:u64 [ \t]* "\r"? "\n"
-                'Encoding:' [ \t]+ content_encoding:string(64) [ \t]* "\r"? "\n"
+        'Set-Cookie:' [ \t]+ set_cookie:string(128) "\r"? "\n"
+        'Transfer-Encoding:' [ \t]+ transf_enc:string(32) [ \t]* "\r"? "\n"
+        'Content-' \
+            'Length:' [ \t]+ content_length:u64 [ \t]* "\r"? "\n"
+            'Encoding:' [ \t]+ content_encoding:string(64) [ \t]* "\r"? "\n"
         default: header_name:substring(32, ":") ":" [ \t]+ header_value:string(128) "\r"? "\n"
 
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mikerez</dc:creator><pubDate>Mon, 14 Nov 2011 10:34:43 -0000</pubDate><guid>https://sourceforge.netba683b37915c627f2d96095ef7fe23bd1c8c4140</guid></item><item><title>WikiPage HTTP modified by mikerez</title><link>https://sourceforge.net/p/shproto/wiki/HTTP/</link><description>&lt;pre&gt;--- v16 
+++ v17 
@@ -16,36 +16,42 @@
        [ \t]+ url:substring(1024, " \t") [ \t]+ "HTTP/" http_ver1:u32 "." http_ver2:u32 "\r"? "\n"
            "\r"? "\n" $
            [ \t]+ header_continuation:string(50) "\r"? "\n"
+           'Host:' [ \t]+ host:string(32) "\r"? "\n"
+           'Referer:' [ \t]+ referer:string(128) "\r"? "\n"
+           'Cookie' cookie:string(128) "\r"? "\n"
            header_name:substring(50, ":") ":" [ \t]+ header_value:string(128) "\r"? "\n" 
 
     &lt;@HTTP_SEND&gt;
        [ \t]+ url:substring(1024, " \t") [ \t]+ "HTTP/" http_ver1:u32 "." http_ver2:u32 "\r"? "\n"
            "\r"? "\n"
                { if( state-&gt;cont_len == 0 ) return false; }
                      body:data(state-&gt;cont_len) { state-&gt;content_length = 0; } $
                body:data $
            [ \t]+ header_continuation:string(50) "\r"? "\n"
            'Content-Length:' [ \t]+ cont_len:u32 [ \t]* "\r"? "\n"
            default: header_name:substring(50, ":") ":" [ \t]+ header_val:string(128) "\r"? "\n" 
 
 &lt;br&gt;
 #### server side ####
 
     :::bash
     "HTTP/" http_ver1:u32 "." http_ver2:u32 [ \t]+ rcode:u32 [ \t]+ rtext:string(16) "\r"? "\n"
         "\r"? "\n"
             { if( state-&gt;cont_len == 0 ) return false; }
                      body:data(state-&gt;cont_length) { state-&gt;cont_len = 0; } $ 
             { if( strstr(state-&gt;transf_enc, "chunked") == NULL ) return false; }
                 chunklen:h32 [ \t]* "\r"? "\n" \
                     { if( state-&gt;chunklen != 0 ) return false; } "\r"? "\n"
                                                   { state-&gt;transf_enc.clear(); } $
                     chunk:data(state-&gt;chunklen) "\r"? "\n"
             body:data $
         [ \t]+ header_continuation:string(128) "\r"? "\n"
-        'Transfer-Encoding:' [ \t]+ transf_enc:string(32) [ \t]* "\r"? "\n"
-        'Content-' \
-            'Length:' [ \t]+ cont_len:u64 [ \t]* "\r"? "\n"
-            'Encoding:' [ \t]+ content_encoding:string(64) [ \t]* "\r"? "\n"
+        'Host:' [ \t]+ host:string(32) "\r"? "\n"
+        'Referer:' [ \t]+ referer:string(128) "\r"? "\n"
+        'Co' \
+            'okie' cookie:string(128) "\r"? "\n"
+            'ntent-' \
+                'Length:' [ \t]+ cont_len:u64 [ \t]* "\r"? "\n"
+                'Encoding:' [ \t]+ content_encoding:string(64) [ \t]* "\r"? "\n"
         default: header_name:substring(32, ":") ":" [ \t]+ header_value:string(128) "\r"? "\n"
 
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mikerez</dc:creator><pubDate>Mon, 14 Nov 2011 10:14:28 -0000</pubDate><guid>https://sourceforge.net29c9dd0d63d1fc507d9295e523e98826f67d3b67</guid></item><item><title>WikiPage HTTP modified by mikerez</title><link>https://sourceforge.net/p/shproto/wiki/HTTP/</link><description>&lt;pre&gt;--- v15 
+++ v16 
@@ -10,11 +10,7 @@
         'UT' &lt;HTTP_SEND&gt;
     'DELETE' &lt;HTTP_RECV&gt;
     'OPTIONS' &lt;HTTP_RECV&gt;
-    'PATCH' &lt;HTTP_RECV&gt;
     'CONNECT' &lt;HTTP_RECV&gt;
-    'LINK' &lt;HTTP_RECV&gt;
-    'UNLINK' &lt;HTTP_RECV&gt;
-    'TRACE' &lt;HTTP_RECV&gt;
 
     &lt;@HTTP_RECV&gt;
        [ \t]+ url:substring(1024, " \t") [ \t]+ "HTTP/" http_ver1:u32 "." http_ver2:u32 "\r"? "\n"
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mikerez</dc:creator><pubDate>Fri, 28 Oct 2011 10:18:29 -0000</pubDate><guid>https://sourceforge.net4c8beacc1291631f3d8bda1fc9dc81cb0c5eeff5</guid></item><item><title>WikiPage HTTP modified by mikerez</title><link>https://sourceforge.net/p/shproto/wiki/HTTP/</link><description>&lt;pre&gt;--- v14 
+++ v15 
@@ -51,5 +51,5 @@
         'Content-' \
             'Length:' [ \t]+ cont_len:u64 [ \t]* "\r"? "\n"
             'Encoding:' [ \t]+ content_encoding:string(64) [ \t]* "\r"? "\n"
-        default: header_name:substring(32, ":") ":" [ \t]+ header_value:string(128)  "\r"? "\n"
+        default: header_name:substring(32, ":") ":" [ \t]+ header_value:string(128) "\r"? "\n"
 
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mikerez</dc:creator><pubDate>Thu, 27 Oct 2011 14:01:29 -0000</pubDate><guid>https://sourceforge.net8c2bf7f5f01cbdb1cc8215e870ea61b98222b9f2</guid></item><item><title>WikiPage HTTP modified by mikerez</title><link>https://sourceforge.net/p/shproto/wiki/HTTP/</link><description>&lt;pre&gt;--- v13 
+++ v14 
@@ -51,6 +51,5 @@
         'Content-' \
             'Length:' [ \t]+ cont_len:u64 [ \t]* "\r"? "\n"
             'Encoding:' [ \t]+ content_encoding:string(64) [ \t]* "\r"? "\n"
-        default: header_name:substring(32, ":") ":" [ \t]+ header_value:string(128) 
-"\r"? "\n"
+        default: header_name:substring(32, ":") ":" [ \t]+ header_value:string(128)  "\r"? "\n"
 
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mikerez</dc:creator><pubDate>Thu, 27 Oct 2011 14:01:12 -0000</pubDate><guid>https://sourceforge.net163ba7f168a0389a59371681543e526deb9dfa0c</guid></item><item><title>WikiPage HTTP modified by mikerez</title><link>https://sourceforge.net/p/shproto/wiki/HTTP/</link><description>&lt;pre&gt;--- v12 
+++ v13 
@@ -36,20 +36,21 @@
 #### server side ####
 
     :::bash
-    "HTTP/" http_ver1:u32 "." http_ver2:u32 [ \t]+ retcode:u32 [ \t]+ rettext:string(16) "\r"? "\n"
+    "HTTP/" http_ver1:u32 "." http_ver2:u32 [ \t]+ rcode:u32 [ \t]+ rtext:string(16) "\r"? "\n"
         "\r"? "\n"
             { if( state-&gt;cont_len == 0 ) return false; }
                      body:data(state-&gt;cont_length) { state-&gt;cont_len = 0; } $ 
             { if( strstr(state-&gt;transf_enc, "chunked") == NULL ) return false; }
                 chunklen:h32 [ \t]* "\r"? "\n" \
-                    { if( state-&gt;chunklen != 0 ) return false; } "\r"? "\n" { state-&gt;transf_enc.clear(); } $
+                    { if( state-&gt;chunklen != 0 ) return false; } "\r"? "\n"
+                                                  { state-&gt;transf_enc.clear(); } $
                     chunk:data(state-&gt;chunklen) "\r"? "\n"
             body:data $
         [ \t]+ header_continuation:string(128) "\r"? "\n"
         'Transfer-Encoding:' [ \t]+ transf_enc:string(32) [ \t]* "\r"? "\n"
         'Content-' \
             'Length:' [ \t]+ cont_len:u64 [ \t]* "\r"? "\n"
             'Encoding:' [ \t]+ content_encoding:string(64) [ \t]* "\r"? "\n"
         default: header_name:substring(32, ":") ":" [ \t]+ header_value:string(128) 
-                                                                         "\r"? "\n"
+"\r"? "\n"
 
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mikerez</dc:creator><pubDate>Thu, 27 Oct 2011 14:00:37 -0000</pubDate><guid>https://sourceforge.netfc80e30dce34c55d295f080f0fa818a1a7510f5c</guid></item><item><title>WikiPage HTTP modified by mikerez</title><link>https://sourceforge.net/p/shproto/wiki/HTTP/</link><description>&lt;pre&gt;--- v11 
+++ v12 
@@ -17,34 +17,32 @@
     'TRACE' &lt;HTTP_RECV&gt;
 
     &lt;@HTTP_RECV&gt;
-        [ \t]+ url:substring(1024, " \t") [ \t]+ "HTTP/" http_ver1:u32 "." http_ver2:u32 "\r"? "\n"
-            "\r"? "\n" $
-            [ \t]+ header_continuation:string(50) "\r"? "\n"
-            header_name:substring(50, ":") ":" [ \t]+ header_value:string(128) "\r"? "\n" 
-
+       [ \t]+ url:substring(1024, " \t") [ \t]+ "HTTP/" http_ver1:u32 "." http_ver2:u32 "\r"? "\n"
+           "\r"? "\n" $
+           [ \t]+ header_continuation:string(50) "\r"? "\n"
+           header_name:substring(50, ":") ":" [ \t]+ header_value:string(128) "\r"? "\n" 
+
     &lt;@HTTP_SEND&gt;
-        [ \t]+ url:substring(1024, " \t") [ \t]+ "HTTP/" http_ver1:u32 "." http_ver2:u32 "\r"? "\n"
-            "\r"? "\n"
-                { if( state-&gt;cont_len == 0 ) return false; }
-                      body:data(state-&gt;cont_len) { state-&gt;content_length = 0; } $
-                body:data $
-            [ \t]+ header_continuation:string(50) "\r"? "\n"
-            'Content-Length:' [ \t]+ cont_len:u32 [ \t]* "\r"? "\n"
-            default: header_name:substring(50, ":") ":" [ \t]+ header_val:string(128) "\r"? "\n" 
+       [ \t]+ url:substring(1024, " \t") [ \t]+ "HTTP/" http_ver1:u32 "." http_ver2:u32 "\r"? "\n"
+           "\r"? "\n"
+               { if( state-&gt;cont_len == 0 ) return false; }
+                     body:data(state-&gt;cont_len) { state-&gt;content_length = 0; } $
+               body:data $
+           [ \t]+ header_continuation:string(50) "\r"? "\n"
+           'Content-Length:' [ \t]+ cont_len:u32 [ \t]* "\r"? "\n"
+           default: header_name:substring(50, ":") ":" [ \t]+ header_val:string(128) "\r"? "\n" 
 
 &lt;br&gt;
 #### server side ####
 
     :::bash
-    "HTTP/" http_ver1:u32 "." http_ver2:u32 [ \t]+ retcode:u32 [ \t]+ \
-                                                          rettext:string(16) "\r"? "\n"
+    "HTTP/" http_ver1:u32 "." http_ver2:u32 [ \t]+ retcode:u32 [ \t]+ rettext:string(16) "\r"? "\n"
         "\r"? "\n"
-            { if( state-&gt;cont_len == 0 ) return false; } \
+            { if( state-&gt;cont_len == 0 ) return false; }
                      body:data(state-&gt;cont_length) { state-&gt;cont_len = 0; } $ 
             { if( strstr(state-&gt;transf_enc, "chunked") == NULL ) return false; }
                 chunklen:h32 [ \t]* "\r"? "\n" \
-                    { if( state-&gt;chunklen != 0 ) return false; } "\r"? "\n" \
-                                         { state-&gt;transf_enc.clear(); } $
+                    { if( state-&gt;chunklen != 0 ) return false; } "\r"? "\n" { state-&gt;transf_enc.clear(); } $
                     chunk:data(state-&gt;chunklen) "\r"? "\n"
             body:data $
         [ \t]+ header_continuation:string(128) "\r"? "\n"
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mikerez</dc:creator><pubDate>Thu, 27 Oct 2011 13:59:24 -0000</pubDate><guid>https://sourceforge.net3ea2f8fba848fccfa1324b6d39f19bcffdfbd35d</guid></item></channel></rss>