Loop on errors, rather than failing
This commit is contained in:
16
main.go
16
main.go
@@ -35,11 +35,12 @@ func Forward(server *tsnet.Server, proto, port, dst string, finish chan error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
finish <- err
|
finish <- err
|
||||||
}
|
}
|
||||||
defer ln.Close()
|
defer ln.Close();
|
||||||
err = netforward.Forward(Dialer { proto: proto, addr: dst }, ln)
|
for true {
|
||||||
if err != nil {
|
err = netforward.Forward(Dialer { proto: proto, addr: dst }, ln);
|
||||||
finish <- err
|
log.Print(err);
|
||||||
}
|
}
|
||||||
|
finish <- err;
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -58,12 +59,11 @@ func main() {
|
|||||||
}
|
}
|
||||||
defer s.Close()
|
defer s.Close()
|
||||||
|
|
||||||
err_chan := make(chan error)
|
finish := make(chan error)
|
||||||
for _, arg := range os.Args[2:] {
|
for _, arg := range os.Args[2:] {
|
||||||
args := strings.SplitN(arg, ":", 3)
|
args := strings.SplitN(arg, ":", 3)
|
||||||
proto, port, dst := args[0], args[1], args[2]
|
proto, port, dst := args[0], args[1], args[2]
|
||||||
go Forward(s, proto, port, dst, err_chan);
|
go Forward(s, proto, port, dst, finish);
|
||||||
}
|
}
|
||||||
err := <- err_chan
|
<- finish;
|
||||||
log.Fatal(err)
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user