@@ -43,16 +43,18 @@ def find_unused_port(self):
43
43
44
44
@asyncio .coroutine
45
45
def create_server (self , method , path , handler = None , ssl_ctx = None ,
46
- logger = log .server_logger ):
47
- app = web .Application (loop = self .loop )
46
+ logger = log .server_logger , handler_kwargs = None ):
47
+ app = web .Application (
48
+ loop = self .loop )
48
49
if handler :
49
50
app .router .add_route (method , path , handler )
50
51
51
52
port = self .find_unused_port ()
52
53
self .handler = app .make_handler (
53
54
keep_alive_on = False ,
54
55
access_log = log .access_logger ,
55
- logger = logger )
56
+ logger = logger ,
57
+ ** (handler_kwargs or {}))
56
58
srv = yield from self .loop .create_server (
57
59
self .handler , '127.0.0.1' , port , ssl = ssl_ctx )
58
60
protocol = "https" if ssl_ctx else "http"
@@ -776,6 +778,44 @@ def go():
776
778
777
779
self .loop .run_until_complete (go ())
778
780
781
+ def test_large_header (self ):
782
+
783
+ @asyncio .coroutine
784
+ def handler (request ):
785
+ return web .Response ()
786
+
787
+ @asyncio .coroutine
788
+ def go ():
789
+ _ , srv , url = yield from self .create_server ('GET' , '/' , handler )
790
+ headers = {'Long-Header' : 'ab' * 8129 }
791
+ resp = yield from request ('GET' , url ,
792
+ headers = headers ,
793
+ loop = self .loop )
794
+ self .assertEqual (400 , resp .status )
795
+ yield from resp .release ()
796
+
797
+ self .loop .run_until_complete (go ())
798
+
799
+ def test_large_header_allowed (self ):
800
+
801
+ @asyncio .coroutine
802
+ def handler (request ):
803
+ return web .Response ()
804
+
805
+ @asyncio .coroutine
806
+ def go ():
807
+ handler_kwargs = {'max_field_size' : 81920 }
808
+ _ , srv , url = yield from self .create_server (
809
+ 'GET' , '/' , handler , handler_kwargs = handler_kwargs )
810
+ headers = {'Long-Header' : 'ab' * 8129 }
811
+ resp = yield from request ('GET' , url ,
812
+ headers = headers ,
813
+ loop = self .loop )
814
+ self .assertEqual (200 , resp .status )
815
+ yield from resp .release ()
816
+
817
+ self .loop .run_until_complete (go ())
818
+
779
819
def test_get_with_empty_arg_with_equal (self ):
780
820
781
821
@asyncio .coroutine
0 commit comments