]> Sergey Matveev's repositories - vors.git/commitdiff
Ability to prefer legacy IPv4
authorSergey Matveev <stargrave@stargrave.org>
Tue, 16 Apr 2024 18:55:29 +0000 (21:55 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Tue, 16 Apr 2024 19:43:31 +0000 (22:43 +0300)
cmd/client/main.go
cmd/server/main.go
internal/resolve.go
internal/version.go

index 44e5f63ee0a873ed6f6c3761249fc87c9a64d0cc88dc1a96cb9d585fbc2aaeec..c54d41d9524b5d814fae7b1ca0ab8ae6c8f68e2878fa71558a467f5060b28981 100644 (file)
@@ -87,6 +87,8 @@ func main() {
        vadRaw := flag.Uint("vad", 0, "VAD threshold")
        passwd := flag.String("passwd", "", "protected room's password")
        muteToggle := flag.String("mute-toggle", "", "path to FIFO to toggle mute")
+       prefer4 := flag.Bool("4", false,
+               "Prefer obsolete legacy IPv4 address during name resolution")
        version := flag.Bool("version", false, "print version")
        warranty := flag.Bool("warranty", false, "print warranty information")
        flag.Parse()
@@ -144,6 +146,7 @@ func main() {
                }
        }
 
+       vors.PreferIPv4 = *prefer4
        ctrl, err := net.DialTCP("tcp", nil, vors.MustResolveTCP(*srvAddr))
        if err != nil {
                log.Fatalln("dial server:", err)
index 51dd019cd2dea80eea6b7a56b9b0d101c48d70275cc9fe5f9166da926c3cfb00..4764ad16fd177a00ab432df8d66e4d2001d823b39985e97074a0f9f08a8105ed 100644 (file)
@@ -309,6 +309,8 @@ func main() {
        bind := flag.String("bind", "[::1]:"+strconv.Itoa(vors.DefaultPort),
                "host:TCP/UDP port to listen on")
        kpFile := flag.String("key", "key", "path to keypair file")
+       prefer4 := flag.Bool("4", false,
+               "Prefer obsolete legacy IPv4 address during name resolution")
        version := flag.Bool("version", false, "print version")
        warranty := flag.Bool("warranty", false, "print warranty information")
        flag.Parse()
@@ -331,6 +333,7 @@ func main() {
                Prv, Pub = data[:len(data)/2], data[len(data)/2:]
        }
 
+       vors.PreferIPv4 = *prefer4
        lnTCP, err := net.ListenTCP("tcp",
                net.TCPAddrFromAddrPort(netip.MustParseAddrPort(*bind)))
        if err != nil {
index ceffc33366d1269a9b303332f9a80e96d3c275527f25cf3c51883484170190ce..d64156c80adf85badf8b4b0a40ef8718eb7928dddc50484b4048929ebea75546 100644 (file)
@@ -1,31 +1,40 @@
 package internal
 
-import "net"
+import (
+       "log"
+       "net"
+)
 
 const DefaultPort = 12978
 
+var PreferIPv4 bool
+
 func MustResolveTCP(s string) (addr *net.TCPAddr) {
        var err error
-       addr, err = net.ResolveTCPAddr("tcp6", s)
-       if err == nil {
-               return addr
+       if !PreferIPv4 {
+               addr, err = net.ResolveTCPAddr("tcp6", s)
+               if err == nil {
+                       return addr
+               }
        }
        addr, err = net.ResolveTCPAddr("tcp4", s)
        if err != nil {
-               panic(err)
+               log.Fatal(err)
        }
        return
 }
 
 func MustResolveUDP(s string) (addr *net.UDPAddr) {
        var err error
-       addr, err = net.ResolveUDPAddr("udp6", s)
-       if err == nil {
-               return addr
+       if !PreferIPv4 {
+               addr, err = net.ResolveUDPAddr("udp6", s)
+               if err == nil {
+                       return addr
+               }
        }
        addr, err = net.ResolveUDPAddr("udp4", s)
        if err != nil {
-               panic(err)
+               log.Fatal(err)
        }
        return
 }
index ecc49fb709acb59da93bdaf8caf6d227ad9acf599d81a1b74a98a982337c3190..741fb4075e057196380210174d67c361a4021be5e0d374512b3a0b6240673927 100644 (file)
@@ -3,7 +3,7 @@ package internal
 import "runtime"
 
 const (
-       Version  = "2.2.0"
+       Version  = "2.3.0"
        Warranty = `Copyright (C) 2024 Sergey Matveev
 
 This program is free software: you can redistribute it and/or modify