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, "