File tree 1 file changed +39
-0
lines changed
1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+ // Test to ensure sending a large stream with a large initial window size works
4
+ // See: https://github.com/nodejs/node/issues/19141
5
+
6
+ const common = require ( '../common' ) ;
7
+ if ( ! common . hasCrypto )
8
+ common . skip ( 'missing crypto' ) ;
9
+
10
+ const http2 = require ( 'http2' ) ;
11
+
12
+ const server = http2 . createServer ( { settings : { initialWindowSize : 6553500 } } ) ;
13
+ server . on ( 'stream' , ( stream ) => {
14
+ stream . resume ( ) ;
15
+ stream . respond ( ) ;
16
+ stream . end ( 'ok' ) ;
17
+ } ) ;
18
+
19
+ server . listen ( 0 , common . mustCall ( ( ) => {
20
+ let remaining = 1e8 ;
21
+ const chunk = 1e6 ;
22
+ const client = http2 . connect ( `http://localhost:${ server . address ( ) . port } ` ,
23
+ { settings : { initialWindowSize : 6553500 } } ) ;
24
+ const request = client . request ( { ':method' : 'POST' } ) ;
25
+ function writeChunk ( ) {
26
+ if ( remaining > 0 ) {
27
+ remaining -= chunk ;
28
+ request . write ( Buffer . alloc ( chunk , 'a' ) , writeChunk ) ;
29
+ } else {
30
+ request . end ( ) ;
31
+ }
32
+ }
33
+ writeChunk ( ) ;
34
+ request . on ( 'close' , common . mustCall ( ( ) => {
35
+ client . close ( ) ;
36
+ server . close ( ) ;
37
+ } ) ) ;
38
+ request . resume ( ) ;
39
+ } ) ) ;
You can’t perform that action at this time.
0 commit comments