diff --git a/source/src/server.cpp b/source/src/server.cpp index caa91d85..0586a780 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -2363,6 +2363,7 @@ void localconnect() void initserver(bool dedicated, int uprate, const char *sdesc, const char *ip, int serverport, const char *master, const char *passwd, int maxcl, const char *maprot, const char *adminpwd, const char *srvmsg, int scthreshold) { + if(serverport<=0) serverport = CUBE_DEFAULT_SERVER_PORT; if(passwd) s_strcpy(serverpassword, passwd); maxclients = maxcl > 0 ? min(maxcl, MAXCLIENTS) : DEFAULTCLIENTS; servermsinit(master ? master : AC_MASTER_URI, ip, CUBE_SERVINFO_PORT(serverport), sdesc, dedicated); @@ -2445,7 +2446,7 @@ int main(int argc, char **argv) } if(enet_initialize()<0) fatal("Unable to initialise network module"); - initserver(true, uprate, sdesc, ip, port > 0 ? port : CUBE_DEFAULT_SERVER_PORT, master, passwd, maxcl, maprot, adminpasswd, srvmsg, scthreshold); + initserver(true, uprate, sdesc, ip, port, master, passwd, maxcl, maprot, adminpasswd, srvmsg, scthreshold); return EXIT_SUCCESS; } #endif diff --git a/source/src/serverbrowser.cpp b/source/src/serverbrowser.cpp index 75bb818f..3c05ab4b 100644 --- a/source/src/serverbrowser.cpp +++ b/source/src/serverbrowser.cpp @@ -362,7 +362,7 @@ void pingservers() { ENetAddress address; address.host = ENET_HOST_BROADCAST; - address.port = ENET_PORT_ANY; + address.port = CUBE_SERVINFO_PORT(CUBE_DEFAULT_SERVER_PORT); buf.data = ping; buf.dataLength = p.length(); enet_socket_send(pingsock, &address, &buf, 1); @@ -461,19 +461,14 @@ void refreshservers(void *menu, bool init) { if(init) { - if(pingsock == ENET_SOCKET_NULL) - { - pingsock = enet_socket_create(ENET_SOCKET_TYPE_DATAGRAM, NULL); - if(pingsock != ENET_SOCKET_NULL) enet_socket_set_option(pingsock, ENET_SOCKOPT_NONBLOCK, 1); - resolverinit(); - } - resolverclear(); + if(resolverthreads.empty()) resolverinit(); + else resolverclear(); loopv(servers) resolverquery(servers[i]->name); } checkresolver(); checkpings(); - if(lastmillis - lastinfo >= 5000) pingservers(); + if(totalmillis - lastinfo >= 5000) pingservers(); servers.sort(sicompare); if(menu) {