teTCPError TCPServerConnection::listen ( unsigned short port, unsigned int connections ) { disconnect(); if ( port == 0) return setError(eTCPBadPort); maxUsers = connections; serverIP.host = INADDR_ANY; serverIP.port = port; socket = net_TCP_Open(&serverIP); if ( socket == NULL ) return setError(eTCPConnectionFailed); socketSet = net_AllocSocketSet(getMaxConnections()+1); if (!socketSet) return setError(eTCPSocketNFG); IPaddress serverIP; net_ResolveHost(&serverIP, NULL, getPort()); socket = net_TCP_Open(&serverIP); net_TCP_AddSocket(socketSet,socket); return setError(eTCPNoError); }
void checkTicketNumbers() { int want = getMaxConnections(); int current = connTicketHolder.outof(); if ( current != DEFAULT_MAX_CONN ) { if ( current < want ) { // they want fewer than they can handle // which is fine log(1) << " only allowing " << current << " connections" << endl; return; } if ( current > want ) { log() << " --maxConns too high, can only handle " << want << endl; } } connTicketHolder.resize( want ); }