X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=netconn.c;h=0d5c5a9d5ac33c74d8227c84967138c38d95f308;hb=f85803e7bc2d0612763bdb8548c7060ddb542afb;hp=f971fd24944db78799ba663ce93f113c9bad23b4;hpb=d93b11b3f40d1ca94ed20e70c7a2fcf95670df73;p=xonotic%2Fdarkplaces.git diff --git a/netconn.c b/netconn.c index f971fd24..0d5c5a9d 100755 --- a/netconn.c +++ b/netconn.c @@ -45,10 +45,11 @@ static cvar_t sv_masters [] = {CVAR_SAVE, "sv_master3", "", "user-chosen master server 3"}, {CVAR_SAVE, "sv_master4", "", "user-chosen master server 4"}, {0, "sv_masterextra1", "69.59.212.88", "ghdigital.com - default master server 1 (admin: LordHavoc)"}, // admin: LordHavoc - {0, "sv_masterextra2", "64.22.107.125", "dpmaster.deathmask.net - default master server 2 (admin: Willis)"}, // admin: Willis + {0, "sv_masterextra2", "107.161.23.68", "dpmaster.deathmask.net - default master server 2 (admin: Willis)"}, // admin: Willis {0, "sv_masterextra3", "92.62.40.73", "dpmaster.tchr.no - default master server 3 (admin: tChr)"}, // admin: tChr -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 {0, "sv_masterextra4", "[2a03:4000:2:225::51:334d]:27950", "dpmaster.sudo.rm-f.org - default master server 4 (admin: divVerent)"}, // admin: divVerent + {0, "sv_masterextra5", "[2604:180::4ac:98c1]:27950", "dpmaster.deathmask.net - default master server 5 ipv6 address of dpmaster.deathmask.net (admin: Willis)"}, // admin: Willis #endif {0, NULL, NULL, NULL} }; @@ -444,7 +445,7 @@ static void ServerList_ViewList_Insert( serverlist_entry_t *entry ) break; } } - if(Crypto_RetrieveHostKey(&addr, 0, NULL, 0, idfp, sizeof(idfp), NULL)) + if(Crypto_RetrieveHostKey(&addr, 0, NULL, 0, idfp, sizeof(idfp), NULL, NULL)) { for(i = 0; i < nFavorites_idfp; ++i) { @@ -689,7 +690,7 @@ qboolean NetConn_CanSend(netconn_t *conn) } } -void NetConn_UpdateCleartime(double *cleartime, int rate, int burstsize, int len) +static void NetConn_UpdateCleartime(double *cleartime, int rate, int burstsize, int len) { double bursttime = burstsize / (double)rate; @@ -706,6 +707,27 @@ void NetConn_UpdateCleartime(double *cleartime, int rate, int burstsize, int len } } +static int NetConn_AddCryptoFlag(crypto_t *crypto) +{ + // HACK: if an encrypted connection is used, randomly set some unused + // flags. When AES encryption is enabled, that will make resends differ + // from the original, so that e.g. substring filters in a router/IPS + // are unlikely to match a second time. See also "startkeylogger". + int flag = 0; + if (crypto->authenticated) + { + // Let's always set at least one of the bits. + int r = rand() % 7 + 1; + if (r & 1) + flag |= NETFLAG_CRYPTO0; + if (r & 2) + flag |= NETFLAG_CRYPTO1; + if (r & 4) + flag |= NETFLAG_CRYPTO2; + } + return flag; +} + int NetConn_SendUnreliableMessage(netconn_t *conn, sizebuf_t *data, protocolversion_t protocol, int rate, int burstsize, qboolean quakesignon_suppressreliables) { int totallen = 0; @@ -742,9 +764,9 @@ int NetConn_SendUnreliableMessage(netconn_t *conn, sizebuf_t *data, protocolvers sendreliable = true; } // outgoing unreliable packet number, and outgoing reliable packet number (0 or 1) - StoreLittleLong(sendbuffer, (unsigned int)conn->outgoing_unreliable_sequence | ((unsigned int)sendreliable<<31)); + StoreLittleLong(sendbuffer, conn->outgoing_unreliable_sequence | (((unsigned int)sendreliable)<<31)); // last received unreliable packet number, and last received reliable packet number (0 or 1) - StoreLittleLong(sendbuffer + 4, (unsigned int)conn->qw.incoming_sequence | ((unsigned int)conn->qw.incoming_reliable_sequence<<31)); + StoreLittleLong(sendbuffer + 4, conn->qw.incoming_sequence | (((unsigned int)conn->qw.incoming_reliable_sequence)<<31)); packetLen = 8; conn->outgoing_unreliable_sequence++; // client sends qport in every packet @@ -811,20 +833,20 @@ int NetConn_SendUnreliableMessage(netconn_t *conn, sizebuf_t *data, protocolvers packetLen = NET_HEADERSIZE + dataLen; - StoreBigLong(sendbuffer, packetLen | (NETFLAG_DATA | eom)); + StoreBigLong(sendbuffer, packetLen | (NETFLAG_DATA | eom | NetConn_AddCryptoFlag(&conn->crypto))); StoreBigLong(sendbuffer + 4, conn->nq.sendSequence - 1); memcpy(sendbuffer + NET_HEADERSIZE, conn->sendMessage, dataLen); conn->outgoing_netgraph[conn->outgoing_packetcounter].reliablebytes += packetLen + 28; sendme = Crypto_EncryptPacket(&conn->crypto, &sendbuffer, packetLen, &cryptosendbuffer, &sendmelen, sizeof(cryptosendbuffer)); - if (sendme && NetConn_Write(conn->mysocket, sendme, sendmelen, &conn->peeraddress) == (int)sendmelen) + if (sendme && NetConn_Write(conn->mysocket, sendme, (int)sendmelen, &conn->peeraddress) == (int)sendmelen) { conn->lastSendTime = realtime; conn->packetsReSent++; } - totallen += sendmelen + 28; + totallen += (int)sendmelen + 28; } // if we have a new reliable message to send, do so @@ -860,7 +882,7 @@ int NetConn_SendUnreliableMessage(netconn_t *conn, sizebuf_t *data, protocolvers packetLen = NET_HEADERSIZE + dataLen; - StoreBigLong(sendbuffer, packetLen | (NETFLAG_DATA | eom)); + StoreBigLong(sendbuffer, packetLen | (NETFLAG_DATA | eom | NetConn_AddCryptoFlag(&conn->crypto))); StoreBigLong(sendbuffer + 4, conn->nq.sendSequence); memcpy(sendbuffer + NET_HEADERSIZE, conn->sendMessage, dataLen); @@ -870,13 +892,13 @@ int NetConn_SendUnreliableMessage(netconn_t *conn, sizebuf_t *data, protocolvers sendme = Crypto_EncryptPacket(&conn->crypto, &sendbuffer, packetLen, &cryptosendbuffer, &sendmelen, sizeof(cryptosendbuffer)); if(sendme) - NetConn_Write(conn->mysocket, sendme, sendmelen, &conn->peeraddress); + NetConn_Write(conn->mysocket, sendme, (int)sendmelen, &conn->peeraddress); conn->lastSendTime = realtime; conn->packetsSent++; conn->reliableMessagesSent++; - totallen += sendmelen + 28; + totallen += (int)sendmelen + 28; } // if we have an unreliable message to send, do so @@ -890,7 +912,7 @@ int NetConn_SendUnreliableMessage(netconn_t *conn, sizebuf_t *data, protocolvers return -1; } - StoreBigLong(sendbuffer, packetLen | NETFLAG_UNRELIABLE); + StoreBigLong(sendbuffer, packetLen | NETFLAG_UNRELIABLE | NetConn_AddCryptoFlag(&conn->crypto)); StoreBigLong(sendbuffer + 4, conn->outgoing_unreliable_sequence); memcpy(sendbuffer + NET_HEADERSIZE, data->data, data->cursize); @@ -900,16 +922,16 @@ int NetConn_SendUnreliableMessage(netconn_t *conn, sizebuf_t *data, protocolvers sendme = Crypto_EncryptPacket(&conn->crypto, &sendbuffer, packetLen, &cryptosendbuffer, &sendmelen, sizeof(cryptosendbuffer)); if(sendme) - NetConn_Write(conn->mysocket, sendme, sendmelen, &conn->peeraddress); + NetConn_Write(conn->mysocket, sendme, (int)sendmelen, &conn->peeraddress); conn->packetsSent++; conn->unreliableMessagesSent++; - totallen += sendmelen + 28; + totallen += (int)sendmelen + 28; } } - NetConn_UpdateCleartime(&conn->cleartime, cl_rate.integer, cl_rate_burstsize.integer, totallen); + NetConn_UpdateCleartime(&conn->cleartime, rate, burstsize, totallen); return 0; } @@ -978,7 +1000,7 @@ void NetConn_OpenClientPorts(void) Con_Printf("Client using port %i\n", port); NetConn_OpenClientPort(NULL, LHNETADDRESSTYPE_LOOP, 2); NetConn_OpenClientPort(net_address.string, LHNETADDRESSTYPE_INET4, port); -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 NetConn_OpenClientPort(net_address_ipv6.string, LHNETADDRESSTYPE_INET6, port); #endif } @@ -1050,7 +1072,7 @@ void NetConn_OpenServerPorts(int opennetports) NetConn_OpenServerPort(NULL, LHNETADDRESSTYPE_LOOP, 1, 1); if (opennetports) { -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 qboolean ip4success = NetConn_OpenServerPort(net_address.string, LHNETADDRESSTYPE_INET4, port, 100); NetConn_OpenServerPort(net_address_ipv6.string, LHNETADDRESSTYPE_INET6, port, ip4success ? 1 : 100); #else @@ -1181,7 +1203,7 @@ void NetConn_UpdateSockets(void) static int NetConn_ReceivedMessage(netconn_t *conn, const unsigned char *data, size_t length, protocolversion_t protocol, double newtimeout) { - int originallength = length; + int originallength = (int)length; unsigned char sendbuffer[NET_HEADERSIZE+NET_MAXMESSAGE]; unsigned char cryptosendbuffer[NET_HEADERSIZE+NET_MAXMESSAGE+CRYPTO_HEADERSIZE]; unsigned char cryptoreadbuffer[NET_HEADERSIZE+NET_MAXMESSAGE+CRYPTO_HEADERSIZE]; @@ -1190,8 +1212,8 @@ static int NetConn_ReceivedMessage(netconn_t *conn, const unsigned char *data, s if (protocol == PROTOCOL_QUAKEWORLD) { - int sequence, sequence_ack; - int reliable_ack, reliable_message; + unsigned int sequence, sequence_ack; + qboolean reliable_ack, reliable_message; int count; //int qport; @@ -1212,8 +1234,8 @@ static int NetConn_ReceivedMessage(netconn_t *conn, const unsigned char *data, s } conn->packetsReceived++; - reliable_message = (sequence >> 31) & 1; - reliable_ack = (sequence_ack >> 31) & 1; + reliable_message = (sequence >> 31) != 0; + reliable_ack = (sequence_ack >> 31) != 0; sequence &= ~(1<<31); sequence_ack &= ~(1<<31); if (sequence <= conn->qw.incoming_sequence) @@ -1226,6 +1248,12 @@ static int NetConn_ReceivedMessage(netconn_t *conn, const unsigned char *data, s { conn->droppedDatagrams += count; //Con_DPrintf("Dropped %u datagram(s)\n", count); + // If too may packets have been dropped, only write the + // last NETGRAPH_PACKETS ones to the netgraph. Why? + // Because there's no point in writing more than + // these as the netgraph is going to be full anyway. + if (count > NETGRAPH_PACKETS) + count = NETGRAPH_PACKETS; while (count--) { conn->incoming_packetcounter = (conn->incoming_packetcounter + 1) % NETGRAPH_PACKETS; @@ -1270,13 +1298,13 @@ static int NetConn_ReceivedMessage(netconn_t *conn, const unsigned char *data, s if (conn == cls.netcon) { SZ_Clear(&cl_message); - SZ_Write(&cl_message, data, length); + SZ_Write(&cl_message, data, (int)length); MSG_BeginReading(&cl_message); } else { SZ_Clear(&sv_message); - SZ_Write(&sv_message, data, length); + SZ_Write(&sv_message, data, (int)length); MSG_BeginReading(&sv_message); } return 2; @@ -1290,7 +1318,7 @@ static int NetConn_ReceivedMessage(netconn_t *conn, const unsigned char *data, s const void *sendme; size_t sendmelen; - originallength = length; + originallength = (int)length; data = (const unsigned char *) Crypto_DecryptPacket(&conn->crypto, data, length, cryptoreadbuffer, &length, sizeof(cryptoreadbuffer)); if(!data) return 0; @@ -1316,6 +1344,12 @@ static int NetConn_ReceivedMessage(netconn_t *conn, const unsigned char *data, s count = sequence - conn->nq.unreliableReceiveSequence; conn->droppedDatagrams += count; //Con_DPrintf("Dropped %u datagram(s)\n", count); + // If too may packets have been dropped, only write the + // last NETGRAPH_PACKETS ones to the netgraph. Why? + // Because there's no point in writing more than + // these as the netgraph is going to be full anyway. + if (count > NETGRAPH_PACKETS) + count = NETGRAPH_PACKETS; while (count--) { conn->incoming_packetcounter = (conn->incoming_packetcounter + 1) % NETGRAPH_PACKETS; @@ -1343,13 +1377,13 @@ static int NetConn_ReceivedMessage(netconn_t *conn, const unsigned char *data, s if (conn == cls.netcon) { SZ_Clear(&cl_message); - SZ_Write(&cl_message, data, length); + SZ_Write(&cl_message, data, (int)length); MSG_BeginReading(&cl_message); } else { SZ_Clear(&sv_message); - SZ_Write(&sv_message, data, length); + SZ_Write(&sv_message, data, (int)length); MSG_BeginReading(&sv_message); } return 2; @@ -1395,14 +1429,14 @@ static int NetConn_ReceivedMessage(netconn_t *conn, const unsigned char *data, s packetLen = NET_HEADERSIZE + dataLen; - StoreBigLong(sendbuffer, packetLen | (NETFLAG_DATA | eom)); + StoreBigLong(sendbuffer, packetLen | (NETFLAG_DATA | eom | NetConn_AddCryptoFlag(&conn->crypto))); StoreBigLong(sendbuffer + 4, conn->nq.sendSequence); memcpy(sendbuffer + NET_HEADERSIZE, conn->sendMessage, dataLen); conn->nq.sendSequence++; sendme = Crypto_EncryptPacket(&conn->crypto, &sendbuffer, packetLen, &cryptosendbuffer, &sendmelen, sizeof(cryptosendbuffer)); - if (sendme && NetConn_Write(conn->mysocket, sendme, sendmelen, &conn->peeraddress) == (int)sendmelen) + if (sendme && NetConn_Write(conn->mysocket, sendme, (int)sendmelen, &conn->peeraddress) == (int)sendmelen) { conn->lastSendTime = realtime; conn->packetsSent++; @@ -1426,11 +1460,11 @@ static int NetConn_ReceivedMessage(netconn_t *conn, const unsigned char *data, s conn->outgoing_netgraph[conn->outgoing_packetcounter].ackbytes += 8 + 28; - StoreBigLong(temppacket, 8 | NETFLAG_ACK); + StoreBigLong(temppacket, 8 | NETFLAG_ACK | NetConn_AddCryptoFlag(&conn->crypto)); StoreBigLong(temppacket + 4, sequence); sendme = Crypto_EncryptPacket(&conn->crypto, temppacket, 8, &cryptosendbuffer, &sendmelen, sizeof(cryptosendbuffer)); if(sendme) - NetConn_Write(conn->mysocket, sendme, sendmelen, &conn->peeraddress); + NetConn_Write(conn->mysocket, sendme, (int)sendmelen, &conn->peeraddress); if (sequence == conn->nq.receiveSequence) { conn->lastMessageTime = realtime; @@ -1438,7 +1472,7 @@ static int NetConn_ReceivedMessage(netconn_t *conn, const unsigned char *data, s conn->nq.receiveSequence++; if( conn->receiveMessageLength + length <= (int)sizeof( conn->receiveMessage ) ) { memcpy(conn->receiveMessage + conn->receiveMessageLength, data, length); - conn->receiveMessageLength += length; + conn->receiveMessageLength += (int)length; } else { Con_Printf( "Reliable message (seq: %i) too big for message buffer!\n" "Dropping the message!\n", sequence ); @@ -1455,13 +1489,13 @@ static int NetConn_ReceivedMessage(netconn_t *conn, const unsigned char *data, s if (conn == cls.netcon) { SZ_Clear(&cl_message); - SZ_Write(&cl_message, conn->receiveMessage, length); + SZ_Write(&cl_message, conn->receiveMessage, (int)length); MSG_BeginReading(&cl_message); } else { SZ_Clear(&sv_message); - SZ_Write(&sv_message, conn->receiveMessage, length); + SZ_Write(&sv_message, conn->receiveMessage, (int)length); MSG_BeginReading(&sv_message); } return 2; @@ -1495,16 +1529,18 @@ static void NetConn_ConnectionEstablished(lhnetsocket_t *mysocket, lhnetaddress_ } // allocate a net connection to keep track of things cls.netcon = NetConn_Open(mysocket, peeraddress); - crypto = &cls.crypto; - if(crypto && crypto->authenticated) + crypto = &cls.netcon->crypto; + if(cls.crypto.authenticated) { - Crypto_ServerFinishInstance(&cls.netcon->crypto, crypto); - Con_Printf("%s connection to %s has been established: server is %s@%.*s, I am %.*s@%.*s\n", + Crypto_FinishInstance(crypto, &cls.crypto); + Con_Printf("%s connection to %s has been established: server is %s@%s%.*s, I am %.*s@%s%.*s\n", crypto->use_aes ? "Encrypted" : "Authenticated", cls.netcon->address, crypto->server_idfp[0] ? crypto->server_idfp : "-", + (crypto->server_issigned || !crypto->server_keyfp[0]) ? "" : "~", crypto_keyfp_recommended_length, crypto->server_keyfp[0] ? crypto->server_keyfp : "-", crypto_keyfp_recommended_length, crypto->client_idfp[0] ? crypto->client_idfp : "-", + (crypto->client_issigned || !crypto->client_keyfp[0]) ? "" : "~", crypto_keyfp_recommended_length, crypto->client_keyfp[0] ? crypto->client_keyfp : "-" ); } @@ -1801,20 +1837,20 @@ static int NetConn_ClientParsePacket(lhnetsocket_t *mysocket, unsigned char *dat if(sendlength) { memcpy(senddata, "\377\377\377\377", 4); - NetConn_Write(mysocket, senddata, sendlength+4, peeraddress); + NetConn_Write(mysocket, senddata, (int)sendlength+4, peeraddress); } break; case CRYPTO_DISCARD: if(sendlength) { memcpy(senddata, "\377\377\377\377", 4); - NetConn_Write(mysocket, senddata, sendlength+4, peeraddress); + NetConn_Write(mysocket, senddata, (int)sendlength+4, peeraddress); } return true; break; case CRYPTO_REPLACE: string = senddata+4; - length = sendlength; + length = (int)sendlength; break; } @@ -1841,12 +1877,12 @@ static int NetConn_ClientParsePacket(lhnetsocket_t *mysocket, unsigned char *dat e = strchr(rcon_password.string, ' '); n = e ? e-rcon_password.string : (int)strlen(rcon_password.string); - if(HMAC_MDFOUR_16BYTES((unsigned char *) (buf + 29), (unsigned char *) argbuf, strlen(argbuf), (unsigned char *) rcon_password.string, n)) + if(HMAC_MDFOUR_16BYTES((unsigned char *) (buf + 29), (unsigned char *) argbuf, (int)strlen(argbuf), (unsigned char *) rcon_password.string, n)) { int k; buf[45] = ' '; strlcpy(buf + 46, argbuf, sizeof(buf) - 46); - NetConn_Write(mysocket, buf, 46 + strlen(buf + 46), peeraddress); + NetConn_Write(mysocket, buf, 46 + (int)strlen(buf + 46), peeraddress); cls.rcon_commands[i][0] = 0; --cls.rcon_trying; @@ -2673,7 +2709,7 @@ static qboolean hmac_mdfour_time_matching(lhnetaddress_t *peeraddress, const cha if(abs(t1 - t2) > rcon_secure_maxdiff.integer) return false; - if(!HMAC_MDFOUR_16BYTES((unsigned char *) mdfourbuf, (unsigned char *) s, slen, (unsigned char *) password, strlen(password))) + if(!HMAC_MDFOUR_16BYTES((unsigned char *) mdfourbuf, (unsigned char *) s, slen, (unsigned char *) password, (int)strlen(password))) return false; return !memcmp(mdfourbuf, hash, 16); @@ -2696,7 +2732,7 @@ static qboolean hmac_mdfour_challenge_matching(lhnetaddress_t *peeraddress, cons if (i == MAX_CHALLENGES) return false; - if(!HMAC_MDFOUR_16BYTES((unsigned char *) mdfourbuf, (unsigned char *) s, slen, (unsigned char *) password, strlen(password))) + if(!HMAC_MDFOUR_16BYTES((unsigned char *) mdfourbuf, (unsigned char *) s, slen, (unsigned char *) password, (int)strlen(password))) return false; if(memcmp(mdfourbuf, hash, 16)) @@ -2721,7 +2757,7 @@ static const char *RCon_Authenticate(lhnetaddress_t *peeraddress, const char *pa qboolean hasquotes; qboolean restricted = false; qboolean have_usernames = false; - char vabuf[1024]; + static char vabuf[1024]; userpass_start = rcon_password.string; while((userpass_end = strchr(userpass_start, ' '))) @@ -2905,20 +2941,20 @@ static int NetConn_ServerParsePacket(lhnetsocket_t *mysocket, unsigned char *dat if(sendlength) { memcpy(senddata, "\377\377\377\377", 4); - NetConn_Write(mysocket, senddata, sendlength+4, peeraddress); + NetConn_Write(mysocket, senddata, (int)sendlength+4, peeraddress); } break; case CRYPTO_DISCARD: if(sendlength) { memcpy(senddata, "\377\377\377\377", 4); - NetConn_Write(mysocket, senddata, sendlength+4, peeraddress); + NetConn_Write(mysocket, senddata, (int)sendlength+4, peeraddress); } return true; break; case CRYPTO_REPLACE: string = senddata+4; - length = sendlength; + length = (int)sendlength; break; } @@ -2951,7 +2987,7 @@ static int NetConn_ServerParsePacket(lhnetsocket_t *mysocket, unsigned char *dat dpsnprintf(response, sizeof(response), "\377\377\377\377challenge %s", challenge[i].string); response_len = strlen(response) + 1; Crypto_ServerAppendToChallenge(string, length, response, &response_len, sizeof(response)); - NetConn_Write(mysocket, response, response_len, peeraddress); + NetConn_Write(mysocket, response, (int)response_len, peeraddress); return true; } if (length > 8 && !memcmp(string, "connect\\", 8)) @@ -2965,12 +3001,14 @@ static int NetConn_ServerParsePacket(lhnetsocket_t *mysocket, unsigned char *dat // no need to check challenge if(crypto_developer.integer) { - Con_Printf("%s connection to %s is being established: client is %s@%.*s, I am %.*s@%.*s\n", + Con_Printf("%s connection to %s is being established: client is %s@%s%.*s, I am %.*s@%s%.*s\n", crypto->use_aes ? "Encrypted" : "Authenticated", addressstring2, crypto->client_idfp[0] ? crypto->client_idfp : "-", + (crypto->client_issigned || !crypto->client_keyfp[0]) ? "" : "~", crypto_keyfp_recommended_length, crypto->client_keyfp[0] ? crypto->client_keyfp : "-", crypto_keyfp_recommended_length, crypto->server_idfp[0] ? crypto->server_idfp : "-", + (crypto->server_issigned || !crypto->server_keyfp[0]) ? "" : "~", crypto_keyfp_recommended_length, crypto->server_keyfp[0] ? crypto->server_keyfp : "-" ); } @@ -3058,7 +3096,7 @@ static int NetConn_ServerParsePacket(lhnetsocket_t *mysocket, unsigned char *dat Con_Printf("Datagram_ParseConnectionless: sending \"accept\" to %s.\n", addressstring2); NetConn_WriteString(mysocket, "\377\377\377\377accept", peeraddress); if(crypto && crypto->authenticated) - Crypto_ServerFinishInstance(&client->netconnection->crypto, crypto); + Crypto_FinishInstance(&client->netconnection->crypto, crypto); SV_SendServerinfo(client); } else @@ -3068,7 +3106,7 @@ static int NetConn_ServerParsePacket(lhnetsocket_t *mysocket, unsigned char *dat if (developer_extra.integer) Con_Printf("Datagram_ParseConnectionless: sending duplicate accept to %s.\n", addressstring2); if(crypto && crypto->authenticated) - Crypto_ServerFinishInstance(&client->netconnection->crypto, crypto); + Crypto_FinishInstance(&client->netconnection->crypto, crypto); NetConn_WriteString(mysocket, "\377\377\377\377accept", peeraddress); } return true; @@ -3090,7 +3128,7 @@ static int NetConn_ServerParsePacket(lhnetsocket_t *mysocket, unsigned char *dat NetConn_WriteString(mysocket, "\377\377\377\377accept", peeraddress); // now set up the client if(crypto && crypto->authenticated) - Crypto_ServerFinishInstance(&conn->crypto, crypto); + Crypto_FinishInstance(&conn->crypto, crypto); SV_ConnectClient(clientnum, conn); NetConn_Heartbeat(1); return true;