Commit 6a32eb42 authored by nanahira's avatar nanahira

add more timeouts

parent 5a114b60
Pipeline #836 passed with stage
in 4 minutes and 22 seconds
...@@ -7,6 +7,7 @@ import ( ...@@ -7,6 +7,7 @@ import (
"net" "net"
"net/http" "net/http"
"os" "os"
"time"
"golang.org/x/net/websocket" "golang.org/x/net/websocket"
) )
...@@ -103,6 +104,11 @@ func UnpackData2(buf []byte) (addr *net.UDPAddr, data []byte) { ...@@ -103,6 +104,11 @@ func UnpackData2(buf []byte) (addr *net.UDPAddr, data []byte) {
func transferHostTrafficToGuest(host *net.UDPConn, guest *net.UDPConn, guestAddr *net.UDPAddr) { func transferHostTrafficToGuest(host *net.UDPConn, guest *net.UDPConn, guestAddr *net.UDPAddr) {
buffer := make([]byte, 2048) buffer := make([]byte, 2048)
for { for {
derr := host.SetReadDeadline(time.Now().Add(2 * time.Minute))
if derr != nil {
log.Println("Guest deadline error: ", derr)
return
}
length, _, err := host.ReadFromUDP(buffer) length, _, err := host.ReadFromUDP(buffer)
if err != nil { if err != nil {
log.Println("Host read error: ", err) log.Println("Host read error: ", err)
...@@ -139,6 +145,11 @@ func listenUDP(ws *websocket.Conn) { ...@@ -139,6 +145,11 @@ func listenUDP(ws *websocket.Conn) {
ws.Write([]byte(reply)) ws.Write([]byte(reply))
for { for {
message := make([]byte, 2048) message := make([]byte, 2048)
derr := guest.SetReadDeadline(time.Now().Add(2 * time.Minute))
if derr != nil {
log.Println("Guest deadline error: ", derr)
return
}
length, guestAddr, err := guest.ReadFromUDP(message) length, guestAddr, err := guest.ReadFromUDP(message)
channel, ok := guestChannelList[guestAddr.String()] channel, ok := guestChannelList[guestAddr.String()]
if err != nil { if err != nil {
...@@ -155,7 +166,16 @@ func listenUDP(ws *websocket.Conn) { ...@@ -155,7 +166,16 @@ func listenUDP(ws *websocket.Conn) {
} }
reply = fmt.Sprintf("CONNECT %s:%d", IP, host.LocalAddr().(*net.UDPAddr).Port) reply = fmt.Sprintf("CONNECT %s:%d", IP, host.LocalAddr().(*net.UDPAddr).Port)
ws.Write([]byte(reply)) ws.Write([]byte(reply))
_, hostAddr, _ := host.ReadFromUDP(make([]byte, 2048)) derr := host.SetReadDeadline(time.Now().Add(2 * time.Minute))
if derr != nil {
log.Println("Knock deadline error: ", derr)
return
}
_, hostAddr, kerr := host.ReadFromUDP(make([]byte, 2048))
if kerr != nil {
log.Println("Host knock error: ", kerr)
return
}
reply = fmt.Sprintf("CONNECTED %s:%d", IP, host.LocalAddr().(*net.UDPAddr).Port) reply = fmt.Sprintf("CONNECTED %s:%d", IP, host.LocalAddr().(*net.UDPAddr).Port)
ws.Write([]byte(reply)) ws.Write([]byte(reply))
host.WriteToUDP(message[:length], hostAddr) host.WriteToUDP(message[:length], hostAddr)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment