|
|
@@ -81,21 +81,22 @@ func (h *Handler) Process(ctx context.Context, link *core.Link, dialer proxy.Dia
|
|
|
input := link.Reader
|
|
|
output := link.Writer
|
|
|
|
|
|
- if h.config.DomainStrategy == Config_USE_IP && destination.Address.Family().IsDomain() {
|
|
|
- ip := h.resolveIP(ctx, destination.Address.Domain())
|
|
|
- if ip != nil {
|
|
|
- destination = net.Destination{
|
|
|
- Network: destination.Network,
|
|
|
- Address: ip,
|
|
|
- Port: destination.Port,
|
|
|
+ var conn internet.Connection
|
|
|
+ err := retry.ExponentialBackoff(5, 100).On(func() error {
|
|
|
+ dialDest := destination
|
|
|
+ if h.config.DomainStrategy == Config_USE_IP && dialDest.Address.Family().IsDomain() {
|
|
|
+ ip := h.resolveIP(ctx, dialDest.Address.Domain())
|
|
|
+ if ip != nil {
|
|
|
+ dialDest = net.Destination{
|
|
|
+ Network: dialDest.Network,
|
|
|
+ Address: ip,
|
|
|
+ Port: dialDest.Port,
|
|
|
+ }
|
|
|
+ newError("dialing to to ", dialDest).WriteToLog(session.ExportIDToError(ctx))
|
|
|
}
|
|
|
- newError("changing destination to ", destination).WriteToLog(session.ExportIDToError(ctx))
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- var conn internet.Connection
|
|
|
- err := retry.ExponentialBackoff(5, 100).On(func() error {
|
|
|
- rawConn, err := dialer.Dial(ctx, destination)
|
|
|
+ rawConn, err := dialer.Dial(ctx, dialDest)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -105,7 +106,7 @@ func (h *Handler) Process(ctx context.Context, link *core.Link, dialer proxy.Dia
|
|
|
if err != nil {
|
|
|
return newError("failed to open connection to ", destination).Base(err)
|
|
|
}
|
|
|
- defer conn.Close()
|
|
|
+ defer conn.Close() // nolint: errcheck
|
|
|
|
|
|
ctx, cancel := context.WithCancel(ctx)
|
|
|
timer := signal.CancelAfterInactivity(ctx, cancel, h.policy().Timeouts.ConnectionIdle)
|