This repository was archived by the owner on Dec 7, 2019. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +44
-0
lines changed Expand file tree Collapse file tree 2 files changed +44
-0
lines changed Original file line number Diff line number Diff line change @@ -12,6 +12,8 @@ type Stream interface {
12
12
io.Writer
13
13
io.Closer
14
14
15
+ Reset () error
16
+
15
17
SetDeadline (time.Time ) error
16
18
SetReadDeadline (time.Time ) error
17
19
SetWriteDeadline (time.Time ) error
Original file line number Diff line number Diff line change @@ -354,6 +354,47 @@ func SubtestStreamOpenStress(t *testing.T, tr smux.Transport) {
354
354
}
355
355
}
356
356
357
+ func SubtestStreamReset (t * testing.T , tr smux.Transport ) {
358
+ a , b := tcpPipe (t )
359
+ defer a .Close ()
360
+ defer b .Close ()
361
+
362
+ done := make (chan struct {})
363
+ go func () {
364
+ muxa , err := tr .NewConn (a , true )
365
+ if err != nil {
366
+ panic (err )
367
+ }
368
+
369
+ s , err := muxa .OpenStream ()
370
+ if err != nil {
371
+ panic (err )
372
+ }
373
+ time .Sleep (time .Millisecond * 50 )
374
+
375
+ _ , err = s .Write ([]byte ("foo" ))
376
+ if err == nil {
377
+ t .Error ("should have failed to write" )
378
+ }
379
+
380
+ s .Close ()
381
+ done <- struct {}{}
382
+ }()
383
+
384
+ muxb , err := tr .NewConn (b , false )
385
+ if err != nil {
386
+ t .Fatal (err )
387
+ }
388
+
389
+ go muxb .Serve (func (s smux.Stream ) {
390
+ s .Reset ()
391
+ done <- struct {}{}
392
+ })
393
+
394
+ <- done
395
+ <- done
396
+ }
397
+
357
398
func SubtestStress1Conn1Stream1Msg (t * testing.T , tr smux.Transport ) {
358
399
SubtestStress (t , Options {
359
400
tr : tr ,
@@ -431,6 +472,7 @@ func SubtestAll(t *testing.T, tr smux.Transport) {
431
472
SubtestStress1Conn1000Stream10Msg ,
432
473
SubtestStress1Conn100Stream100Msg10MB ,
433
474
SubtestStreamOpenStress ,
475
+ SubtestStreamReset ,
434
476
}
435
477
436
478
for _ , f := range tests {
You can’t perform that action at this time.
0 commit comments