| 191 | } |
| 192 | |
| 193 | void NetInterface::handleConnectChallengeRequest(const NetAddress *addr, BitStream *stream) |
| 194 | { |
| 195 | char buf[256]; |
| 196 | Net::addressToString(addr, buf); |
| 197 | Con::printf("Got Connect challenge Request from %s", buf); |
| 198 | if(!mAllowConnections) |
| 199 | return; |
| 200 | |
| 201 | U32 connectSequence; |
| 202 | stream->read(&connectSequence); |
| 203 | |
| 204 | if(!mRandomDataInitialized) |
| 205 | initRandomData(); |
| 206 | |
| 207 | U32 addressDigest[4]; |
| 208 | computeNetMD5(addr, connectSequence, addressDigest); |
| 209 | |
| 210 | BitStream *out = BitStream::getPacketStream(); |
| 211 | out->write(U8(ConnectChallengeResponse)); |
| 212 | out->write(connectSequence); |
| 213 | out->write(addressDigest[0]); |
| 214 | out->write(addressDigest[1]); |
| 215 | out->write(addressDigest[2]); |
| 216 | out->write(addressDigest[3]); |
| 217 | |
| 218 | BitStream::sendPacketStream(addr); |
| 219 | } |
| 220 | |
| 221 | //----------------------------------------------------------------------------- |
| 222 | |