wpa_gui: Show entire list of networks

Use LAST_ID of LIST_NETWORKS to load all the network entries iteratively
if there is large enough number of networks to not fit in a single
response.

Signed-off-by: Victor Ananyev <vindex10@gmail.com>
This commit is contained in:
Victor Ananyev 2019-09-19 00:12:23 +02:00 committed by Jouni Malinen
parent a3b59fa111
commit eadfeb0e93

View File

@ -12,6 +12,8 @@
#include <cstdio> #include <cstdio>
#include <unistd.h> #include <unistd.h>
#include <chrono>
#include <thread>
#include <QMessageBox> #include <QMessageBox>
#include <QCloseEvent> #include <QCloseEvent>
#include <QImageReader> #include <QImageReader>
@ -713,9 +715,22 @@ void WpaGui::updateNetworks()
strstr(flags, "[DISABLED]") == NULL) strstr(flags, "[DISABLED]") == NULL)
first_active = networkSelect->count() - 1; first_active = networkSelect->count() - 1;
if (last)
break;
start = end + 1; start = end + 1;
if (*start && strchr(start, '\n'))
continue;
/* avoid race conditions */
std::this_thread::sleep_for(std::chrono::milliseconds(200));
QString cmd("LIST_NETWORKS LAST_ID=");
cmd.append(id);
if (ctrlRequest(cmd.toLocal8Bit().constData(), buf, &len) < 0)
break;
buf[len] = '\0';
start = strchr(buf, '\n');
if (!start)
break;
start++;
} }
if (networkSelect->count() > 1) if (networkSelect->count() > 1)