aboutsummaryrefslogtreecommitdiff
path: root/run.go
diff options
context:
space:
mode:
Diffstat (limited to 'run.go')
-rw-r--r--run.go18
1 files changed, 15 insertions, 3 deletions
diff --git a/run.go b/run.go
index b03d44a..bca6348 100644
--- a/run.go
+++ b/run.go
@@ -97,13 +97,25 @@ func Run() {
<-cc.Init()
cc.Log("<->", "handshake completed")
- if len(Conf().Servers) == 0 {
+ srvs := Conf().Servers
+ if len(srvs) == 0 {
cc.Log("<-", "no servers")
cc.Kick("No servers are configured.")
return
}
- addr, err := net.ResolveUDPAddr("udp", Conf().Servers[0].Addr)
+ srv := srvs[0]
+ lastSrv, err := authIface.LastSrv(cc.Name())
+ if err != nil && !Conf().ForceDefaultSrv && lastSrv != srv.Name {
+ for _, v := range srvs {
+ if v.Name == lastSrv {
+ srv = v
+ break
+ }
+ }
+ }
+
+ addr, err := net.ResolveUDPAddr("udp", srv.Addr)
if err != nil {
cc.Log("<-", "address resolution fail")
cc.Kick("Server address resolution failed.")
@@ -117,7 +129,7 @@ func Run() {
return
}
- connect(conn, Conf().Servers[0].Name, cc)
+ connect(conn, srv.Name, cc)
}()
}