Add interrupt handlers to tcp server/client

This commit is contained in:
eyedeekay
2025-02-03 16:30:12 -05:00
parent 86f9c95b84
commit 37d1af6308
2 changed files with 27 additions and 17 deletions

View File

@ -89,13 +89,18 @@ func (t *TCPClient) Start() error {
defer listener.Close()
t.I2PTunnelStatus = i2ptunnel.I2PTunnelStatusRunning
for {
con, err := listener.Accept()
if err != nil {
continue
select {
case <-t.done:
return nil
default:
con, err := listener.Accept()
if err != nil {
continue
}
defer con.Close()
ctx := context.Background()
stream.Forward(ctx, con, i2pConn, config.DefaultConfig())
}
defer con.Close()
ctx := context.Background()
stream.Forward(ctx, con, i2pConn, config.DefaultConfig())
}
}

View File

@ -79,19 +79,24 @@ func (t *TCPServer) Start() error {
t.I2PTunnelStatus = i2ptunnel.I2PTunnelStatusRunning
limitedI2PListener := limitedlistener.NewLimitedListener(i2pListener, limitedlistener.WithMaxConnections(t.LimitedConfig.MaxConns), limitedlistener.WithRateLimit(t.LimitedConfig.RateLimit))
for {
con, err := limitedI2PListener.Accept()
if err != nil {
continue
}
select {
case <-t.done:
return nil
default:
con, err := limitedI2PListener.Accept()
if err != nil {
continue
}
defer con.Close()
lCon, err := net.Dial("tcp", t.Target())
if err != nil {
continue
defer con.Close()
lCon, err := net.Dial("tcp", t.Target())
if err != nil {
continue
}
defer lCon.Close()
ctx := context.Background()
stream.Forward(ctx, con, lCon, config.DefaultConfig())
}
defer lCon.Close()
ctx := context.Background()
stream.Forward(ctx, con, lCon, config.DefaultConfig())
}
}