|
|
@@ -134,8 +134,7 @@ func (s *Server) handleConnection(ctx context.Context, conn internet.Connection,
|
|
|
request, bodyReader, err := ReadTCPSession(s.user, bufferedReader)
|
|
|
if err != nil {
|
|
|
log.Access(conn.RemoteAddr(), "", log.AccessRejected, err)
|
|
|
- log.Info("Shadowsocks|Server: Failed to create request from: ", conn.RemoteAddr(), ": ", err)
|
|
|
- return err
|
|
|
+ return errors.Base(err).Message("Shadowsocks|Server: Failed to create request from: ", conn.RemoteAddr())
|
|
|
}
|
|
|
conn.SetReadDeadline(time.Time{})
|
|
|
|
|
|
@@ -147,9 +146,8 @@ func (s *Server) handleConnection(ctx context.Context, conn internet.Connection,
|
|
|
|
|
|
ctx = protocol.ContextWithUser(ctx, request.User)
|
|
|
|
|
|
- ctx, cancel := context.WithCancel(ctx)
|
|
|
userSettings := s.user.GetSettings()
|
|
|
- timer := signal.CancelAfterInactivity(ctx, cancel, userSettings.PayloadTimeout)
|
|
|
+ ctx, timer := signal.CancelAfterInactivity(ctx, userSettings.PayloadTimeout)
|
|
|
ray, err := dispatcher.Dispatch(ctx, dest)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
@@ -159,8 +157,7 @@ func (s *Server) handleConnection(ctx context.Context, conn internet.Connection,
|
|
|
bufferedWriter := buf.NewBufferedWriter(conn)
|
|
|
responseWriter, err := WriteTCPResponse(request, bufferedWriter)
|
|
|
if err != nil {
|
|
|
- log.Warning("Shadowsocks|Server: Failed to write response: ", err)
|
|
|
- return err
|
|
|
+ return errors.Base(err).Message("Shadowsocks|Server: Failed to write response.")
|
|
|
}
|
|
|
|
|
|
payload, err := ray.InboundOutput().Read()
|
|
|
@@ -177,8 +174,7 @@ func (s *Server) handleConnection(ctx context.Context, conn internet.Connection,
|
|
|
}
|
|
|
|
|
|
if err := buf.PipeUntilEOF(timer, ray.InboundOutput(), responseWriter); err != nil {
|
|
|
- log.Info("Shadowsocks|Server: Failed to transport all TCP response: ", err)
|
|
|
- return err
|
|
|
+ return errors.Base(err).Message("Shadowsocks|Server: Failed to transport all TCP response.")
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
@@ -188,18 +184,15 @@ func (s *Server) handleConnection(ctx context.Context, conn internet.Connection,
|
|
|
defer ray.InboundInput().Close()
|
|
|
|
|
|
if err := buf.PipeUntilEOF(timer, bodyReader, ray.InboundInput()); err != nil {
|
|
|
- log.Info("Shadowsocks|Server: Failed to transport all TCP request: ", err)
|
|
|
- return err
|
|
|
+ return errors.Base(err).Message("Shadowsocks|Server: Failed to transport all TCP request.")
|
|
|
}
|
|
|
return nil
|
|
|
})
|
|
|
|
|
|
if err := signal.ErrorOrFinish2(ctx, requestDone, responseDone); err != nil {
|
|
|
- log.Info("Shadowsocks|Server: Connection ends with ", err)
|
|
|
- cancel()
|
|
|
ray.InboundInput().CloseError()
|
|
|
ray.InboundOutput().CloseError()
|
|
|
- return err
|
|
|
+ return errors.Base(err).Message("Shadowsocks|Server: Connection ends.")
|
|
|
}
|
|
|
|
|
|
runtime.KeepAlive(timer)
|