// Get settings from the OS. These are settings that might change during // the OS session. Call Init() again to pick up those changes if required. // Returns NS_ERROR_FAILURE if error or NS_OK if success. nsresult nsAutodial::Init() { if (!gLog) gLog = PR_NewLogModule("Autodial"); mDefaultEntryName[0] = '\0'; mNumRASConnectionEntries = 0; mAutodialBehavior = QueryAutodialBehavior(); // No need to continue in this case. if (mAutodialBehavior == AUTODIAL_NEVER) { return NS_OK; } // Get the number of dialup entries in the phonebook. mNumRASConnectionEntries = NumRASEntries(); // Get the name of the default entry. nsresult result = GetDefaultEntryName(mDefaultEntryName, sizeof(mDefaultEntryName)); return result; }
// Add the specified address to the autodial directory. PRBool nsRASAutodial::AddAddressToAutodialDirectory(const char* hostName) { // Need to load the DLL if not loaded yet. if (!LoadRASapi32DLL()) return PR_FALSE; // First see if there is already a db entry for this address. RASAUTODIALENTRY autodialEntry; autodialEntry.dwSize = sizeof(RASAUTODIALENTRY); DWORD size = sizeof(RASAUTODIALENTRY); DWORD entries = 0; DWORD result = (*mpRasGetAutodialAddress)(hostName, nsnull, &autodialEntry, &size, &entries); // If there is already at least 1 entry in db for this address, return. if (result != ERROR_FILE_NOT_FOUND) { LOGD(("Autodial: Address %s already in autodial db.", hostName)); return PR_FALSE; } autodialEntry.dwSize = sizeof(RASAUTODIALENTRY); autodialEntry.dwFlags = 0; autodialEntry.dwDialingLocation = mAutodialServiceDialingLocation; GetDefaultEntryName(autodialEntry.szEntry, RAS_MaxEntryName); result = (*mpRasSetAutodialAddress)(hostName, 0, &autodialEntry, sizeof(RASAUTODIALENTRY), 1); if (result != ERROR_SUCCESS) { LOGE(("Autodial ::RasSetAutodialAddress failed result %d.", result)); return PR_FALSE; } LOGD(("Autodial: Added address %s to RAS autodial db for entry %s.", hostName, autodialEntry.szEntry)); return PR_TRUE; }
// Add the specified address to the autodial directory. bool nsAutodial::AddAddressToAutodialDirectory(char16ptr_t hostName) { // First see if there is already a db entry for this address. RASAUTODIALENTRYW autodialEntry; autodialEntry.dwSize = sizeof(autodialEntry); DWORD size = sizeof(autodialEntry); DWORD entries = 0; DWORD result = RasGetAutodialAddressW(hostName, nullptr, &autodialEntry, &size, &entries); // If there is already at least 1 entry in db for this address, return. if (result != ERROR_FILE_NOT_FOUND) { LOGD(("Autodial: Address %s already in autodial db.", hostName)); return false; } autodialEntry.dwSize = sizeof(autodialEntry); autodialEntry.dwFlags = 0; autodialEntry.dwDialingLocation = mAutodialServiceDialingLocation; GetDefaultEntryName(autodialEntry.szEntry, sizeof(autodialEntry.szEntry)); result = RasSetAutodialAddressW(hostName, 0, &autodialEntry, sizeof(autodialEntry), 1); if (result != ERROR_SUCCESS) { LOGE(("Autodial ::RasSetAutodialAddress failed result %d.", result)); return false; } LOGD(("Autodial: Added address %s to RAS autodial db for entry %s.", hostName, NS_ConvertUTF16toUTF8(autodialEntry.szEntry).get())); return true; }