[PATCH] nm-online: Return from quit_if_connected after setting retval



c5f17a97ea8e4cee85c93ee9cfa04057f83e13ab changed nm-online to determine
the status asynchronously, however this introduced a regression with
"nm-online -x -q" when there is connectivity.

                if (   state == NM_STATE_CONNECTED_LOCAL
                    || state == NM_STATE_CONNECTED_SITE
                    || state == NM_STATE_CONNECTED_GLOBAL) {
                        data->retval = 0;
                        g_main_loop_quit (data->loop);
                }
        }
        if (data->exit_no_nm && (state != NM_STATE_CONNECTING)) {
                data->retval = 1;
                g_main_loop_quit (data->loop);
        }

After setting data->retval = 0 in the "state is connected" branch, the
function falls through to the "exit_no_nm and !connecting" branch,
overwriting data->retval.  This causes "nm-online -x -q" to incorrectly
report an offline state.

Adding an explicit "return;" after any state where data->retval is set
ensures that the value isn't overwritten before main() uses it.
---
 clients/nm-online.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/clients/nm-online.c b/clients/nm-online.c
index 60ea41cba..c1df195aa 100644
--- a/clients/nm-online.c
+++ b/clients/nm-online.c
@@ -66,11 +66,13 @@ quit_if_connected (OnlineData *data)
                if (data->exit_no_nm) {
                        data->retval = 1;
                        g_main_loop_quit (data->loop);
+                       return;
                }
        } else if (data->wait_startup) {
                if (!nm_client_get_startup (data->client)) {
                        data->retval = 0;
                        g_main_loop_quit (data->loop);
+                       return;
                }
        } else {
                if (   state == NM_STATE_CONNECTED_LOCAL
@@ -78,11 +80,13 @@ quit_if_connected (OnlineData *data)
                    || state == NM_STATE_CONNECTED_GLOBAL) {
                        data->retval = 0;
                        g_main_loop_quit (data->loop);
+                       return;
                }
        }
        if (data->exit_no_nm && (state != NM_STATE_CONNECTING)) {
                data->retval = 1;
                g_main_loop_quit (data->loop);
+               return;
        }
 }
 
-- 
2.11.0



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]