From 8f89dc58d855185ca87414fa1882bb77581f5241 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 11 Nov 2009 22:01:27 +0000 Subject: [PATCH] - client: fix yesterday's checkin to remove restrictions on GUI RPC request elements. You can now use either or for empty request messages. - GUI RPC client library: fix double-free bug. it's not clear how this ever worked. svn path=/trunk/boinc/; revision=19543 --- checkin_notes | 16 ++++- client/gui_rpc_server_ops.cpp | 125 ++++++++++++++++++---------------- lib/coproc.cpp | 2 + lib/gui_rpc_client.cpp | 1 + 4 files changed, 83 insertions(+), 61 deletions(-) diff --git a/checkin_notes b/checkin_notes index 75348481bf..5e3a46cc5f 100644 --- a/checkin_notes +++ b/checkin_notes @@ -9060,7 +9060,7 @@ David 10 Nov 2009 client/ cs_account.cpp -David 10 Nov 2009 +David 11 Nov 2009 - unix build: fix "out of tree" build (what's that?) from Oliver Bock @@ -9090,3 +9090,17 @@ Rom 11 Nov 2009 coproc.cpp win_build/ *.vcproj + +David 11 Nov 2009 + - client: fix yesterday's checkin to remove restrictions + on GUI RPC request elements. + You can now use either or + for empty request messages. + - GUI RPC client library: fix double-free bug. + it's not clear how this ever worked. + + client + gui_rpc_server_ops.cpp + lib/ + coproc.cpp + gui_rpc_client.cpp diff --git a/client/gui_rpc_server_ops.cpp b/client/gui_rpc_server_ops.cpp index b02e9b0e92..0bc71e2ed8 100644 --- a/client/gui_rpc_server_ops.cpp +++ b/client/gui_rpc_server_ops.cpp @@ -1057,6 +1057,11 @@ static void handle_set_cc_config(char* buf, MIOFILE& fout) { ); } +// Some of the RPCs have empty-element request messages. +// We accept both and +// +#define match_req(buf, tag) (match_tag(buf, "<" tag ">") || match_tag(buf, "<" tag "/>")) + int GUI_RPC_CONN::handle_rpc() { char request_msg[4096]; int n, retval=0; @@ -1088,14 +1093,14 @@ int GUI_RPC_CONN::handle_rpc() { // - if we get an unexpected auth1 or auth2, disconnect mf.printf("\n"); - if (match_tag(request_msg, "\n"); gstate.write_tasks_gui(mf, active_only); mf.printf("\n"); - } else if (match_tag(request_msg, "\n"); gstate.read_global_prefs(); gstate.request_schedule_cpus("Preferences override"); gstate.request_work_fetch("Preferences override"); - } else if (match_tag(request_msg, "\n"); read_config_file(false); msg_printf(0, MSG_INFO, "Re-read config file"); @@ -1225,7 +1230,7 @@ int GUI_RPC_CONN::handle_rpc() { gstate.set_ncpus(); gstate.request_schedule_cpus("Core client configuration"); gstate.request_work_fetch("Core client configuration"); - } else if (match_tag(request_msg, "