X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Ffrontend%2Fconnection.c;h=117c6ae18adab025f667fab709c3997b7b0618e6;hp=64f2cb2000322dcb83557c932282e0125a797ca2;hb=f813acbff144fa649d152838957c321894c1cbba;hpb=5637e2d8b66c64cb4ce2e205c0f6912cd8f9eb54 diff --git a/src/frontend/connection.c b/src/frontend/connection.c index 64f2cb2..117c6ae 100644 --- a/src/frontend/connection.c +++ b/src/frontend/connection.c @@ -284,6 +284,7 @@ command_handle(sdb_conn_t *conn) status = sdb_connection_ping(conn); else if (conn->cmd == SDB_CONNECTION_STARTUP) status = sdb_fe_session_start(conn); + else if (conn->cmd == SDB_CONNECTION_QUERY) status = sdb_fe_query(conn); else if (conn->cmd == SDB_CONNECTION_FETCH) @@ -294,6 +295,10 @@ command_handle(sdb_conn_t *conn) status = sdb_fe_lookup(conn); else if (conn->cmd == SDB_CONNECTION_STORE) status = sdb_fe_store(conn); + + else if (conn->cmd == SDB_CONNECTION_SERVER_VERSION) + status = sdb_connection_server_version(conn); + else { sdb_log(SDB_LOG_WARNING, "frontend: Ignoring invalid command %#x", conn->cmd); @@ -532,5 +537,20 @@ sdb_connection_ping(sdb_conn_t *conn) return 0; } /* sdb_connection_ping */ +int +sdb_connection_server_version(sdb_conn_t *conn) +{ + char msg[sizeof(uint32_t) + strlen(SDB_VERSION_EXTRA) + 1]; + + if ((! conn) || (conn->cmd != SDB_CONNECTION_SERVER_VERSION)) + return -1; + + sdb_proto_marshal_int32(msg, sizeof(msg), (uint32_t)SDB_VERSION); + strncpy(msg + sizeof(uint32_t), SDB_VERSION_EXTRA, + sizeof(msg) - sizeof(uint32_t)); + sdb_connection_send(conn, SDB_CONNECTION_OK, (uint32_t)sizeof(msg), msg); + return 0; +} /* sdb_connection_server_version */ + /* vim: set tw=78 sw=4 ts=4 noexpandtab : */