VError XBsdNetAddr::FromIpAndPort(const VString& inIP, PortNumber inPort) { StTmpErrorContext errCtx; VError verr=VE_OK; if(ConvertFromV4()) verr=FromIpAndPort(AF_INET, inIP, inPort); if(verr!=VE_OK && ConvertFromV6()) verr=FromIpAndPort(AF_INET, inIP, inPort); if(verr==VE_OK ) errCtx.Flush(); return verr; }
VError Publish() { StTmpErrorContext errCtx; #if WITH_DEPRECATED_IPV4_API XTCPSock* sock=XTCPSock::NewServerListeningSock(GetAddress(), GetPort(), fBoundSock); #else XTCPSock* sock=XTCPSock::NewServerListeningSock(fAddr, fBoundSock); #endif SetSock(sock); if(sock!=NULL) { errCtx.Flush(); return VE_OK; } return vThrowError(VE_SRVR_FAILED_TO_CREATE_LISTENING_SOCKET); }
VError VTCPConnectionListener::StartListening ( ) { StTmpErrorContext errCtx; if ((fSockListener = new VSockListener(fRequestLogger)) == NULL) return VE_MEMORY_FULL; VError vError = VE_OK; if ( fCertificatePath. GetLength ( ) > 0 && fKeyPath. GetLength ( ) > 0 ) { char* szchCert = new char [ fCertificatePath. GetLength ( ) * 2 + 1 ]; fCertificatePath. ToCString ( szchCert, fCertificatePath. GetLength ( ) * 2 + 1 ); char* szchKey = new char [ fKeyPath. GetLength ( ) * 2 + 1 ]; fKeyPath. ToCString ( szchKey, fKeyPath. GetLength ( ) * 2 + 1 ); fSockListener-> SetCertificatePaths ( szchCert, szchKey ); delete [ ] szchCert; delete [ ] szchKey; } else if (fCertificate.GetLength() > 0 && fKey.GetLength() > 0) { vError = fSockListener-> SetKeyAndCertificate(fKey, fCertificate); } if (vError != VE_OK) { delete fSockListener; fSockListener = NULL; return vError; } VTCPConnectionHandlerFactory* vtcpCHFactory = NULL; std::vector<PortNumber> vctrPorts; std::vector<PortNumber>::iterator iterPorts; std::vector<VTCPConnectionHandlerFactory*>::iterator iterFactories = fFactories. begin ( ); while ( iterFactories != fFactories. end ( ) ) { vtcpCHFactory = *iterFactories; vError = vtcpCHFactory-> GetPorts ( vctrPorts ); if ( vError != VE_OK ) break; iterPorts = vctrPorts. begin ( ); while ( iterPorts != vctrPorts. end ( ) ) { fSockListener-> AddListeningPort ( vtcpCHFactory-> GetIP ( ), *iterPorts, vtcpCHFactory-> IsSSL ( ) ); iterPorts++; } vctrPorts. clear ( ); iterFactories++; } if ( vError == VE_OK ) { if ( fSockListener-> StartListening ( ) ) Run ( ); else vError = ThrowNetError ( VE_SRVR_FAILED_TO_START_LISTENER ); } if ( vError != VE_OK ) { DeInit ( ); } else { errCtx.Flush(); } return vError; }