Skip to content

Commit da45ee4

Browse files
author
null
committed
?
1 parent 711f987 commit da45ee4

2 files changed

Lines changed: 3 additions & 70 deletions

File tree

transport/internet/finalmask/finalmask.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,9 @@ func (l *tcpListener) Accept() (net.Conn, error) {
256256

257257
newConn, err := l.m.WrapConnServer(conn)
258258
if err != nil {
259-
errors.LogErrorInner(context.Background(), err, "[mask] failed to wrap connection, falling back to the original connection")
260-
return conn, nil
259+
errors.LogErrorInner(context.Background(), err, "[mask] failed to wrap connection, closing the original connection")
260+
conn.Close()
261+
return nil, err
261262
}
262263

263264
return newConn, nil

transport/internet/finalmask/tcp_test.go

Lines changed: 0 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,6 @@ type layerMaskTcp struct {
4747
mask finalmask.Tcpmask
4848
}
4949

50-
type failingWrapMask struct{}
51-
52-
func (failingWrapMask) TCP() {}
53-
func (f failingWrapMask) WrapConnClient(raw net.Conn) (net.Conn, error) { return raw, nil }
54-
func (f failingWrapMask) WrapConnServer(raw net.Conn) (net.Conn, error) {
55-
return nil, io.ErrClosedPipe
56-
}
57-
5850
func TestConnReadWrite(t *testing.T) {
5951
cases := []layerMaskTcp{
6052
{
@@ -255,63 +247,3 @@ func TestTCPcustomClientRejectsMismatchedServerSequence(t *testing.T) {
255247
t.Fatalf("expected server timeout after client auth failure, got %v", readErr)
256248
}
257249
}
258-
259-
func TestTCPWrapListenerRejectsImmediateWrapErrors(t *testing.T) {
260-
clientManager := finalmask.NewTcpmaskManager([]finalmask.Tcpmask{failingWrapMask{}})
261-
serverManager := finalmask.NewTcpmaskManager([]finalmask.Tcpmask{failingWrapMask{}})
262-
263-
rawLn, err := net.Listen("tcp", "127.0.0.1:0")
264-
if err != nil {
265-
t.Fatal(err)
266-
}
267-
defer rawLn.Close()
268-
269-
ln, err := serverManager.WrapListener(rawLn)
270-
if err != nil {
271-
t.Fatal(err)
272-
}
273-
274-
accepted := make(chan struct {
275-
conn net.Conn
276-
err error
277-
}, 1)
278-
go func() {
279-
conn, err := ln.Accept()
280-
accepted <- struct {
281-
conn net.Conn
282-
err error
283-
}{conn: conn, err: err}
284-
}()
285-
286-
clientRaw, err := net.Dial("tcp", rawLn.Addr().String())
287-
if err != nil {
288-
t.Fatal(err)
289-
}
290-
defer clientRaw.Close()
291-
292-
client, err := clientManager.WrapConnClient(clientRaw)
293-
if err != nil {
294-
t.Fatal(err)
295-
}
296-
297-
_ = client.SetDeadline(time.Now().Add(time.Second))
298-
299-
writeErr := make(chan error, 1)
300-
go func() {
301-
_, err := client.Write([]byte("payload"))
302-
writeErr <- err
303-
}()
304-
305-
result := <-accepted
306-
if result.err == nil {
307-
if result.conn != nil {
308-
result.conn.Close()
309-
}
310-
t.Fatal("expected wrapped listener accept to fail")
311-
}
312-
if result.conn != nil {
313-
result.conn.Close()
314-
t.Fatalf("expected no raw conn on wrapped listener failure, got %T", result.conn)
315-
}
316-
<-writeErr
317-
}

0 commit comments

Comments
 (0)