[pkg-wine-party] [SCM] Debian Wine packaging branch, wheezy, updated. wine-1.4-7-302-gb61b690
Alexandre Julliard
julliard at winehq.org
Sun Jun 17 20:04:00 UTC 2012
The following commit has been merged in the wheezy branch:
commit db1d04c4bf5dec9da37c6f4bc02fc4049375806c
Author: Erich Hoover <ehoover at mines.edu>
Date: Wed Jun 6 17:35:32 2012 -0600
ws2_32: Use STATUS_MORE_PROCESSING_REQUIRED to indicate that the AcceptEx async should not send a completion.
(cherry picked from commit 7e9e8b6b800f7a0393b6a0d4b1a893d9ae78e262)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 7356ab0..0c1cb94 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -1706,7 +1706,9 @@ static NTSTATUS WS2_async_accept( void *arg, IO_STATUS_BLOCK *iosb, NTSTATUS sta
if (status != STATUS_PENDING)
goto finish;
- return STATUS_SUCCESS;
+ /* The APC has finished but no completion should be sent for the operation yet, additional processing
+ * needs to be performed by WS2_async_accept_recv() first. */
+ return STATUS_MORE_PROCESSING_REQUIRED;
finish:
iosb->u.Status = status;
@@ -1714,8 +1716,6 @@ finish:
if (wsa->user_overlapped->hEvent)
SetEvent(wsa->user_overlapped->hEvent);
- if (wsa->cvalue)
- WS_AddCompletion( HANDLE2SOCKET(wsa->listen_socket), wsa->cvalue, iosb->u.Status, iosb->Information );
*apc = ws2_async_accept_apc;
return status;
@@ -2046,7 +2046,8 @@ static BOOL WINAPI WS2_AcceptEx(SOCKET listener, SOCKET acceptor, PVOID dest, DW
req->async.callback = wine_server_client_ptr( WS2_async_accept );
req->async.iosb = wine_server_client_ptr( overlapped );
req->async.arg = wine_server_client_ptr( wsa );
- /* We don't set event or completion since we may also have to read */
+ req->async.cvalue = cvalue;
+ /* We don't set event since we may also have to read */
status = wine_server_call( req );
}
SERVER_END_REQ;
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 2de23c9..4d64672 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -5397,11 +5397,11 @@ static void test_completion_port(void)
bret = GetQueuedCompletionStatus(io_port, &num_bytes, &key, &olp, 100);
ok(bret == FALSE, "failed to get completion status %u\n", bret);
- todo_wine ok(GetLastError() == ERROR_OPERATION_ABORTED, "Last error was %d\n", GetLastError());
- todo_wine ok(key == 125, "Key is %lu\n", key);
- todo_wine ok(num_bytes == 0, "Number of bytes transferred is %u\n", num_bytes);
- todo_wine ok(olp == &ov, "Overlapped structure is at %p\n", olp);
- todo_wine ok(olp && (olp->Internal == (ULONG)STATUS_CANCELLED), "Internal status is %lx\n", olp ? olp->Internal : 0);
+ ok(GetLastError() == ERROR_OPERATION_ABORTED, "Last error was %d\n", GetLastError());
+ ok(key == 125, "Key is %lu\n", key);
+ ok(num_bytes == 0, "Number of bytes transferred is %u\n", num_bytes);
+ ok(olp == &ov, "Overlapped structure is at %p\n", olp);
+ ok(olp && (olp->Internal == (ULONG)STATUS_CANCELLED), "Internal status is %lx\n", olp ? olp->Internal : 0);
SetLastError(0xdeadbeef);
key = 0xdeadbeef;
--
Debian Wine packaging
More information about the pkg-wine-party
mailing list