402 {
403 try
404 {
405 Socket.EndConnect(result);
406 if (!Socket.Connected)
407 {
408 return;
409 }
410 if (Client.instance.defaultNetworkSettings.useTLS == true)
411 {
412 SslStream ScStream = new SslStream(Socket.GetStream(), false, ValidateServerCertificate);
413 ScStream.AuthenticateAsClient(Client.instance.defaultNetworkSettings.ipAddress);
414
415 receiveBuffer = new byte[Client.DefaultBufferSize];
416 receivedPacket = new Packet();
417 Stream = ScStream;
418 } else
419 {
420 Stream = Socket.GetStream();
421 receiveBuffer = new byte[Client.DefaultBufferSize];
422 receivedPacket = new Packet();
423 }
424 Stream.BeginRead(receiveBuffer, 0, Client.DefaultBufferSize, ReceiveCallback, null);
425 Client.instance.isConnected = true;
426 ThreadsController.StartOnMainThread(() =>
427 {
428 Client.instance.OnConnected?.Invoke();
429 });
430 }
431 catch (Exception ex)
432 {
433 Debug.LogError($"Error during SSL/TLS handshake: {ex.Message}");
434 ThreadsController.StartOnMainThread(() =>
435 {
436 Client.instance.OnConnectionFailed?.Invoke($"Error during SSL/TLS handshake: {ex.Message}");
437 });
438 Disconnect();
439 }
440 }