From 5e252372d54cf73ae2cf6b85e0c4136337999434 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Sun, 14 Jan 2018 23:39:55 +0100 Subject: [PATCH] Pass the client protocol around, don't infer it from clientAddr --- dnscrypt-proxy/main.go | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/dnscrypt-proxy/main.go b/dnscrypt-proxy/main.go index 4d61be66..203f2428 100644 --- a/dnscrypt-proxy/main.go +++ b/dnscrypt-proxy/main.go @@ -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 {