diff --git a/src/frontend/store.c b/src/frontend/store.c
index 7285b349b39be9994b92add89167bb3aaaacb174..3d1a847b00b61f236c2d9d8ae914d7fa847ff3b1 100644 (file)
--- a/src/frontend/store.c
+++ b/src/frontend/store.c
* public API
*/
+/*
+ * TODO: move sdb_fe_store to frontend/query.c and let it build an AST
+ */
+
int
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 "
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 */
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));