Revert "plugin/forward: Continue waiting after receiving malformed responses (#6014)" (#6270)

This reverts commit 604a902e2c.
This commit is contained in:
Chris O'Haver
2023-08-14 20:33:37 -04:00
committed by GitHub
parent 90d55611a2
commit 678d0333af

View File

@@ -7,7 +7,6 @@ package proxy
import ( import (
"context" "context"
"io" "io"
"net"
"strconv" "strconv"
"sync/atomic" "sync/atomic"
"time" "time"
@@ -118,20 +117,11 @@ func (p *Proxy) Connect(ctx context.Context, state request.Request, opts Options
for { for {
ret, err = pc.c.ReadMsg() ret, err = pc.c.ReadMsg()
if err != nil { if err != nil {
// For UDP, if the error is not a network error keep waiting for a valid response to prevent malformed pc.c.Close() // not giving it back
// spoofs from blocking the upstream response.
// In the case this is a legitimate malformed response from the upstream, this will result in a timeout.
if proto == "udp" {
if _, ok := err.(net.Error); !ok {
continue
}
}
pc.c.Close() // connection closed by peer, close the persistent connection
if err == io.EOF && cached { if err == io.EOF && cached {
return nil, ErrCachedClosed return nil, ErrCachedClosed
} }
// recovery the origin Id after upstream.
// recover the origin Id after upstream.
if ret != nil { if ret != nil {
ret.Id = originId ret.Id = originId
} }