From 802ccc3991ab034ba6d06b4d393a987572192680 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 4 Aug 2016 12:13:07 +0200 Subject: [PATCH] Add initial handshake for remote server --- renderdoc/core/remote_server.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/renderdoc/core/remote_server.cpp b/renderdoc/core/remote_server.cpp index d1e5edb99..495085caf 100644 --- a/renderdoc/core/remote_server.cpp +++ b/renderdoc/core/remote_server.cpp @@ -44,6 +44,7 @@ string ToStrHelper::Get(const CaptureOptions &el) enum RemoteServerPacket { eRemoteServer_Noop, + eRemoteServer_Handshake, eRemoteServer_RemoteDriverList, eRemoteServer_TakeOwnershipCapture, eRemoteServer_CopyCapture, @@ -219,6 +220,17 @@ void RenderDoc::BecomeRemoteServer(const char *listenhost, uint16_t port, volati continue; } + RemoteServerPacket type = (RemoteServerPacket)RecvPacket(client); + + if(type != eRemoteServer_Handshake) + { + RDCWARN("Didn't receive proper handshake"); + SAFE_DELETE(client); + continue; + } + + SendPacket(client, eRemoteServer_Handshake); + vector tempFiles; IRemoteDriver *driver = NULL; ProxySerialiser *proxy = NULL; @@ -446,6 +458,17 @@ public: m_Proxies.reserve(m.size()); for(auto it = m.begin(); it != m.end(); ++it) m_Proxies.push_back(*it); + + Serialiser sendData("", Serialiser::WRITING, false); + SendPacket(m_Socket, eRemoteServer_Handshake); + + RemoteServerPacket type = (RemoteServerPacket)RecvPacket(m_Socket); + + if(type != eRemoteServer_Handshake) + { + RDCWARN("Didn't get proper handshake"); + SAFE_DELETE(m_Socket); + } } virtual ~RemoteServer() { SAFE_DELETE(m_Socket); } void ShutdownConnection() { delete this; }