static void session_authenticate(SoupSession* session, SoupMessage* msg, SoupAuth* auth, gboolean retrying, gpointer user_data) { SoupURI* uri; WebKitAuthData* authData; SoupSessionFeature* manager = (SoupSessionFeature*)user_data; #ifdef SOUP_TYPE_PASSWORD_MANAGER GSList* users; #endif const char *login, *password; soup_session_pause_message(session, msg); /* We need to make sure the message sticks around when pausing it */ g_object_ref(msg); uri = soup_message_get_uri(msg); authData = g_slice_new0(WebKitAuthData); authData->msg = msg; authData->auth = auth; authData->session = session; authData->manager = manager; login = password = NULL; #ifdef SOUP_TYPE_PASSWORD_MANAGER users = soup_auth_get_saved_users(auth); if (users) { login = users->data; password = soup_auth_get_saved_password(auth, login); g_slist_free(users); } #endif show_auth_dialog(authData, login, password); }
static bool getSavedLogin(SoupAuth* auth, const char** username, const char** password) { #ifdef SOUP_TYPE_PASSWORD_MANAGER GSList* users = soup_auth_get_saved_users(auth); if (!users) return false; *username = static_cast<char*>(users->data); *password = soup_auth_get_saved_password(auth, *username); g_slist_free(users); return *username && *password; #else return false; #endif }