diff --git a/checkin_notes b/checkin_notes index dfcb07ef06..1924c9db04 100755 --- a/checkin_notes +++ b/checkin_notes @@ -14184,3 +14184,13 @@ David 2 Dec 2005 lib/ shmem.C + +Rom 4 Dec 2005 + - Bug Fix: Verify we are actually talking with a BOINC core client + before declaring a connection successful. + + client/ + gui_rpc_server_ops.C + lib/ + gui_rpc_client.C, .h + gui_rpc_client_ops.C diff --git a/client/gui_rpc_server_ops.C b/client/gui_rpc_server_ops.C index c8b2c0d3ef..ce5b0f56ef 100644 --- a/client/gui_rpc_server_ops.C +++ b/client/gui_rpc_server_ops.C @@ -74,6 +74,12 @@ void GUI_RPC_CONN::handle_auth2(char* buf, MIOFILE& fout) { auth_needed = false; } +static void handle_get_client_time(MIOFILE& fout) { + fout.printf("\n"); + fout.printf("\n", dtime()); + fout.printf("\n"); +} + static void handle_get_project_status(MIOFILE& fout) { unsigned int i; fout.printf("\n"); @@ -743,6 +749,8 @@ int GUI_RPC_CONN::handle_rpc() { MFILE m; char* p; int major_version; + int minor_version; + int release; mf.init_mfile(&m); SCOPE_MSG_LOG scope_messages(log_messages, CLIENT_MSG_LOG::DEBUG_GUIRPC); @@ -764,6 +772,8 @@ int GUI_RPC_CONN::handle_rpc() { // get client version. not used for now // parse_int(request_msg, "", major_version); + parse_int(request_msg, "", minor_version); + parse_int(request_msg, "", release); mf.printf( "\n" @@ -784,6 +794,8 @@ int GUI_RPC_CONN::handle_rpc() { // operations that require authentication for non-local clients start here + } else if (match_tag(request_msg, "\n"); + if (retval) return retval; + + while (rpc.fin.fgets(buf, 256)) { + if (match_tag(buf, "")) break; + else if (parse_int(buf, "", client_major_version)) continue; + else if (parse_int(buf, "", client_minor_version)) continue; + else if (parse_int(buf, "", client_release)) continue; + else if (parse_double(buf, "