Update to latest Csocket

SockError() is now called with the correct errno if accept() fails.
This is some preparation for a later patch which will handle EMFILE.


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1179 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
psychon
2008-08-29 18:59:05 +00:00
parent d4cd78a43b
commit 69f44c35a0
+14 -8
View File
@@ -28,7 +28,7 @@
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
* $Revision: 1.82 $
* $Revision: 1.83 $
*/
#include "Csocket.h"
@@ -851,9 +851,12 @@ int Csock::Accept( CS_STRING & sHost, u_short & iRPort )
struct sockaddr_in client;
socklen_t clen = sizeof( client );
iSock = accept( m_iReadSock, (struct sockaddr *) &client, &clen );
getpeername( iSock, (struct sockaddr *) &client, &clen );
sHost = inet_ntoa( client.sin_addr );
iRPort = ntohs( client.sin_port );
if( iSock != -1 )
{
getpeername( iSock, (struct sockaddr *) &client, &clen );
sHost = inet_ntoa( client.sin_addr );
iRPort = ntohs( client.sin_port );
}
}
#ifdef HAVE_IPV6
else
@@ -862,11 +865,14 @@ int Csock::Accept( CS_STRING & sHost, u_short & iRPort )
struct sockaddr_in6 client;
socklen_t clen = sizeof( client );
iSock = accept( m_iReadSock, (struct sockaddr *) &client, &clen );
getpeername( iSock, (struct sockaddr *) &client, &clen );
if( inet_ntop( AF_INET6, &client.sin6_addr, straddr, sizeof(straddr) ) > 0 )
if( iSock != -1 )
{
sHost = straddr;
iRPort = ntohs( client.sin6_port );
getpeername( iSock, (struct sockaddr *) &client, &clen );
if( inet_ntop( AF_INET6, &client.sin6_addr, straddr, sizeof(straddr) ) > 0 )
{
sHost = straddr;
iRPort = ntohs( client.sin6_port );
}
}
}
#endif /* HAVE_IPV6 */