diff options
author | lpleahy leroy.p.leahy <lpleahy leroy.p.leahy@intel.com> | 2013-12-13 19:22:39 +0000 |
---|---|---|
committer | lpleahy <lpleahy@6f19259b-4bc3-4df7-8a09-765794883524> | 2013-12-13 19:22:39 +0000 |
commit | ceecdc62ab73e5b726630345865a512c780c134e (patch) | |
tree | 4ea89896d73b05d38295db368d821e8c13ab75a3 /StdLib/EfiSocketLib/Tcp6.c | |
parent | daf705847f33db1f7a17c1c5b2a01d8f8ccba0ac (diff) | |
download | edk2-ceecdc62ab73e5b726630345865a512c780c134e.tar.gz edk2-ceecdc62ab73e5b726630345865a512c780c134e.tar.bz2 edk2-ceecdc62ab73e5b726630345865a512c780c134e.zip |
Fix the non-blocking behavior for connect. The behavior was correct if the code polled the connect routine but was not correct when using select to complete the asynchronous request. This change fixes the select case by moving where some of the operations performed upon the connection completion.
Signed-off-by: lpleahy leroy.p.leahy@intel.com
Reviewed-by: Daniel Moura oxesoft@gmail.com
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14984 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'StdLib/EfiSocketLib/Tcp6.c')
-rw-r--r-- | StdLib/EfiSocketLib/Tcp6.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/StdLib/EfiSocketLib/Tcp6.c b/StdLib/EfiSocketLib/Tcp6.c index b2e5538daf..21c4109d6e 100644 --- a/StdLib/EfiSocketLib/Tcp6.c +++ b/StdLib/EfiSocketLib/Tcp6.c @@ -239,6 +239,13 @@ EslTcp6ConnectComplete ( pTcp6->ConfigData.AccessPoint.RemotePort ));
//
+ // Start the receive operations
+ //
+ pSocket->bConfigured = TRUE;
+ pSocket->State = SOCKET_STATE_CONNECTED;
+ EslSocketRxStart ( pPort );
+
+ //
// Remove the rest of the ports
//
bRemovePorts = TRUE;
@@ -434,7 +441,6 @@ EslTcp6ConnectPoll ( case EFI_SUCCESS:
pSocket->errno = 0;
- pSocket->bConfigured = TRUE;
break;
case EFI_TIMEOUT:
|