Skip to content

Commit 7d288bb

Browse files
committed
RTSDK-8563 Fixed EMA C# Non-Interactive provider failed to resize encoded buffer to publish user source directory message.
1 parent bc98805 commit 7d288bb

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

CSharp/Ema/Src/Core/Access/MarketItemHandler.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,8 +480,12 @@ void SendRejectMessage(ClientSession clientSession, IMsg msg, int statusCode, st
480480
}
481481
}
482482

483-
m_EncodeIterator.Clear();
483+
// Clears underlying ByteBuffer to reset buffer's length
484+
Eta.Common.ByteBuffer byteBuf = m_MsgBuffer.Data();
485+
byteBuf.Clear();
486+
m_MsgBuffer.Data(byteBuf, 0, byteBuf.Capacity);
484487

488+
m_EncodeIterator.Clear();
485489
CodecReturnCode retCode = m_EncodeIterator.SetBufferAndRWFVersion(m_MsgBuffer, clientSession.Channel().MajorVersion,
486490
clientSession.Channel().MinorVersion);
487491

CSharp/Ema/Src/Core/Access/OmmNiProviderImpl.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,8 +1172,17 @@ private CodecReturnCode SubmitDirectoryRefresh(DirectoryRefresh directoryRefresh
11721172
while ((retCode = directoryRefresh.Encode(encodeIt)) == CodecReturnCode.BUFFER_TOO_SMALL)
11731173
{
11741174
capacity *= 2;
1175-
if ((retCode = Utilities.RealignBuffer(encodeIt, capacity)) != CodecReturnCode.SUCCESS)
1176-
break;
1175+
1176+
encodedBuffer.Clear();
1177+
encodedBuffer.Data(new ByteBuffer(capacity));
1178+
1179+
if ((retCode = encodeIt.SetBufferAndRWFVersion(encodedBuffer, Codec.MajorVersion(), Codec.MinorVersion())) != CodecReturnCode.SUCCESS)
1180+
{
1181+
errorText.Append($"Internal error. Failed to set encode iterator buffer and version in " +
1182+
$"OmmNiProviderImpl.SubmitDirectoryRefresh(). Reason = {retCode.GetAsString()}.");
1183+
HandleInvalidUsage(errorText.ToString(), (int)retCode);
1184+
return CodecReturnCode.FAILURE;
1185+
}
11771186
}
11781187

11791188
if (retCode != CodecReturnCode.SUCCESS)
@@ -1186,7 +1195,7 @@ private CodecReturnCode SubmitDirectoryRefresh(DirectoryRefresh directoryRefresh
11861195

11871196
DecodeIterator decodeIt = new();
11881197

1189-
if((retCode = decodeIt.SetBufferAndRWFVersion(encodeIt.Buffer(), Codec.MajorVersion(), Codec.MinorVersion()))
1198+
if((retCode = decodeIt.SetBufferAndRWFVersion(encodedBuffer, Codec.MajorVersion(), Codec.MinorVersion()))
11901199
!= CodecReturnCode.SUCCESS)
11911200
{
11921201
errorText.Append($"Internal error. Failed to set decode iterator buffer and version in" +

0 commit comments

Comments
 (0)