diff --git a/CollabVMAgent/Program.cs b/CollabVMAgent/Program.cs index a94b2e9..d3c3083 100644 --- a/CollabVMAgent/Program.cs +++ b/CollabVMAgent/Program.cs @@ -17,6 +17,7 @@ namespace CollabVMAgent static readonly string UploadsFolder = Environment.GetEnvironmentVariable("USERPROFILE") + @"\Desktop"; static MessagePackSerializer serializer = MessagePackSerializer.Get(); + static VirtIOSerial vio; static void Main(string[] args) { if (!IsAdmin()) @@ -31,8 +32,16 @@ namespace CollabVMAgent #if DEBUG Console.WriteLine("Starting CollabVM Agent in Debug mode"); #endif - VirtIOSerial vio = new VirtIOSerial(); + vio = new VirtIOSerial(); vio.Data += OnData; + if (vio.WriteMsg(new ProtocolMessage{ + Operation = ProtocolOperation.NOP + })) + { +#if DEBUG + Console.WriteLine("Wrote NOP"); +#endif + } Thread.Sleep(-1); } @@ -79,6 +88,20 @@ namespace CollabVMAgent } break; } + case ProtocolOperation.NOP: + { + if (vio.WriteMsg(new ProtocolMessage + { + Operation = ProtocolOperation.NOP + })) + { +#if DEBUG + Console.WriteLine("Wrote NOP"); +#endif + } + break; + } + } } diff --git a/CollabVMAgent/Protocol.cs b/CollabVMAgent/Protocol.cs index 35abd63..344bd3f 100644 --- a/CollabVMAgent/Protocol.cs +++ b/CollabVMAgent/Protocol.cs @@ -11,6 +11,7 @@ namespace CollabVMAgent.Protocol public enum ProtocolOperation : ushort { UploadFile = 0, - ACK = 1 + ACK = 1, + NOP = 2, } } diff --git a/CollabVMAgent/VirtIOSerial.cs b/CollabVMAgent/VirtIOSerial.cs index 971c919..b2fd450 100644 --- a/CollabVMAgent/VirtIOSerial.cs +++ b/CollabVMAgent/VirtIOSerial.cs @@ -89,6 +89,10 @@ namespace CollabVMAgent #if DEBUG Console.WriteLine($"Reported payload size: {size}"); #endif + if (size == 0) + { + continue; + } // Read the message uint position = 0; byte[] buf = new byte[COPY_BUFFER_SIZE];