mirror of
https://github.com/znc/znc.git
synced 2026-05-09 23:04:47 +02:00
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:
+14
-8
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user