Skip to content

Commit 920a90c

Browse files
committed
msghandler.d: give remaining privileges if too large value
Ideally we want to make this an atomic database operation, but this is a start.
1 parent 28a63e1 commit 920a90c

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/server/msghandler.d

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import soulfind.server.server : Server;
1515
import soulfind.server.user : User;
1616
import std.array : array;
1717
import std.conv : text;
18-
import std.datetime : Clock, SysTime;
18+
import std.datetime : Clock, seconds, SysTime;
1919
import std.socket : InternetAddress;
2020
import std.stdio : writeln;
2121

@@ -562,18 +562,20 @@ final class MessageHandler
562562
if (!msg.is_valid)
563563
break;
564564

565-
auto target_user = server.get_user(msg.username);
566-
if (target_user is null)
567-
break;
568-
569-
const duration = msg.duration;
570-
if (duration.total!"days" < 1 || duration > user.privileges)
565+
const duration = (
566+
msg.duration < user.privileges
567+
? msg.duration : user.privileges
568+
);
569+
if (duration == 0.seconds)
571570
break;
572571

572+
server.db.remove_user_privileges(user.username, duration);
573573
server.db.add_user_privileges(msg.username, duration);
574-
target_user.refresh_privileges();
575574

576-
server.db.remove_user_privileges(user.username, duration);
575+
auto target_user = server.get_user(msg.username);
576+
if (target_user !is null)
577+
target_user.refresh_privileges();
578+
577579
user.refresh_privileges();
578580
break;
579581

0 commit comments

Comments
 (0)