X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Ffrontend%2Fconnection.c;h=bb0f494f2d432c849e4c60be174b3cfec3f786ab;hb=a58f4c5ace18595f3cdaf731078028d747d5d9bd;hp=a7414017284a558cfc0000dfdd8ab5d80d3d1c5c;hpb=51069603a7b8d90e222508cbd67dcc5f231289ad;p=sysdb.git diff --git a/src/frontend/connection.c b/src/frontend/connection.c index a741401..bb0f494 100644 --- a/src/frontend/connection.c +++ b/src/frontend/connection.c @@ -222,6 +222,10 @@ static int connection_log(int prio, const char *msg, sdb_object_t __attribute__((unused)) *user_data) { + uint32_t len = (uint32_t)sizeof(uint32_t) + (uint32_t)strlen(msg); + uint32_t p = htonl((uint32_t)prio); + char tmp[len + 1]; + sdb_conn_t *conn; conn = sdb_conn_get_ctx(); @@ -234,27 +238,14 @@ connection_log(int prio, const char *msg, if (prio >= SDB_LOG_DEBUG) return 0; - /* TODO: Use CONNECTION_LOG_? */ - if (sdb_connection_send(conn, CONNECTION_LOG, - (uint32_t)strlen(msg), msg) < 0) + memcpy(tmp, &p, sizeof(p)); + strcpy(tmp + sizeof(p), msg); + + if (sdb_connection_send(conn, CONNECTION_LOG, len, tmp) < 0) return -1; return 0; } /* connection_log */ -static uint32_t -connection_get_int32(sdb_conn_t *conn, size_t offset) -{ - const char *data; - uint32_t n; - - assert(conn && (sdb_strbuf_len(conn->buf) >= offset + sizeof(uint32_t))); - - data = sdb_strbuf_string(conn->buf); - memcpy(&n, data + offset, sizeof(n)); - n = ntohl(n); - return n; -} /* connection_get_int32 */ - static int command_handle(sdb_conn_t *conn) { @@ -285,10 +276,13 @@ command_handle(sdb_conn_t *conn) status = -1; } - if (status) + if (status) { + if (! sdb_strbuf_len(conn->errbuf)) + sdb_strbuf_sprintf(conn->errbuf, "Failed to execute command"); sdb_connection_send(conn, CONNECTION_ERROR, (uint32_t)sdb_strbuf_len(conn->errbuf), sdb_strbuf_string(conn->errbuf)); + } return status; } /* command_handle */ @@ -306,8 +300,8 @@ command_init(sdb_conn_t *conn) /* reset */ sdb_strbuf_clear(conn->errbuf); - conn->cmd = connection_get_int32(conn, 0); - conn->cmd_len = connection_get_int32(conn, sizeof(uint32_t)); + conn->cmd = sdb_proto_get_int(conn->buf, 0); + conn->cmd_len = sdb_proto_get_int(conn->buf, sizeof(uint32_t)); sdb_strbuf_skip(conn->buf, 0, 2 * sizeof(uint32_t));