From: lpleahy Date: Wed, 3 Aug 2011 17:45:52 +0000 (+0000) Subject: Fix send to properly wait while long transmits are in progress X-Git-Tag: edk2-stable201903~14443 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;ds=sidebyside;h=486aace42ca6fd9bd80f80197f0bb24cec99f3b6;p=mirror_edk2.git Fix send to properly wait while long transmits are in progress git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12083 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/StdLib/BsdSocketLib/send.c b/StdLib/BsdSocketLib/send.c index e0ec64367c..f3f739cb6f 100644 --- a/StdLib/BsdSocketLib/send.c +++ b/StdLib/BsdSocketLib/send.c @@ -44,54 +44,8 @@ send ( int flags ) { - ssize_t LengthInBytes; - CONST UINT8 * pData; - struct __filedes * pDescriptor; - EFI_SOCKET_PROTOCOL * pSocketProtocol; - EFI_STATUS Status; - - // - // Assume failure - // - LengthInBytes = -1; - - // - // Locate the context for this socket - // - pSocketProtocol = BslFdToSocketProtocol ( s, - &pDescriptor, - &errno ); - if ( NULL != pSocketProtocol ) { - // - // Send the data using the socket - // - pData = buffer; - do { - errno = 0; - Status = pSocketProtocol->pfnSend ( pSocketProtocol, - flags, - length, - pData, - (size_t *)&LengthInBytes, - NULL, - 0, - &errno ); - if ( EFI_ERROR ( Status )) { - LengthInBytes = -1; - break; - } - - // - // Account for the data sent - // - pData += LengthInBytes; - length -= LengthInBytes; - // TODO: Add non-blocking check - } while (( 0 != length ) && ( EFI_NOT_READY == Status )); - } - // - // Return the number of data bytes sent, -1 for errors + // Send the data // - return (INT32)LengthInBytes; + return sendto ( s, buffer, length, flags, NULL, 0 ); } diff --git a/StdLib/BsdSocketLib/sendto.c b/StdLib/BsdSocketLib/sendto.c index 338eb36eb9..aa6ea8c14a 100644 --- a/StdLib/BsdSocketLib/sendto.c +++ b/StdLib/BsdSocketLib/sendto.c @@ -82,7 +82,7 @@ sendto ( to, tolen, &errno ); - if ( EFI_ERROR ( Status )) { + if ( EFI_ERROR ( Status ) && ( EFI_NOT_READY != Status )) { LengthInBytes = -1; break; }