NS_IMETHODIMP nsServerSocket::InitWithFilename(nsIFile *aPath, uint32_t aPermissions, int32_t aBacklog) { #if defined(XP_UNIX) nsresult rv; nsAutoCString path; rv = aPath->GetNativePath(path); if (NS_FAILED(rv)) return rv; // Create a Unix domain PRNetAddr referring to the given path. PRNetAddr addr; if (path.Length() > sizeof(addr.local.path) - 1) return NS_ERROR_FILE_NAME_TOO_LONG; addr.local.family = PR_AF_LOCAL; memcpy(addr.local.path, path.get(), path.Length()); addr.local.path[path.Length()] = '\0'; rv = InitWithAddress(&addr, aBacklog); if (NS_FAILED(rv)) return rv; return aPath->SetPermissions(aPermissions); #else return NS_ERROR_SOCKET_ADDRESS_NOT_SUPPORTED; #endif }
NS_IMETHODIMP nsServerSocket::Init(PRInt32 aPort, PRBool aLoopbackOnly, PRInt32 aBackLog) { PRNetAddrValue val; PRNetAddr addr; if (aPort < 0) aPort = 0; if (aLoopbackOnly) val = PR_IpAddrLoopback; else val = PR_IpAddrAny; PR_SetNetAddr(val, PR_AF_INET, aPort, &addr); return InitWithAddress(&addr, aBackLog); }
NS_IMETHODIMP nsServerSocket::InitSpecialConnection(int32_t aPort, nsServerSocketFlag aFlags, int32_t aBackLog) { PRNetAddrValue val; PRNetAddr addr; if (aPort < 0) aPort = 0; if (aFlags & nsIServerSocket::LoopbackOnly) val = PR_IpAddrLoopback; else val = PR_IpAddrAny; PR_SetNetAddr(val, PR_AF_INET, aPort, &addr); mKeepWhenOffline = ((aFlags & nsIServerSocket::KeepWhenOffline) != 0); return InitWithAddress(&addr, aBackLog); }