diff options
-rw-r--r-- | src/server/rpc.c | 16 | ||||
-rw-r--r-- | src/server/saveload.c | 7 |
2 files changed, 17 insertions, 6 deletions
diff --git a/src/server/rpc.c b/src/server/rpc.c index 3bd4a07..2cc688b 100644 --- a/src/server/rpc.c +++ b/src/server/rpc.c @@ -557,20 +557,24 @@ static int rpc_receive(int client_sock) if (cmd == RPC_ADD_NS) { dnbd3_trusted_server_t *server = dnbd3_get_trusted_server(host, TRUE, comment); - if (server) - dnbd3_add_trusted_namespace(server, ns, flags); + if (server && dnbd3_add_trusted_namespace(server, ns, flags)) + rpc_error = ERROR_OK; + else + rpc_error = ERROR_UNSPECIFIED_ERROR; } else { dnbd3_trusted_server_t *server = dnbd3_get_trusted_server(host, FALSE, comment); - if (server) - dnbd3_del_trusted_namespace(server, ns); + if (server && dnbd3_del_trusted_namespace(server, ns)) + rpc_error = ERROR_OK; + else + rpc_error = ERROR_FILE_NOT_FOUND; } } pthread_spin_unlock(&_spinlock); FREE_POINTERLIST; } END_FOR_EACH; - + if (rpc_error == ERROR_OK) dnbd3_save_config(); } else rpc_error = ERROR_INVALID_XML; @@ -579,7 +583,7 @@ static int rpc_receive(int client_sock) default: memlogf("[ERROR] Unknown RPC command: %u", (unsigned int)header.cmd); - rpc_error = htonl(ERROR_UNKNOWN_COMMAND); + rpc_error = ERROR_UNKNOWN_COMMAND; break; } diff --git a/src/server/saveload.c b/src/server/saveload.c index 75ee554..5a6291e 100644 --- a/src/server/saveload.c +++ b/src/server/saveload.c @@ -676,8 +676,15 @@ int dnbd3_del_trusted_namespace(dnbd3_trusted_server_t *server, char *namespace) dnbd3_namespace_t *cmp = iterator->data; if (strcmp(nslow, cmp->name) == 0) { + // TODO: Remove from config file free(cmp->name); + free(cmp); server->namespaces = g_slist_remove(server->namespaces, cmp); + if (server->namespaces == NULL) + { + g_free(server->comment); + free(server); + } return TRUE; } } |