Added reset command for downloads.
[doldaconnect.git] / daemon / ui.c
index af5bd99..bdff17b 100644 (file)
@@ -361,7 +361,7 @@ static void cmd_connect(struct socket *sk, struct uidata *data, int argc, wchar_
            return;
        }
     }
-    sq(sk, 0, L"201", L"1", L"1", L"Dolda Connect daemon v" VERSION, NULL);
+    sq(sk, 0, L"201", L"1", L"2", L"Dolda Connect daemon v" VERSION, NULL);
 }
 
 static void cmd_notfound(struct socket *sk, struct uidata *data, int argc, wchar_t **argv)
@@ -839,6 +839,26 @@ static void cmd_cancel(struct socket *sk, struct uidata *data, int argc, wchar_t
     sq(sk, 0, L"200", L"Transfer cancelled", NULL);
 }
 
+static void cmd_reset(struct socket *sk, struct uidata *data, int argc, wchar_t **argv)
+{
+    struct transfer *transfer;
+    
+    haveargs(2);
+    havepriv(PERM_TRANS);
+    if((transfer = findtransfer(wcstol(argv[1], NULL, 0))) == NULL)
+    {
+       sq(sk, 0, L"512", L"No such transfer", NULL);
+       return;
+    }
+    if(transfer->dir == TRNSD_UP)
+    {
+       sq(sk, 0, L"512", L"Only applicable to downloads", NULL);
+       return;
+    }
+    resettransfer(transfer);
+    sq(sk, 0, L"200", L"Transfer reset", NULL);
+}
+
 static void cmd_notify(struct socket *sk, struct uidata *data, int argc, wchar_t **argv)
 {
     int i, val;
@@ -1143,9 +1163,9 @@ static void cmd_filtercmd(struct socket *sk, struct uidata *data, int argc, wcha
        sq(sk, 0, L"505", L"System error - Could not fork session", "Internal error", NULL);
        return;
     }
-    filtercmd = findfile(icswcstombs(confgetstr("ui", "filtercmd"), NULL, NULL), NULL, 0);
+    filtercmd = findfile("dc-filtercmd", pwent->pw_dir, 0);
     if(filtercmd == NULL)
-       filtercmd = findfile("dc-filtercmd", pwent->pw_dir, 0);
+       filtercmd = findfile(icswcstombs(confgetstr("ui", "filtercmd"), NULL, NULL), NULL, 0);
     if(filtercmd == NULL)
     {
        flog(LOG_WARNING, "could not find filtercmd executable for user %s", pwent->pw_name);
@@ -1344,6 +1364,7 @@ static struct command commands[] =
     {L"download", cmd_download},
     {L"lstrans", cmd_lstrans},
     {L"cancel", cmd_cancel},
+    {L"reset", cmd_reset},
     {L"notify", cmd_notify},
     {L"sendchat", cmd_sendchat},
     {L"search", cmd_search},