1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-17 16:53:13 +00:00

Fixed unshift logic for IPC socket

This commit is contained in:
Bryan Roe
2019-12-03 12:27:06 -08:00
parent b2522cd283
commit cb0f43e17e

View File

@@ -883,6 +883,14 @@ void ILibDuktape_net_server_IPC_ResumeSink(ILibDuktape_DuplexStream *sender, voi
ILibDuktape_DuplexStream_WriteData(winIPC->ds, winIPC->buffer + winIPC->bufferOffset, winIPC->bytesLeft); ILibDuktape_DuplexStream_WriteData(winIPC->ds, winIPC->buffer + winIPC->bufferOffset, winIPC->bytesLeft);
if (winIPC->unshiftedBytes > 0) if (winIPC->unshiftedBytes > 0)
{ {
if (winIPC->unshiftedBytes == winIPC->bytesLeft)
{
// Unshift the entire buffer
winIPC->unshiftedBytes = 0;
}
else
{
// Unshift some of the buffer
winIPC->bufferOffset += (winIPC->bytesLeft - winIPC->unshiftedBytes); winIPC->bufferOffset += (winIPC->bytesLeft - winIPC->unshiftedBytes);
if (winIPC->bytesLeft == winIPC->unshiftedBytes) if (winIPC->bytesLeft == winIPC->unshiftedBytes)
{ {
@@ -890,6 +898,7 @@ void ILibDuktape_net_server_IPC_ResumeSink(ILibDuktape_DuplexStream *sender, voi
} }
winIPC->bytesLeft = winIPC->unshiftedBytes; winIPC->bytesLeft = winIPC->unshiftedBytes;
} }
}
else else
{ {
winIPC->bufferOffset = winIPC->bytesLeft = 0; winIPC->bufferOffset = winIPC->bytesLeft = 0;