兼容Android环境运行导致无法解析DNS问题,修改默认UDP队列长度从128到1024
This commit is contained in:
@ -1,10 +1,12 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"runtime"
|
||||
@ -35,14 +37,15 @@ func init() {
|
||||
flag.StringVar(&configureFile, "C", "", "configure file")
|
||||
flag.BoolVar(&baseCfg.Debug, "D", false, "enable debug log")
|
||||
flag.BoolVar(&printVersion, "V", false, "print version")
|
||||
flag.StringVar(&baseCfg.ExternalResolver, "NS", "", "External DNS Server")
|
||||
if pprofEnabled {
|
||||
flag.StringVar(&pprofAddr, "P", ":6060", "profiling HTTP server address")
|
||||
}
|
||||
flag.Parse()
|
||||
|
||||
if printVersion {
|
||||
fmt.Fprintf(os.Stdout, "gost %s (%s %s/%s)\nEnhanced:\n%s\n",
|
||||
gost.Version, runtime.Version(), runtime.GOOS, runtime.GOARCH, gost.Enhanced)
|
||||
fmt.Fprintf(os.Stdout, "gost %s (%s %s/%s)\n",
|
||||
gost.Version, runtime.Version(), runtime.GOOS, runtime.GOARCH)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
@ -85,6 +88,17 @@ func main() {
|
||||
|
||||
gost.DefaultTLSConfig = tlsConfig
|
||||
|
||||
if baseCfg.ExternalResolver != "" {
|
||||
gost.DefaultExternalResolver = parseResolver(baseCfg.ExternalResolver)
|
||||
gost.DefaultExternalResolver.Init()
|
||||
} else if os.Getenv("ANDROID_ROOT") != "" {
|
||||
log.Logf("Android detected modify default DNS server to %v", gost.DefaultDNSServer)
|
||||
net.DefaultResolver = &net.Resolver{Dial: func(ctx context.Context, network, address string) (net.Conn, error) {
|
||||
d := net.Dialer{}
|
||||
return d.DialContext(ctx, network, gost.DefaultDNSServer)
|
||||
}, PreferGo: true}
|
||||
}
|
||||
|
||||
if err := start(); err != nil {
|
||||
log.Log(err)
|
||||
os.Exit(1)
|
||||
|
@ -28,10 +28,11 @@ func (l *stringList) Set(value string) error {
|
||||
}
|
||||
|
||||
type route struct {
|
||||
ServeNodes stringList
|
||||
ChainNodes stringList
|
||||
Retries int
|
||||
Mark int
|
||||
ServeNodes stringList
|
||||
ChainNodes stringList
|
||||
Retries int
|
||||
Mark int
|
||||
ExternalResolver string
|
||||
}
|
||||
|
||||
func (r *route) parseChain() (*gost.Chain, error) {
|
||||
|
Reference in New Issue
Block a user