aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2021-08-28 14:18:56 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2021-08-28 14:18:56 +0200
commit2f9a8ca29b36a753d004aa9e111f18f7fc87c1fe (patch)
tree36c5b49e8e7159c3053cf26e09b2982a9cbb8fbd
parenteab858ba6b6e1d319c2d02cd0a7a13974746e7ef (diff)
Differentiate between timeouts and disconnects
-rw-r--r--client_conn.go8
-rw-r--r--connect.go5
-rw-r--r--content.go7
-rw-r--r--main.go5
-rw-r--r--server_conn.go7
5 files changed, 24 insertions, 8 deletions
diff --git a/client_conn.go b/client_conn.go
index 4be45ba..d665cc5 100644
--- a/client_conn.go
+++ b/client_conn.go
@@ -10,6 +10,7 @@ import (
"github.com/HimbeerserverDE/srp"
"github.com/anon55555/mt"
+ "github.com/anon55555/mt/rudp"
)
type clientState uint8
@@ -63,7 +64,12 @@ func handleClt(cc *clientConn) {
pkt, err := cc.Recv()
if err != nil {
if errors.Is(err, net.ErrClosed) {
- cc.log("<->", "disconnect")
+ if errors.Is(cc.WhyClosed(), rudp.ErrTimedOut) {
+ cc.log("<->", "timeout")
+ } else {
+ cc.log("<->", "disconnect")
+ }
+
if cc.name != "" {
playersMu.Lock()
delete(players, cc.name)
diff --git a/connect.go b/connect.go
index 7ecf30a..4be538a 100644
--- a/connect.go
+++ b/connect.go
@@ -6,10 +6,13 @@ import (
"github.com/anon55555/mt"
)
-func connect(conn net.Conn) *serverConn {
+func connect(conn net.Conn, cc *clientConn) *serverConn {
sc := &serverConn{
Peer: mt.Connect(conn),
+ clt: cc,
}
+ sc.log("-->", "connect")
+ cc.srv = sc
go handleSrv(sc)
return sc
diff --git a/content.go b/content.go
index fe22407..6cfb958 100644
--- a/content.go
+++ b/content.go
@@ -10,6 +10,7 @@ import (
"github.com/HimbeerserverDE/srp"
"github.com/anon55555/mt"
+ "github.com/anon55555/mt/rudp"
)
type mediaFile struct {
@@ -63,7 +64,11 @@ func handleContent(cc *contentConn) {
pkt, err := cc.Recv()
if err != nil {
if errors.Is(err, net.ErrClosed) {
- cc.log("<->", "disconnect")
+ if errors.Is(cc.WhyClosed(), rudp.ErrTimedOut) {
+ cc.log("<->", "timeout")
+ } else {
+ cc.log("<->", "disconnect")
+ }
break
}
diff --git a/main.go b/main.go
index 5706830..b2bf21c 100644
--- a/main.go
+++ b/main.go
@@ -123,10 +123,7 @@ func main() {
return
}
- sc := connect(conn)
- sc.clt = cc
- cc.srv = sc
- sc.log("-->", "connect")
+ connect(conn, cc)
}()
}
}
diff --git a/server_conn.go b/server_conn.go
index 5b74b5d..5cd58bf 100644
--- a/server_conn.go
+++ b/server_conn.go
@@ -9,6 +9,7 @@ import (
"github.com/HimbeerserverDE/srp"
"github.com/anon55555/mt"
+ "github.com/anon55555/mt/rudp"
)
type serverConn struct {
@@ -54,7 +55,11 @@ func handleSrv(sc *serverConn) {
pkt, err := sc.Recv()
if err != nil {
if errors.Is(err, net.ErrClosed) {
- sc.log("<->", "disconnect")
+ if errors.Is(sc.WhyClosed(), rudp.ErrTimedOut) {
+ sc.log("<->", "timeout")
+ } else {
+ sc.log("<->", "disconnect")
+ }
break
}