diff --git a/client/current_version.cpp b/client/current_version.cpp index fc13e65a25..48a1338c01 100644 --- a/client/current_version.cpp +++ b/client/current_version.cpp @@ -320,13 +320,19 @@ void newer_version_startup_check() { #define NEW_VERSION_CHECK_PERIOD (14*86400) +// get client version info from the BOINC server if we haven't done so recently. +// Called periodically from the main loop. +// Also called with force=true for the get_newer_version() GUI RPC +// void CLIENT_STATE::new_version_check(bool force) { - if (force || (new_version_check_time == 0) || - (now - new_version_check_time > NEW_VERSION_CHECK_PERIOD)) { - // get_current_version_op.handle_reply() - // updates new_version_check_time - // - get_current_version_op.do_rpc(); - } + if (force + || (new_version_check_time == 0) + || (now - new_version_check_time > NEW_VERSION_CHECK_PERIOD) + ) { + // get_current_version_op.handle_reply() + // updates new_version_check_time + // + get_current_version_op.do_rpc(); + } } diff --git a/client/gui_rpc_server_ops.cpp b/client/gui_rpc_server_ops.cpp index eafcc9c1ce..1dc4cae04e 100644 --- a/client/gui_rpc_server_ops.cpp +++ b/client/gui_rpc_server_ops.cpp @@ -1089,7 +1089,14 @@ static void handle_acct_mgr_rpc_poll(GUI_RPC_CONN& grc) { static void handle_get_newer_version(GUI_RPC_CONN& grc) { gstate.new_version_check(true); - + // this initiates an RPC to get version info. + // Wait for it to finish. + // + while (gstate.get_current_version_op.gui_http->gui_http_state != HTTP_STATE_IDLE) { + if (!gstate.poll_slow_events()) { + gstate.do_io_or_sleep(1.0); + } + } grc.mfout.printf( "%s\n" "%s\n",