Skip to content

Commit

Permalink
proxy: imp code
Browse files Browse the repository at this point in the history
  • Loading branch information
Mizzick committed May 22, 2024
1 parent ccd4394 commit 9d07061
Showing 1 changed file with 12 additions and 36 deletions.
48 changes: 12 additions & 36 deletions proxy/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -481,34 +481,22 @@ func (p *Proxy) Addrs(proto Proto) (addrs []net.Addr) {

switch proto {
case ProtoTCP:
return collectAddrs[net.Listener](p.tcpListen, func(l net.Listener) (addr net.Addr) {
return l.Addr()
})
return collectAddrs[net.Listener](p.tcpListen, net.Listener.Addr)
case ProtoTLS:
return collectAddrs[net.Listener](p.tlsListen, func(l net.Listener) (addr net.Addr) {
return l.Addr()
})
return collectAddrs[net.Listener](p.tlsListen, net.Listener.Addr)
case ProtoHTTPS:
return collectAddrs[net.Listener](p.httpsListen, func(l net.Listener) (addr net.Addr) {
return l.Addr()
})
return collectAddrs[net.Listener](p.httpsListen, net.Listener.Addr)
case ProtoUDP:
return collectAddrs[*net.UDPConn](p.udpListen, func(l *net.UDPConn) (addr net.Addr) {
return l.LocalAddr()
})
return collectAddrs[*net.UDPConn](p.udpListen, (*net.UDPConn).LocalAddr)
case ProtoQUIC:
return collectAddrs[*quic.EarlyListener](p.quicListen, func(l *quic.EarlyListener) (addr net.Addr) {
return l.Addr()
})
return collectAddrs[*quic.EarlyListener](p.quicListen, (*quic.EarlyListener).Addr)
case ProtoDNSCrypt:
// Using only UDP addrs here
//
// TODO: to do it better we should either do ProtoDNSCryptTCP/ProtoDNSCryptUDP
// or we should change the configuration so that it was not possible to
// set different ports for TCP/UDP listeners.
return collectAddrs[*net.UDPConn](p.dnsCryptUDPListen, func(l *net.UDPConn) (addr net.Addr) {
return l.LocalAddr()
})
return collectAddrs[*net.UDPConn](p.dnsCryptUDPListen, (*net.UDPConn).LocalAddr)
default:
panic("proto must be 'tcp', 'tls', 'https', 'quic', 'dnscrypt' or 'udp'")
}
Expand All @@ -533,29 +521,17 @@ func (p *Proxy) Addr(proto Proto) (addr net.Addr) {

switch proto {
case ProtoTCP:
return firstAddr[net.Listener](p.tcpListen, func(l net.Listener) (addr net.Addr) {
return l.Addr()
})
return firstAddr[net.Listener](p.tcpListen, net.Listener.Addr)
case ProtoTLS:
return firstAddr[net.Listener](p.tlsListen, func(l net.Listener) (addr net.Addr) {
return l.Addr()
})
return firstAddr[net.Listener](p.tlsListen, net.Listener.Addr)
case ProtoHTTPS:
return firstAddr[net.Listener](p.httpsListen, func(l net.Listener) (addr net.Addr) {
return l.Addr()
})
return firstAddr[net.Listener](p.httpsListen, net.Listener.Addr)
case ProtoUDP:
return firstAddr[*net.UDPConn](p.udpListen, func(l *net.UDPConn) (addr net.Addr) {
return l.LocalAddr()
})
return firstAddr[*net.UDPConn](p.udpListen, (*net.UDPConn).LocalAddr)
case ProtoQUIC:
return firstAddr[*quic.EarlyListener](p.quicListen, func(l *quic.EarlyListener) (addr net.Addr) {
return l.Addr()
})
return firstAddr[*quic.EarlyListener](p.quicListen, (*quic.EarlyListener).Addr)
case ProtoDNSCrypt:
return firstAddr[*net.UDPConn](p.dnsCryptUDPListen, func(l *net.UDPConn) (addr net.Addr) {
return l.LocalAddr()
})
return firstAddr[*net.UDPConn](p.dnsCryptUDPListen, (*net.UDPConn).LocalAddr)
default:
panic("proto must be 'tcp', 'tls', 'https', 'quic', 'dnscrypt' or 'udp'")
}
Expand Down

0 comments on commit 9d07061

Please sign in to comment.