diff --git a/cmd/application/conns.go b/cmd/application/conns.go index 6abc9785..290b0c4b 100644 --- a/cmd/application/conns.go +++ b/cmd/application/conns.go @@ -315,13 +315,7 @@ readLoop: transports: for i, t := range possibleTransports { - wrappedReg, wrapped, err := t.WrapConnection(&received, clientConn, originalDstIP, regManager) - reg, ok := wrappedReg.(*cj.DecoyRegistration) - if !ok { - logger.Errorf("unexpected returned reg type from transport: %T, expected: %T", wrapped, reg) - delete(possibleTransports, i) - continue transports - } + wrappedReg, wrappedConn, err := t.WrapConnection(&received, clientConn, originalDstIP, regManager) err = generalizeErr(err) if errors.Is(err, transports.ErrTryAgain) { @@ -342,6 +336,16 @@ readLoop: return } + ok := false + reg, ok = wrappedReg.(*cj.DecoyRegistration) + if !ok { + logger.Errorf("unexpected returned reg type from transport: %T, expected: %T", wrapped, reg) + delete(possibleTransports, i) + continue transports + } + // set outer wrapped var + wrapped = wrappedConn + // We found our transport! First order of business: disable deadline err = wrapped.SetDeadline(time.Time{}) if err != nil {