winhttp: Skip unexpected completions in netconn_wait_overlapped_result().

This commit is contained in:
Paul Gofman 2023-07-28 15:35:02 -06:00 committed by Alexandre Julliard
parent 96b6bf6111
commit 3b69baaee8

View file

@ -56,15 +56,16 @@ BOOL netconn_wait_overlapped_result( struct netconn *conn, WSAOVERLAPPED *ovr, D
OVERLAPPED *completion_ovr; OVERLAPPED *completion_ovr;
ULONG_PTR key; ULONG_PTR key;
if (!GetQueuedCompletionStatus( conn->port, len, &key, &completion_ovr, INFINITE )) while (1)
{ {
WARN( "GetQueuedCompletionStatus failed, err %lu.\n", GetLastError() ); if (!GetQueuedCompletionStatus( conn->port, len, &key, &completion_ovr, INFINITE ))
return FALSE; {
} WARN( "GetQueuedCompletionStatus failed, err %lu.\n", GetLastError() );
if ((key != conn->socket && conn->socket != -1) || completion_ovr != (OVERLAPPED *)ovr) return FALSE;
{ }
ERR( "Unexpected completion key %Ix, overlapped %p.\n", key, completion_ovr ); if (completion_ovr == (OVERLAPPED *)ovr && (key == conn->socket || conn->socket == -1))
return FALSE; break;
ERR( "Unexpected completion key %Ix, completion ovr %p, ovr %p.\n", key, completion_ovr, ovr );
} }
return TRUE; return TRUE;
} }