summaryrefslogtreecommitdiff
path: root/StdLib/BsdSocketLib/connect.c
diff options
context:
space:
mode:
authorlpleahy <lpleahy@6f19259b-4bc3-4df7-8a09-765794883524>2011-09-30 23:02:35 +0000
committerlpleahy <lpleahy@6f19259b-4bc3-4df7-8a09-765794883524>2011-09-30 23:02:35 +0000
commita88c31639bb24c73383a4528a5b77066e805148b (patch)
tree058801cd8687b0a0c6f82459b56b2ad3beb43bf4 /StdLib/BsdSocketLib/connect.c
parentdf7499fcc1fbd6c825cabf19bbed379688416125 (diff)
downloadedk2-platforms-a88c31639bb24c73383a4528a5b77066e805148b.tar.xz
Update the sockets library code
* Passes conformance and functional tests. * Builds with GCC 4.4 compiler. Signed-off by: lpleahy git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12497 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'StdLib/BsdSocketLib/connect.c')
-rw-r--r--StdLib/BsdSocketLib/connect.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/StdLib/BsdSocketLib/connect.c b/StdLib/BsdSocketLib/connect.c
index 92fc75bdb0..aa4df57d9f 100644
--- a/StdLib/BsdSocketLib/connect.c
+++ b/StdLib/BsdSocketLib/connect.c
@@ -18,11 +18,8 @@
/**
Connect to a remote system via the network.
- The ::connect routine attempts to establish a connection to a
+ The connect routine attempts to establish a connection to a
socket on the local or remote system using the specified address.
- The
- <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/connect.html">POSIX</a>
- documentation is available online.
There are three states associated with a connection:
<ul>
@@ -30,23 +27,27 @@
<li>Connection in progress</li>
<li>Connected</li>
</ul>
- In the "Not connected" state, calls to ::connect start the connection
+ In the initial "Not connected" state, calls to connect start the connection
processing and update the state to "Connection in progress". During
the "Connection in progress" state, connect polls for connection completion
and moves the state to "Connected" after the connection is established.
Note that these states are only visible when the file descriptor is marked
- with O_NONBLOCK. Also, the POLL_WRITE bit is set when the connection
+ with O_NONBLOCK. Also, the POLLOUT bit is set when the connection
completes and may be used by poll or select as an indicator to call
connect again.
+ The
+ <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/connect.html">POSIX</a>
+ documentation is available online.
+
@param [in] s Socket file descriptor returned from ::socket.
@param [in] address Network address of the remote system
@param [in] address_len Length of the remote network address
- @return ::connect returns zero if successful and -1 when an error occurs.
- In the case of an error, errno contains more details.
+ @return This routine returns zero if successful and -1 when an error occurs.
+ In the case of an error, ::errno contains more details.
**/
int
@@ -70,9 +71,9 @@ connect (
&errno );
if ( NULL != pSocketProtocol ) {
//
- // TODO: Check for NON_BLOCKING
+ // Determine if the operation is blocking
//
- bBlocking = TRUE;
+ bBlocking = (BOOLEAN)( 0 == ( pDescriptor->Oflags & O_NONBLOCK ));
//
// Attempt to connect to a remote system