ntoskrnl/tests: Retry bind if address is in use in test_wsk_listen_socket().
Fixes test failures occuring when the tests using the same ports run closely one after another. Signed-off-by: Paul Gofman <pgofman@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
5ead4e1e69
commit
8f80ea670d
|
@ -265,6 +265,8 @@ static void test_wsk_listen_socket(void)
|
||||||
ok(status == STATUS_SUCCESS, "Got unexpected status %#x.\n", status);
|
ok(status == STATUS_SUCCESS, "Got unexpected status %#x.\n", status);
|
||||||
ok(wsk_irp->IoStatus.Status == STATUS_SUCCESS, "Got unexpected status %#x.\n", wsk_irp->IoStatus.Status);
|
ok(wsk_irp->IoStatus.Status == STATUS_SUCCESS, "Got unexpected status %#x.\n", wsk_irp->IoStatus.Status);
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
IoReuseIrp(wsk_irp, STATUS_UNSUCCESSFUL);
|
IoReuseIrp(wsk_irp, STATUS_UNSUCCESSFUL);
|
||||||
IoSetCompletionRoutine(wsk_irp, irp_completion_routine, &irp_complete_event, TRUE, TRUE, TRUE);
|
IoSetCompletionRoutine(wsk_irp, irp_completion_routine, &irp_complete_event, TRUE, TRUE, TRUE);
|
||||||
wsk_irp->IoStatus.Status = 0xdeadbeef;
|
wsk_irp->IoStatus.Status = 0xdeadbeef;
|
||||||
|
@ -273,11 +275,15 @@ static void test_wsk_listen_socket(void)
|
||||||
ok(status == STATUS_PENDING, "Got unexpected status %#x.\n", status);
|
ok(status == STATUS_PENDING, "Got unexpected status %#x.\n", status);
|
||||||
status = KeWaitForSingleObject(&irp_complete_event, Executive, KernelMode, FALSE, NULL);
|
status = KeWaitForSingleObject(&irp_complete_event, Executive, KernelMode, FALSE, NULL);
|
||||||
ok(status == STATUS_SUCCESS, "Got unexpected status %#x.\n", status);
|
ok(status == STATUS_SUCCESS, "Got unexpected status %#x.\n", status);
|
||||||
ok(wsk_irp->IoStatus.Status == STATUS_SUCCESS, "Got unexpected status %#x.\n", wsk_irp->IoStatus.Status);
|
ok(wsk_irp->IoStatus.Status == STATUS_SUCCESS
|
||||||
|
|| wsk_irp->IoStatus.Status == STATUS_ADDRESS_ALREADY_ASSOCIATED,
|
||||||
|
"Got unexpected status %#x.\n", wsk_irp->IoStatus.Status);
|
||||||
ok(!wsk_irp->IoStatus.Information, "Got unexpected Information %#lx.\n",
|
ok(!wsk_irp->IoStatus.Information, "Got unexpected Information %#lx.\n",
|
||||||
wsk_irp->IoStatus.Information);
|
wsk_irp->IoStatus.Information);
|
||||||
|
}
|
||||||
|
while (wsk_irp->IoStatus.Status == STATUS_ADDRESS_ALREADY_ASSOCIATED);
|
||||||
|
|
||||||
timeout.QuadPart = -1000 * 10000;
|
timeout.QuadPart = -2000 * 10000;
|
||||||
|
|
||||||
IoReuseIrp(wsk_irp, STATUS_UNSUCCESSFUL);
|
IoReuseIrp(wsk_irp, STATUS_UNSUCCESSFUL);
|
||||||
IoSetCompletionRoutine(wsk_irp, irp_completion_routine, &irp_complete_event, TRUE, TRUE, TRUE);
|
IoSetCompletionRoutine(wsk_irp, irp_completion_routine, &irp_complete_event, TRUE, TRUE, TRUE);
|
||||||
|
|
Loading…
Reference in New Issue