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

Method handleConnectRequest

Engine/source/sim/netInterface.cpp:272–338  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 15

printfFunction · 0.85
lookupFunction · 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

Tested by

no test coverage detected