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)
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;
sq(sk, 0, L"200", L"%i", time(NULL) - starttime, NULL);
}
+static void cmd_hup(struct socket *sk, struct uidata *data, int argc, wchar_t **argv)
+{
+ extern volatile int reinit;
+
+ havepriv(PERM_ADMIN);
+ flog(LOG_NOTICE, "UI HUP request from %ls", data->username);
+ reinit = 1;
+ sq(sk, 0, L"200", L"Will reinit", NULL);
+}
+
#undef haveargs
#undef havepriv
{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},
{L"register", cmd_register},
{L"sendmsg", cmd_sendmsg},
{L"uptime", cmd_uptime},
+ {L"hup", cmd_hup},
{NULL, NULL}
};