refactor: add retry to get external interface
parent
01cec9fcb7
commit
dc9fe04d11
|
@ -20,6 +20,8 @@ class Network : public ALabel {
|
||||||
~Network();
|
~Network();
|
||||||
auto update() -> void;
|
auto update() -> void;
|
||||||
private:
|
private:
|
||||||
|
static const uint8_t MAX_RETRY = 10;
|
||||||
|
|
||||||
static int handleEvents(struct nl_msg*, void*);
|
static int handleEvents(struct nl_msg*, void*);
|
||||||
static int handleScan(struct nl_msg*, void*);
|
static int handleScan(struct nl_msg*, void*);
|
||||||
|
|
||||||
|
|
|
@ -383,9 +383,14 @@ int waybar::modules::Network::handleEvents(struct nl_msg *msg, void *data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (net->ifid_ <= 0 && !net->config_["interface"].isString()) {
|
if (net->ifid_ <= 0 && !net->config_["interface"].isString()) {
|
||||||
|
for (uint8_t i = 0; i < MAX_RETRY; i += 1) {
|
||||||
|
net->ifid_ = net->getExternalInterface();
|
||||||
|
if (net->ifid_ > 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
// Need to wait before get external interface
|
// Need to wait before get external interface
|
||||||
net->thread_.sleep_for(std::chrono::seconds(1));
|
net->thread_.sleep_for(std::chrono::seconds(1));
|
||||||
net->ifid_ = net->getExternalInterface();
|
}
|
||||||
if (net->ifid_ > 0) {
|
if (net->ifid_ > 0) {
|
||||||
char ifname[IF_NAMESIZE];
|
char ifname[IF_NAMESIZE];
|
||||||
if_indextoname(net->ifid_, ifname);
|
if_indextoname(net->ifid_, ifname);
|
||||||
|
|
Loading…
Reference in New Issue