summaryrefslogtreecommitdiffstats
path: root/src/server/rpc.c
diff options
context:
space:
mode:
authorsr2013-01-03 20:43:40 +0100
committersr2013-01-03 20:43:40 +0100
commit6c2aa01b41cd89b13196772e5b1563c7bfe18c0d (patch)
tree6fb7cf2adb9dae3c740ad6964887e39f1e133bd2 /src/server/rpc.c
parent[SERVER] Fix RPC_ADD_IMG (diff)
downloaddnbd3-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.c18
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;