feature ignore_unknown_macro
server s1 {
+ ##
+ ## Handle GET requests
+ ##
rxreq
+ expect req.bodylen == 0
+ expect req.body == ""
txresp \
-status 200 \
-body "response 1"
rxreq
+ expect req.bodylen == 0
+ expect req.body == ""
txresp \
-status 200 \
-body "response 2"
rxreq
+ expect req.bodylen == 38
+ expect req.body == "this must be delivered, like it or not"
txresp \
-status 200 \
-body "response 3"
rxreq
+ expect req.bodylen == 0
+ expect req.body == ""
+ txresp \
+ -status 200 \
+ -body "response 4"
+
+ accept
+
+ ##
+ ## Handle HEAD requests
+ ##
+ rxreq
+ expect req.bodylen == 0
+ expect req.body == ""
+ txresp \
+ -status 200 \
+ -body "response 1"
+
+ accept
+
+ rxreq
+ expect req.bodylen == 0
+ expect req.body == ""
+ txresp \
+ -status 200 \
+ -body "response 2"
+
+ accept
+
+ rxreq
+ expect req.bodylen == 38
+ expect req.body == "this must be delivered, like it or not"
+ txresp \
+ -status 200 \
+ -body "response 3"
+
+ accept
+
+ rxreq
+ expect req.bodylen == 0
+ expect req.body == ""
+ txresp \
+ -status 200 \
+ -body "response 4"
+
+ accept
+
+ ##
+ ## Handle POST requests
+ ##
+ # POST request without body
+ rxreq
+ expect req.bodylen == 0
+ expect req.body == ""
+ txresp \
+ -status 200 \
+ -body "response 1"
+
+ # POST request without body
+ rxreq
+ expect req.bodylen == 0
+ expect req.body == ""
+ txresp \
+ -status 200 \
+ -body "response 2"
+
+ # POST request with a body
+ rxreq
+ expect req.bodylen == 12
+ expect req.body == "this is sent"
+ txresp \
+ -status 200 \
+ -body "response 3"
+
+ # POST request without body
+ rxreq
+ expect req.bodylen == 0
+ expect req.body == ""
txresp \
-status 200 \
-body "response 4"
-url "/test1.html"
rxresp
expect resp.status == 200
+ expect resp.body == "response 1"
# second request is valid and advertises C-L:0
txreq \
-hdr "content-length: 0"
rxresp
expect resp.status == 200
+ expect resp.body == "response 2"
# third request sends a body with a GET
txreq \
-body "this must be delivered, like it or not"
rxresp
expect resp.status == 200
+ expect resp.body == "response 3"
# fourth request is valid and advertises C-L:0, and close, and is
# followed by a string "this is not sent\r\n\r\n" which must be
sendhex "74787973207973206E6F742073656E740D0A0D0A"
rxresp
expect resp.status == 200
+ expect resp.body == "response 4"
# the connection is expected to be closed and no more response must
# arrive here.
-url "/test11.html"
rxresp
expect resp.status == 200
+ expect resp.body == ""
# second request is valid and advertises C-L:0
txreq \
-hdr "content-length: 0"
rxresp
expect resp.status == 200
+ expect resp.body == ""
- # third request sends a body with a GET
+ # third request sends a body with a HEAD
txreq \
- -req "GET" \
+ -req "HEAD" \
-url "/test13.html" \
-body "this must be delivered, like it or not"
rxresp
expect resp.status == 200
+ expect resp.body == ""
# fourth request is valid and advertises C-L:0, and close, and is
# followed by a string "this is not sent\r\n\r\n" which must be
sendhex "74787973207973206E6F742073656E740D0A0D0A"
rxresp
expect resp.status == 200
+ expect resp.body == ""
# the connection is expected to be closed and no more response must
# arrive here.
expect_close
} -run
-client c1h1 -connect ${h1_feh1_sock} {
+client c3h1 -connect ${h1_feh1_sock} {
# first request is valid
txreq \
-req "POST" \
-url "/test21.html"
rxresp
expect resp.status == 200
+ expect resp.body == "response 1"
# second request is valid and advertises C-L:0
txreq \
-hdr "content-length: 0"
rxresp
expect resp.status == 200
+ expect resp.body == "response 2"
# third request is valid and advertises (and sends) somme contents
txreq \
-body "this is sent"
rxresp
expect resp.status == 200
+ expect resp.body == "response 3"
# fourth request is valid and advertises C-L:0, and close, and is
# followed by a string "this is not sent\r\n\r\n" which must be
sendhex "74787973207973206E6F742073656E740D0A0D0A"
rxresp
expect resp.status == 200
+ expect resp.body == "response 4"
# the connection is expected to be closed and no more response must
# arrive here.