X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Ffrontend%2Fstore.c;h=6cad8cd312637036af82ef0a763eba7fbfd46c20;hp=5f3ce846ec16865790874fb90018a3f4c5916ea3;hb=db9cb5515675c3adff9d01ac72c7c2cacc5652fa;hpb=af24300b64d721ec7e3be3edee1477d83b135f8b diff --git a/src/frontend/store.c b/src/frontend/store.c index 5f3ce84..6cad8cd 100644 --- a/src/frontend/store.c +++ b/src/frontend/store.c @@ -92,7 +92,6 @@ sdb_fe_store(sdb_conn_t *conn) "STORE: Invalid command length %zu", len); return -1; } - buf += n; len -= n; switch (type) { case SDB_HOST: @@ -125,16 +124,18 @@ sdb_fe_store(sdb_conn_t *conn) } return sdb_fe_store_metric(conn, &metric); } - case SDB_ATTRIBUTE: - { - sdb_proto_attribute_t attr; - if (sdb_proto_unmarshal_attribute(buf, len, &attr) < 0) { - sdb_strbuf_sprintf(conn->errbuf, - "STORE: Failed to unmarshal attribute object"); - return -1; - } - return sdb_fe_store_attribute(conn, &attr); + } + if (type & SDB_ATTRIBUTE) { + sdb_proto_attribute_t attr; + int status; + if (sdb_proto_unmarshal_attribute(buf, len, &attr) < 0) { + sdb_strbuf_sprintf(conn->errbuf, + "STORE: Failed to unmarshal attribute object"); + return -1; } + status = sdb_fe_store_attribute(conn, &attr); + sdb_data_free_datum(&attr.value); + return status; } sdb_log(SDB_LOG_ERR, "frontend: Invalid object type %d for " @@ -161,7 +162,7 @@ sdb_fe_store_service(sdb_conn_t *conn, const sdb_proto_service_t *svc) if ((! conn) || (! svc) || (! svc->hostname) || (! svc->name)) return -1; - snprintf(name, sizeof(name), svc->hostname, svc->name); + snprintf(name, sizeof(name), "%s.%s", svc->hostname, svc->name); return store_reply(conn, SDB_SERVICE, name, sdb_store_service(svc->hostname, svc->name, svc->last_update)); } /* sdb_fe_store_service */ @@ -177,7 +178,7 @@ sdb_fe_store_metric(sdb_conn_t *conn, const sdb_proto_metric_t *metric) store.type = metric->store_type; store.id = metric->store_id; - snprintf(name, sizeof(name), metric->hostname, metric->name); + snprintf(name, sizeof(name), "%s.%s", metric->hostname, metric->name); return store_reply(conn, SDB_METRIC, name, sdb_store_metric(metric->hostname, metric->name, &store, metric->last_update));