diff --git a/src/frontend/store.c b/src/frontend/store.c
index 5f3ce846ec16865790874fb90018a3f4c5916ea3..ff563165cb1bf7ebda020c1ac2f630e13990e571 100644 (file)
--- a/src/frontend/store.c
+++ b/src/frontend/store.c
"STORE: Invalid command length %zu", len);
return -1;
}
- buf += n; len -= n;
switch (type) {
case SDB_HOST:
}
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 "