Pass the client protocol around, don't infer it from clientAddr

This commit is contained in:
Frank Denis 2018-01-14 23:39:55 +01:00
parent d63c47b779
commit 5e252372d5
1 changed files with 4 additions and 8 deletions

View File

@ -101,7 +101,7 @@ func (proxy *Proxy) udpListener(listenAddr *net.UDPAddr) error {
}
packet := buffer[:length]
go func() {
proxy.processIncomingQuery(proxy.serversInfo.getOne(), proxy.mainProto, packet, &clientAddr, clientPc)
proxy.processIncomingQuery(proxy.serversInfo.getOne(), "udp", proxy.mainProto, packet, &clientAddr, clientPc)
}()
}
}()
@ -128,7 +128,7 @@ func (proxy *Proxy) tcpListener(listenAddr *net.TCPAddr) error {
if err != nil || len(packet) < MinDNSPacketSize {
return
}
proxy.processIncomingQuery(proxy.serversInfo.getOne(), "tcp", packet, nil, clientPc)
proxy.processIncomingQuery(proxy.serversInfo.getOne(), "tcp", "tcp", packet, nil, clientPc)
}()
}
}()
@ -172,14 +172,10 @@ func (proxy *Proxy) exchangeWithTCPServer(serverInfo *ServerInfo, encryptedQuery
return proxy.Decrypt(serverInfo, encryptedResponse, clientNonce)
}
func (proxy *Proxy) processIncomingQuery(serverInfo *ServerInfo, serverProto string, query []byte, clientAddr *net.Addr, clientPc net.Conn) {
func (proxy *Proxy) processIncomingQuery(serverInfo *ServerInfo, clientProto string, serverProto string, query []byte, clientAddr *net.Addr, clientPc net.Conn) {
if len(query) < MinDNSPacketSize || serverInfo == nil {
return
}
clientProto := "udp"
if clientAddr == nil {
clientProto = "tcp"
}
pluginsState := NewPluginsState(proxy, clientProto)
query, _ = pluginsState.ApplyQueryPlugins(query)
var response []byte
@ -209,7 +205,7 @@ func (proxy *Proxy) processIncomingQuery(serverInfo *ServerInfo, serverProto str
}
response, _ = pluginsState.ApplyResponsePlugins(response)
}
if clientAddr != nil {
if clientProto == "udp" {
if len(response) > MaxDNSUDPPacketSize {
response, err = TruncatedResponse(response)
if err != nil {