Index: sdk/lib/drivers/ip/transport/tcp/event.c =================================================================== --- sdk/lib/drivers/ip/transport/tcp/event.c (revision 74673) +++ sdk/lib/drivers/ip/transport/tcp/event.c (working copy) @@ -37,6 +37,7 @@ VOID CompleteBucket(PCONNECTION_ENDPOINT Connection, PTDI_BUCKET Bucket, const BOOLEAN Synchronous) { + InitializeListHead(&Bucket->Entry); ReferenceObject(Connection); Bucket->AssociatedEndpoint = Connection; if (Synchronous) Index: sdk/lib/drivers/ip/transport/tcp/tcp.c =================================================================== --- sdk/lib/drivers/ip/transport/tcp/tcp.c (revision 74673) +++ sdk/lib/drivers/ip/transport/tcp/tcp.c (working copy) @@ -367,12 +367,21 @@ Bucket->Request.RequestNotifyObject = (PVOID)Complete; Bucket->Request.RequestContext = Context; - - InsertTailList( &Connection->ConnectRequest, &Bucket->Entry ); - + + InsertTailList(&Connection->ConnectRequest, &Bucket->Entry); + Status = TCPTranslateError(LibTCPConnect(Connection, &connaddr, RemotePort)); + if (!NT_SUCCESS(Status)) + { + ASSERT(!IsListEmpty(&Bucket->Entry)); + RemoveEntryList(&Bucket->Entry); + Bucket->Information = 0; + Bucket->Status = Status; + CompleteBucket(Connection, Bucket, FALSE); + Status = STATUS_PENDING; + } } }