X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Fui.c;h=51528086dc6ec6d18bfe6558cf2f3645e2291722;hb=76d9900b9ea64858b6754985fb161188a423feae;hp=96c1eb7ebc2c475376888cf3672e7f2fbf7856d0;hpb=a3a4a3a7ae1030512acfd849bb184b9d2264c24d;p=doldaconnect.git diff --git a/daemon/ui.c b/daemon/ui.c index 96c1eb7..5152808 100644 --- a/daemon/ui.c +++ b/daemon/ui.c @@ -641,6 +641,11 @@ static void cmd_disconnect(struct socket *sk, struct uidata *data, int argc, wch sq(sk, 0, L"510", L"No such node", NULL); return; } + if(wpfind(fn->args, L"locked") && !((data->userinfo->perms & PERM_ADMIN) || !wcscmp(data->userinfo->name, fn->owner))) + { + sq(sk, 0, L"502", L"This node is locked and you are neither administrator nor its owner", NULL); + return; + } killfnetnode(fn); unlinkfnetnode(fn); } @@ -686,7 +691,7 @@ static void cmd_lspeers(struct socket *sk, struct uidata *data, int argc, wchar_ } else { for(peer = fn->peers; peer != NULL; peer = peer->next) { - sq(sk, 2 | ((peer->next != NULL)?1:0), L"200", peer->id, peer->nick, NULL); + sq(sk, 2 | ((peer->next != NULL)?1:0), L"200", L"%%s", peer->id, L"%%s", peer->nick, NULL); for(i = 0; i < peer->dinum; i++) { if(peer->peerdi[i].datum->datatype == FNPD_INT) @@ -699,7 +704,7 @@ static void cmd_lspeers(struct socket *sk, struct uidata *data, int argc, wchar_ sq(sk, 2, peer->peerdi[i].datum->id, buf, NULL); } if((peer->peerdi[i].datum->datatype == FNPD_STR) && (peer->peerdi[i].data.str != NULL)) - sq(sk, 2, peer->peerdi[i].datum->id, peer->peerdi[i].data.str, NULL); + sq(sk, 2, peer->peerdi[i].datum->id, L"%%s", peer->peerdi[i].data.str, NULL); } sq(sk, 0, NULL); }