@@ -16,7 +16,7 @@ use xitca_http::{
1616 } ,
1717} ;
1818use xitca_service:: fn_service;
19- use xitca_test:: { test_h1_server, Error } ;
19+ use xitca_test:: { test_h1_server, test_h1_server_with_addr , Error } ;
2020
2121#[ tokio:: test]
2222async fn h1_get ( ) -> Result < ( ) , Error > {
@@ -27,7 +27,7 @@ async fn h1_get() -> Result<(), Error> {
2727 let c = Client :: new ( ) ;
2828
2929 for _ in 0 ..3 {
30- let mut res = c. get ( & server_url) . version ( Version :: HTTP_11 ) . send ( ) . await ?;
30+ let res = c. get ( & server_url) . version ( Version :: HTTP_11 ) . send ( ) . await ?;
3131 assert_eq ! ( res. status( ) . as_u16( ) , 200 ) ;
3232 assert ! ( !res. can_close_connection( ) ) ;
3333 let body = res. string ( ) . await ?;
@@ -41,6 +41,39 @@ async fn h1_get() -> Result<(), Error> {
4141 Ok ( ( ) )
4242}
4343
44+ #[ tokio:: test]
45+ async fn h1_get_connection_closed_by_server ( ) -> Result < ( ) , Error > {
46+ let mut handle = test_h1_server ( fn_service ( handle) ) ?;
47+ let ip_port = handle. ip_port_string ( ) ;
48+
49+ let server_url = format ! ( "http://{}/" , ip_port) ;
50+
51+ let c = Client :: builder ( ) . set_pool_capacity ( 1 ) . finish ( ) ;
52+
53+ let res = c. get ( & server_url) . version ( Version :: HTTP_11 ) . send ( ) . await ?;
54+ assert_eq ! ( res. status( ) . as_u16( ) , 200 ) ;
55+ assert ! ( !res. can_close_connection( ) ) ;
56+ let body = res. string ( ) . await ?;
57+ assert_eq ! ( "GET Response" , body) ;
58+
59+ handle. try_handle ( ) ?. stop ( false ) ;
60+ handle. await ?;
61+
62+ let mut handle = test_h1_server_with_addr ( fn_service ( crate :: handle) , ip_port) ?;
63+ let res_result = c. get ( & server_url) . version ( Version :: HTTP_11 ) . send ( ) . await ;
64+
65+ if let Err ( e) = & res_result {
66+ println ! ( "{:?}" , e) ;
67+ }
68+
69+ assert ! ( res_result. is_ok( ) ) ;
70+
71+ handle. try_handle ( ) ?. stop ( false ) ;
72+ handle. await ?;
73+
74+ Ok ( ( ) )
75+ }
76+
4477#[ tokio:: test]
4578async fn h1_head ( ) -> Result < ( ) , Error > {
4679 let mut handle = test_h1_server ( fn_service ( handle) ) ?;
@@ -50,7 +83,7 @@ async fn h1_head() -> Result<(), Error> {
5083 let c = Client :: new ( ) ;
5184
5285 for _ in 0 ..3 {
53- let mut res = c. head ( & server_url) . version ( Version :: HTTP_11 ) . send ( ) . await ?;
86+ let res = c. head ( & server_url) . version ( Version :: HTTP_11 ) . send ( ) . await ?;
5487 assert_eq ! ( res. status( ) . as_u16( ) , 200 ) ;
5588 assert ! ( !res. can_close_connection( ) ) ;
5689 let body = res. string ( ) . await ?;
@@ -79,7 +112,7 @@ async fn h1_post() -> Result<(), Error> {
79112 }
80113 let body_len = body. len ( ) ;
81114
82- let mut res = c. post ( & server_url) . version ( Version :: HTTP_11 ) . text ( body) . send ( ) . await ?;
115+ let res = c. post ( & server_url) . version ( Version :: HTTP_11 ) . text ( body) . send ( ) . await ?;
83116 assert_eq ! ( res. status( ) . as_u16( ) , 200 ) ;
84117 assert ! ( !res. can_close_connection( ) ) ;
85118 let body = res. limit :: < { 12 * 1024 } > ( ) . string ( ) . await ?;
@@ -107,7 +140,7 @@ async fn h1_drop_body_read() -> Result<(), Error> {
107140 body. extend_from_slice ( b"Hello,World!" ) ;
108141 }
109142
110- let mut res = c. post ( & server_url) . version ( Version :: HTTP_11 ) . text ( body) . send ( ) . await ?;
143+ let res = c. post ( & server_url) . version ( Version :: HTTP_11 ) . text ( body) . send ( ) . await ?;
111144 assert_eq ! ( res. status( ) . as_u16( ) , 200 ) ;
112145 assert ! ( res. can_close_connection( ) ) ;
113146 }
@@ -133,7 +166,7 @@ async fn h1_partial_body_read() -> Result<(), Error> {
133166 body. extend_from_slice ( b"Hello,World!" ) ;
134167 }
135168
136- let mut res = c. post ( & server_url) . version ( Version :: HTTP_11 ) . text ( body) . send ( ) . await ?;
169+ let res = c. post ( & server_url) . version ( Version :: HTTP_11 ) . text ( body) . send ( ) . await ?;
137170 assert_eq ! ( res. status( ) . as_u16( ) , 200 ) ;
138171 assert ! ( res. can_close_connection( ) ) ;
139172 }
@@ -153,7 +186,7 @@ async fn h1_close_connection() -> Result<(), Error> {
153186
154187 let c = Client :: new ( ) ;
155188
156- let mut res = c. get ( & server_url) . version ( Version :: HTTP_11 ) . send ( ) . await ?;
189+ let res = c. get ( & server_url) . version ( Version :: HTTP_11 ) . send ( ) . await ?;
157190 assert_eq ! ( res. status( ) . as_u16( ) , 200 ) ;
158191 assert ! ( res. can_close_connection( ) ) ;
159192
@@ -190,7 +223,7 @@ async fn h1_request_too_large() -> Result<(), Error> {
190223 req. headers_mut ( )
191224 . insert ( "large-header" , HeaderValue :: try_from ( body) . unwrap ( ) ) ;
192225
193- let mut res = req. send ( ) . await ?;
226+ let res = req. send ( ) . await ?;
194227 assert_eq ! ( res. status( ) . as_u16( ) , 431 ) ;
195228 assert ! ( res. can_close_connection( ) ) ;
196229
0 commit comments