summaryrefslogtreecommitdiff
path: root/source4/lib/messaging/messaging.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/lib/messaging/messaging.c')
-rw-r--r--source4/lib/messaging/messaging.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/source4/lib/messaging/messaging.c b/source4/lib/messaging/messaging.c
index 5def9d1f734..dde796f8d17 100644
--- a/source4/lib/messaging/messaging.c
+++ b/source4/lib/messaging/messaging.c
@@ -930,21 +930,22 @@ NTSTATUS irpc_add_name(struct imessaging_context *msg_ctx, const char *name)
int ret;
NTSTATUS status = NT_STATUS_OK;
+ msg_ctx->names = str_list_add(msg_ctx->names, name);
+ if (msg_ctx->names == NULL) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ talloc_steal(msg_ctx, msg_ctx->names);
+
key = string_term_tdb_data(name);
data = (TDB_DATA) { .dptr = (uint8_t *)&pid, .dsize = sizeof(pid) };
ret = tdb_append(t, key, data);
if (ret != 0) {
enum TDB_ERROR err = tdb_error(t);
+ str_list_remove(msg_ctx->names, name);
return map_nt_error_from_tdb(err);
}
- msg_ctx->names = str_list_add(msg_ctx->names, name);
- if (msg_ctx->names == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
- talloc_steal(msg_ctx, msg_ctx->names);
-
return status;
}