Skip to content

Commit 8f332ab

Browse files
committed
Only access ValueTask.Result if completed successfully.
This ensures an exception is propagated correctly on the failure path.
1 parent d0bf988 commit 8f332ab

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/MySqlConnector/Protocol/Serialization/ProtocolUtility.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ public static int GetBytesPerCharacter(CharacterSet characterSet)
404404
private static ValueTask<Packet> ReadPacketAsync(BufferedByteReader bufferedByteReader, IByteHandler byteHandler, Func<int> getNextSequenceNumber, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior)
405405
{
406406
var headerBytesTask = bufferedByteReader.ReadBytesAsync(byteHandler, 4, ioBehavior);
407-
if (headerBytesTask.IsCompleted)
407+
if (headerBytesTask.IsCompletedSuccessfully)
408408
return ReadPacketAfterHeader(headerBytesTask.Result, bufferedByteReader, byteHandler, getNextSequenceNumber, protocolErrorBehavior, ioBehavior);
409409
return AddContinuation(headerBytesTask, bufferedByteReader, byteHandler, getNextSequenceNumber, protocolErrorBehavior, ioBehavior);
410410

@@ -429,7 +429,7 @@ private static ValueTask<Packet> ReadPacketAfterHeader(ReadOnlySpan<byte> header
429429
packetOutOfOrderException = MySqlProtocolException.CreateForPacketOutOfOrder(expectedSequenceNumber, packetSequenceNumber);
430430

431431
var payloadBytesTask = bufferedByteReader.ReadBytesAsync(byteHandler, payloadLength, ioBehavior);
432-
if (payloadBytesTask.IsCompleted)
432+
if (payloadBytesTask.IsCompletedSuccessfully)
433433
return CreatePacketFromPayload(payloadBytesTask.Result, payloadLength, protocolErrorBehavior, packetOutOfOrderException);
434434
return AddContinuation(payloadBytesTask, payloadLength, protocolErrorBehavior, packetOutOfOrderException);
435435

@@ -464,7 +464,7 @@ public static ValueTask<ArraySegment<byte>> ReadPayloadAsync(BufferedByteReader
464464
private static ValueTask<ArraySegment<byte>> DoReadPayloadAsync(BufferedByteReader bufferedByteReader, IByteHandler byteHandler, Func<int> getNextSequenceNumber, ArraySegmentHolder<byte> previousPayloads, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior)
465465
{
466466
var readPacketTask = ReadPacketAsync(bufferedByteReader, byteHandler, getNextSequenceNumber, protocolErrorBehavior, ioBehavior);
467-
while (readPacketTask.IsCompleted)
467+
while (readPacketTask.IsCompletedSuccessfully)
468468
{
469469
if (HasReadPayload(previousPayloads, readPacketTask.Result, protocolErrorBehavior, out var result))
470470
return result;

0 commit comments

Comments
 (0)