mirror of
https://github.com/xtaci/kcptun.git
synced 2024-04-21 12:32:32 +00:00
support unix domain socket
This commit is contained in:
+17
-11
@@ -43,6 +43,13 @@ func handleMux(conn io.ReadWriteCloser, config *Config) {
|
||||
return
|
||||
}
|
||||
defer mux.Close()
|
||||
|
||||
// check if target is unix domain socket
|
||||
var isUnix bool
|
||||
if _, _, err := net.SplitHostPort(config.Target); err != nil {
|
||||
isUnix = true
|
||||
}
|
||||
|
||||
for {
|
||||
stream, err := mux.AcceptStream()
|
||||
if err != nil {
|
||||
@@ -51,20 +58,19 @@ func handleMux(conn io.ReadWriteCloser, config *Config) {
|
||||
}
|
||||
|
||||
go func(p1 *smux.Stream) {
|
||||
var err1, err2 error
|
||||
var p2 net.Conn
|
||||
|
||||
p2, err1 = net.Dial("tcp", config.Target)
|
||||
if err1 != nil { // retry with unix domain socket
|
||||
p2, err2 = net.Dial("unix", config.Target)
|
||||
if err2 != nil {
|
||||
log.Println(err1)
|
||||
log.Println(err2)
|
||||
p1.Close()
|
||||
return
|
||||
}
|
||||
var err error
|
||||
if !isUnix {
|
||||
p2, err = net.Dial("tcp", config.Target)
|
||||
} else {
|
||||
p2, err = net.Dial("unix", config.Target)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
p1.Close()
|
||||
return
|
||||
}
|
||||
handleClient(p1, p2, config.Quiet)
|
||||
}(stream)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user