aboutsummaryrefslogtreecommitdiff
path: root/process.go
diff options
context:
space:
mode:
Diffstat (limited to 'process.go')
-rw-r--r--process.go46
1 files changed, 23 insertions, 23 deletions
diff --git a/process.go b/process.go
index 208638a..01e27b1 100644
--- a/process.go
+++ b/process.go
@@ -92,18 +92,9 @@ func (cc *ClientConn) process(pkt mt.Pkt) {
return
}
- ip := cc.RemoteAddr().(*net.UDPAddr).IP.String()
- if DefaultAuth().Banned(ip, cc.Name()) {
- cc.Log("<-", "banned")
- cc.Kick("Banned by proxy.")
- return
- }
-
- playersMu.Lock()
- _, ok := players[cc.Name()]
- if ok {
- cc.Log("<-", "already connected")
- ack, _ := cc.SendCmd(&mt.ToCltKick{Reason: mt.AlreadyConnected})
+ if cc.Name() == "singleplayer" {
+ cc.Log("<-", "name is singleplayer")
+ ack, _ := cc.SendCmd(&mt.ToCltKick{Reason: mt.BadName})
select {
case <-cc.Closed():
@@ -111,16 +102,13 @@ func (cc *ClientConn) process(pkt mt.Pkt) {
cc.Close()
}
- playersMu.Unlock()
return
}
- players[cc.Name()] = struct{}{}
- playersMu.Unlock()
-
- if cc.Name() == "singleplayer" {
- cc.Log("<-", "name is singleplayer")
- ack, _ := cc.SendCmd(&mt.ToCltKick{Reason: mt.BadName})
+ // user limit
+ if len(players) >= Conf().UserLimit {
+ cc.Log("<-", "player limit reached")
+ ack, _ := cc.SendCmd(&mt.ToCltKick{Reason: mt.TooManyClts})
select {
case <-cc.Closed():
@@ -131,10 +119,18 @@ func (cc *ClientConn) process(pkt mt.Pkt) {
return
}
- // user limit
- if len(players) >= Conf().UserLimit {
- cc.Log("<-", "player limit reached")
- ack, _ := cc.SendCmd(&mt.ToCltKick{Reason: mt.TooManyClts})
+ ip := cc.RemoteAddr().(*net.UDPAddr).IP.String()
+ if DefaultAuth().Banned(ip, cc.Name()) {
+ cc.Log("<-", "banned")
+ cc.Kick("Banned by proxy.")
+ return
+ }
+
+ playersMu.Lock()
+ _, ok := players[cc.Name()]
+ if ok {
+ cc.Log("<-", "already connected")
+ ack, _ := cc.SendCmd(&mt.ToCltKick{Reason: mt.AlreadyConnected})
select {
case <-cc.Closed():
@@ -142,9 +138,13 @@ func (cc *ClientConn) process(pkt mt.Pkt) {
cc.Close()
}
+ playersMu.Unlock()
return
}
+ players[cc.Name()] = struct{}{}
+ playersMu.Unlock()
+
// reply
if DefaultAuth().Exists(cc.Name()) {
cc.auth.method = mt.SRP