Browse Source

fix: panic in dns over quic when address is a ip

AkinoKaede 2 years ago
parent
commit
5c995d97f4
1 changed files with 10 additions and 1 deletions
  1. 10 1
      app/dns/nameserver_quic.go

+ 10 - 1
app/dns/nameserver_quic.go

@@ -378,7 +378,16 @@ func (s *QUICNameServer) getConnection(ctx context.Context) (quic.Connection, er
 
 
 func (s *QUICNameServer) openConnection(ctx context.Context) (quic.Connection, error) {
 func (s *QUICNameServer) openConnection(ctx context.Context) (quic.Connection, error) {
 	tlsConfig := tls.Config{
 	tlsConfig := tls.Config{
-		ServerName: s.destination.Address.Domain(),
+		ServerName: func() string {
+			switch s.destination.Address.Family() {
+			case net.AddressFamilyIPv4, net.AddressFamilyIPv6:
+				return s.destination.Address.IP().String()
+			case net.AddressFamilyDomain:
+				return s.destination.Address.Domain()
+			default:
+				panic("unknown address family")
+			}
+		}(),
 	}
 	}
 	quicConfig := &quic.Config{
 	quicConfig := &quic.Config{
 		HandshakeIdleTimeout: handshakeIdleTimeout,
 		HandshakeIdleTimeout: handshakeIdleTimeout,