diff options
author | sr | 2013-01-03 20:43:40 +0100 |
---|---|---|
committer | sr | 2013-01-03 20:43:40 +0100 |
commit | 6c2aa01b41cd89b13196772e5b1563c7bfe18c0d (patch) | |
tree | 6fb7cf2adb9dae3c740ad6964887e39f1e133bd2 /src/server/rpc.c | |
parent | [SERVER] Fix RPC_ADD_IMG (diff) | |
download | dnbd3-6c2aa01b41cd89b13196772e5b1563c7bfe18c0d.tar.gz dnbd3-6c2aa01b41cd89b13196772e5b1563c7bfe18c0d.tar.xz dnbd3-6c2aa01b41cd89b13196772e5b1563c7bfe18c0d.zip |
[SERVER] pthread_spin_lock != pthread_spin_unlock
[SERVER] Implement RPC_DEL_IMG
Diffstat (limited to 'src/server/rpc.c')
-rw-r--r-- | src/server/rpc.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/server/rpc.c b/src/server/rpc.c index 1875cde..3bd4a07 100644 --- a/src/server/rpc.c +++ b/src/server/rpc.c @@ -484,10 +484,10 @@ static int rpc_receive(int client_sock) ++count; dnbd3_image_t image; memset(&image, 0, sizeof(dnbd3_image_t)); - image.config_group = (char *)XML_GETPROP(cur, "name"); - char *rid_str = (char *)XML_GETPROP(cur, "rid"); - image.file = (char *)XML_GETPROP(cur, "file"); - image.cache_file = (char *)XML_GETPROP(cur, "cache"); + image.config_group = XML_GETPROP(cur, "name"); + char *rid_str = XML_GETPROP(cur, "rid"); + image.file = XML_GETPROP(cur, "file"); + image.cache_file = XML_GETPROP(cur, "cache"); if (image.file && !file_exists(image.file)) { printf("Image File: %s\n", image.file); @@ -503,9 +503,19 @@ static int rpc_receive(int client_sock) { image.rid = atoi(rid_str); if (cmd == RPC_ADD_IMG) + { rpc_error = dnbd3_add_image(&image); + } else + { + char *soft = XML_GETPROP(cur, "softdelete"); + char *hard = XML_GETPROP(cur, "harddelete"); + image.delete_soft = time(NULL); + image.delete_hard = time(NULL); + if (soft) image.delete_soft += atoi(soft); + if (hard) image.delete_hard += atoi(hard); rpc_error = dnbd3_del_image(&image); + } } else rpc_error = ERROR_MISSING_ARGUMENT; |