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
This commit is contained in:
lpleahy leroy.p.leahy 2013-12-13 19:22:39 +00:00 committed by lpleahy
parent daf705847f
commit ceecdc62ab
3 changed files with 16 additions and 12 deletions

View File

@ -1825,15 +1825,7 @@ EslSocketConnect (
// Set the next state if connected
//
if ( EFI_NOT_READY != Status ) {
if ( !EFI_ERROR ( Status )) {
pSocket->State = SOCKET_STATE_CONNECTED;
//
// Start the receive operations
//
EslSocketRxStart ( pSocket->pPortList );
}
else {
if ( EFI_ERROR ( Status )) {
pSocket->State = SOCKET_STATE_BOUND;
}
}
@ -5141,7 +5133,7 @@ EslSocketRxPoll (
<ul>
<li>::EslIp4Receive to restart the receive engine to release flow control.</li>
<li>::EslIp4RxComplete to continue the operation of the receive engine if flow control is not being applied.</li>
<li>::EslIp4SocketIsConfigured to start the recevie engine for the new socket.</li>
<li>::EslIp4SocketIsConfigured to start the receive engine for the new socket.</li>
<li>::EslTcp4ListenComplete to start the recevie engine for the new socket.</li>
<li>::EslTcp4Receive to restart the receive engine to release flow control.</li>
<li>::EslTcp4RxComplete to continue the operation of the receive engine if flow control is not being applied.</li>

View File

@ -232,6 +232,13 @@ EslTcp4ConnectComplete (
pTcp4->ConfigData.AccessPoint.RemoteAddress.Addr[3],
pTcp4->ConfigData.AccessPoint.RemotePort ));
//
// Start the receive operations
//
pSocket->bConfigured = TRUE;
pSocket->State = SOCKET_STATE_CONNECTED;
EslSocketRxStart ( pPort );
//
// Remove the rest of the ports
//
@ -416,7 +423,6 @@ EslTcp4ConnectPoll (
case EFI_SUCCESS:
pSocket->errno = 0;
pSocket->bConfigured = TRUE;
break;
case EFI_TIMEOUT:

View File

@ -238,6 +238,13 @@ EslTcp6ConnectComplete (
pTcp6->ConfigData.AccessPoint.RemoteAddress.Addr[15],
pTcp6->ConfigData.AccessPoint.RemotePort ));
//
// Start the receive operations
//
pSocket->bConfigured = TRUE;
pSocket->State = SOCKET_STATE_CONNECTED;
EslSocketRxStart ( pPort );
//
// Remove the rest of the ports
//
@ -434,7 +441,6 @@ EslTcp6ConnectPoll (
case EFI_SUCCESS:
pSocket->errno = 0;
pSocket->bConfigured = TRUE;
break;
case EFI_TIMEOUT: