MCPcopy Create free account
hub / github.com/GarageGames/Torque3D / handleConnectRequest

Method handleConnectRequest

Engine/source/sim/netInterface.cpp:271–337  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

269//-----------------------------------------------------------------------------
270
271void NetInterface::handleConnectRequest(const NetAddress *address, BitStream *stream)
272{
273 if(!mAllowConnections)
274 return;
275 Con::printf("Got Connect Request");
276 U32 connectSequence;
277 stream->read(&connectSequence);
278
279 // see if the connection is in the main connection table:
280
281 NetConnection *connect = NetConnection::lookup(address);
282 if(connect && connect->getSequence() == connectSequence)
283 {
284 sendConnectAccept(connect);
285 return;
286 }
287 U32 addressDigest[4];
288 U32 computedAddressDigest[4];
289
290 stream->read(&addressDigest[0]);
291 stream->read(&addressDigest[1]);
292 stream->read(&addressDigest[2]);
293 stream->read(&addressDigest[3]);
294
295 computeNetMD5(address, connectSequence, computedAddressDigest);
296 if(addressDigest[0] != computedAddressDigest[0] ||
297 addressDigest[1] != computedAddressDigest[1] ||
298 addressDigest[2] != computedAddressDigest[2] ||
299 addressDigest[3] != computedAddressDigest[3])
300 return; // bogus connection attempt
301
302 if(connect)
303 {
304 if(connect->getSequence() > connectSequence)
305 return; // the existing connection should be kept - the incoming request is stale.
306 else
307 connect->deleteObject(); // disconnect this one, and allow the new one to be created.
308 }
309
310 char connectionClass[255];
311 stream->readString(connectionClass);
312
313 ConsoleObject *co = ConsoleObject::create(connectionClass);
314 NetConnection *conn = dynamic_cast<NetConnection *>(co);
315 if(!conn || !conn->canRemoteCreate())
316 {
317 delete co;
318 return;
319 }
320 conn->registerObject();
321 conn->setNetAddress(address);
322 conn->setNetworkConnection(true);
323 conn->setSequence(connectSequence);
324
325 const char *errorString = NULL;
326 if(!conn->readConnectRequest(stream, &errorString))
327 {
328 sendConnectReject(conn, errorString);

Callers

nothing calls this directly

Calls 14

printfFunction · 0.85
setNetAddressMethod · 0.80
setNetworkConnectionMethod · 0.80
setEstablishedMethod · 0.80
setConnectSequenceMethod · 0.80
readMethod · 0.45
getSequenceMethod · 0.45
deleteObjectMethod · 0.45
readStringMethod · 0.45
canRemoteCreateMethod · 0.45
registerObjectMethod · 0.45
setSequenceMethod · 0.45

Tested by

no test coverage detected