Example #1
0
int HttpListener::checkAccess( struct conn_data * pData )
{
    struct sockaddr * pPeer = ( struct sockaddr *) pData->achPeerAddr;
    if (( AF_INET6 == pPeer->sa_family )&&
        ( IN6_IS_ADDR_V4MAPPED( &((struct sockaddr_in6 *)pPeer)->sin6_addr )) )
    {
        pPeer->sa_family = AF_INET;
        ((struct sockaddr_in *)pPeer)->sin_addr.s_addr = *((in_addr_t *)&pData->achPeerAddr[20]);
    }
    ClientInfo * pInfo = HttpGlobals::getClientCache()->getClientInfo( pPeer );
    pData->pInfo = pInfo;

    if ( D_ENABLED( DL_MORE ))
        LOG_D(( "[%s] New connection from %s:%d.", getAddrStr(),
                    pInfo->getAddrString(), ntohs( ((struct sockaddr_in*)pPeer)->sin_port) ));

    return pInfo->checkAccess();
}