diff --git a/engine/common/net_wins.c b/engine/common/net_wins.c index 6866015ea..47f9a9659 100644 --- a/engine/common/net_wins.c +++ b/engine/common/net_wins.c @@ -2899,6 +2899,7 @@ static ftenet_generic_connection_t *FTENET_Loop_EstablishConnection(ftenet_conne #endif newcon->islisten = col->islisten; + newcon->prot = adr.prot; newcon->addrtype[0] = NA_LOOPBACK; newcon->addrtype[1] = NA_INVALID; @@ -4387,6 +4388,7 @@ ftenet_generic_connection_t *FTENET_Datagram_EstablishConnection(ftenet_connecti newcon->owner = col; newcon->islisten = isserver; + newcon->prot = adr.prot; if (hybrid) { newcon->addrtype[0] = NA_IP; @@ -7867,6 +7869,7 @@ static qboolean FTENET_TCP_ChangeLocalAddress(struct ftenet_generic_connection_s n.scopeid = adr->scopeid; addrsize2 = NetadrToSockadr(&n, &cur); + con->prot = NP_STREAM; if ((bind(newsocket, (struct sockaddr *)&cur, addrsize2) != INVALID_SOCKET) && (listen(newsocket, 2) != INVALID_SOCKET) && ioctlsocket (newsocket, FIONBIO, &_true) != -1) @@ -8026,6 +8029,7 @@ ftenet_generic_connection_t *FTENET_TCP_EstablishConnection(ftenet_connections_t newcon = Z_Malloc(sizeof(*newcon)); newcon->generic.thesocket = newsocket = INVALID_SOCKET; + newcon->generic.prot = adr.prot; newcon->generic.addrtype[0] = adr.type; newcon->generic.addrtype[1] = NA_INVALID; @@ -8732,6 +8736,7 @@ struct ftenet_generic_connection_s *FTENET_IRCConnect_EstablishConnection(qboole newcon->generic.Close = FTENET_IRCConnect_Close; newcon->generic.islisten = isserver; + newcon->generic.prot = adr.prot; newcon->generic.addrtype[0] = NA_IRC; newcon->generic.addrtype[1] = NA_INVALID; @@ -9309,6 +9314,7 @@ static ftenet_generic_connection_t *FTENET_WebSocket_EstablishConnection(ftenet_ newcon->generic.Close = FTENET_WebSocket_Close; newcon->generic.islisten = isserver; + newcon->generic.prot = adr.prot; newcon->generic.addrtype[0] = NA_WEBSOCKET; newcon->generic.addrtype[1] = NA_INVALID; @@ -9360,6 +9366,7 @@ static ftenet_generic_connection_t *FTENET_WebRTC_EstablishConnection(ftenet_con newcon->generic.Close = FTENET_WebSocket_Close; newcon->generic.islisten = isserver; + newcon->generic.prot = adr.prot; newcon->generic.addrtype[0] = NA_WEBSOCKET; newcon->generic.addrtype[1] = NA_INVALID; diff --git a/engine/server/sv_main.c b/engine/server/sv_main.c index c33fa7f60..bf5ba5fd8 100644 --- a/engine/server/sv_main.c +++ b/engine/server/sv_main.c @@ -4404,7 +4404,7 @@ qboolean SV_ConnectionlessPacket (void) { //q3/dpmaster support if (sv_public.ival >= 0) { - const char *chal = Cmd_Args(); + const char *chal = Cmd_Argv(1); SV_Master_HeartbeatResponse(&net_from, chal); if (SV_DetectAmplificationDDOS()) diff --git a/engine/server/sv_master.c b/engine/server/sv_master.c index 78e76bcd3..2c6fff0c5 100644 --- a/engine/server/sv_master.c +++ b/engine/server/sv_master.c @@ -1408,7 +1408,10 @@ static void SVM_ProcessUDPPacket(void) sb.maxsize = sizeof(net_message_buffer); sb.data = net_message_buffer; MSG_WriteLong(&sb, -1); - MSG_WriteString(&sb, va("getinfo %s %s\n", ourchallenge,cookie)); + if (*cookie) + MSG_WriteString(&sb, va("getinfo %s %s\n", ourchallenge,cookie)); + else + MSG_WriteString(&sb, va("getinfo %s\n", ourchallenge)); sb.cursize--; NET_SendPacket(svm_sockets, sb.cursize, sb.data, &net_from); @@ -1474,6 +1477,14 @@ static void SVM_ProcessUDPPacket(void) const char *v = Info_ValueForKey(s, "deathmatch"); srv->type = *v && !atoi(v); } + Q_strncpyz(srv->hostname, Info_ValueForKey(s, "hostname"), sizeof(srv->hostname)); + Q_strncpyz(srv->gamedir, Info_ValueForKey(s, "modname"), sizeof(srv->gamedir)); + Q_strncpyz(srv->mapname, Info_ValueForKey(s, "mapname"), sizeof(srv->mapname)); + Q_strncpyz(srv->version, Info_ValueForKey(s, "version"), sizeof(srv->version)); + if (!*srv->version) + Q_strncpyz(srv->version, Info_ValueForKey(s, "*version"), sizeof(srv->version)); + if (!*srv->version) + Q_strncpyz(srv->version, Info_ValueForKey(s, "ver"), sizeof(srv->version)); srv->protover = strtol(Info_ValueForKey(s, "protocol"), &s, 0); for (; *s; s++) { @@ -1484,14 +1495,6 @@ static void SVM_ProcessUDPPacket(void) } if (*Info_ValueForKey(srv->rules, "_turnkey")) srv->type |= 8; - Q_strncpyz(srv->hostname, Info_ValueForKey(s, "hostname"), sizeof(srv->hostname)); - Q_strncpyz(srv->gamedir, Info_ValueForKey(s, "modname"), sizeof(srv->gamedir)); - Q_strncpyz(srv->mapname, Info_ValueForKey(s, "mapname"), sizeof(srv->mapname)); - Q_strncpyz(srv->version, Info_ValueForKey(s, "version"), sizeof(srv->version)); - if (!*srv->version) - Q_strncpyz(srv->version, Info_ValueForKey(s, "*version"), sizeof(srv->version)); - if (!*srv->version) - Q_strncpyz(srv->version, Info_ValueForKey(s, "ver"), sizeof(srv->version)); } } }