@@ -1452,6 +1452,65 @@ func TestReverseCallAliased(t *testing.T) {
1452
1452
closer ()
1453
1453
}
1454
1454
1455
+ // RevCallDropTestServerHandler attempts to make a client call on a closed connection.
1456
+ type RevCallDropTestServerHandler struct {
1457
+ closeConn func ()
1458
+ res chan error
1459
+ }
1460
+
1461
+ func (h * RevCallDropTestServerHandler ) Call (ctx context.Context ) error {
1462
+ revClient , ok := ExtractReverseClient [RevCallTestClientProxy ](ctx )
1463
+ if ! ok {
1464
+ return fmt .Errorf ("no reverse client" )
1465
+ }
1466
+
1467
+ h .closeConn ()
1468
+ time .Sleep (time .Second )
1469
+
1470
+ _ , err := revClient .CallOnClient (7 )
1471
+ h .res <- err
1472
+
1473
+ return nil
1474
+ }
1475
+
1476
+ func TestReverseCallDroppedConn (t * testing.T ) {
1477
+ // setup server
1478
+
1479
+ hnd := & RevCallDropTestServerHandler {
1480
+ res : make (chan error ),
1481
+ }
1482
+
1483
+ rpcServer := NewServer (WithReverseClient [RevCallTestClientProxy ]("Client" ))
1484
+ rpcServer .Register ("Server" , hnd )
1485
+
1486
+ // httptest stuff
1487
+ testServ := httptest .NewServer (rpcServer )
1488
+ defer testServ .Close ()
1489
+
1490
+ // setup client
1491
+
1492
+ var client struct {
1493
+ Call func () error
1494
+ }
1495
+ closer , err := NewMergeClient (context .Background (), "ws://" + testServ .Listener .Addr ().String (), "Server" , []interface {}{
1496
+ & client ,
1497
+ }, nil , WithClientHandler ("Client" , & RevCallTestClientHandler {}))
1498
+ require .NoError (t , err )
1499
+
1500
+ hnd .closeConn = closer
1501
+
1502
+ // do the call!
1503
+ e := client .Call ()
1504
+
1505
+ require .Error (t , e )
1506
+ require .Contains (t , e .Error (), "websocket connection closed" )
1507
+
1508
+ res := <- hnd .res
1509
+ require .Error (t , res )
1510
+ require .Contains (t , res .Error (), "RPC client error: sendRequest failed: websocket routine exiting" )
1511
+ time .Sleep (100 * time .Millisecond )
1512
+ }
1513
+
1455
1514
type BigCallTestServerHandler struct {
1456
1515
}
1457
1516
0 commit comments