x-Line synchronization: Don't send negative durations
authorAlexander Barton <alex@barton.de>
Wed, 7 Dec 2016 23:22:05 +0000 (00:22 +0100)
committerAlexander Barton <alex@barton.de>
Wed, 7 Dec 2016 23:22:05 +0000 (00:22 +0100)
src/ngircd/numeric.c

index 82e0cf0..380b907 100644 (file)
@@ -176,6 +176,7 @@ Synchronize_Lists(CLIENT * Client)
        CHANNEL *c;
        struct list_head *head;
        struct list_elem *elem;
+       time_t t;
 
        assert(Client != NULL);
 
@@ -183,9 +184,10 @@ Synchronize_Lists(CLIENT * Client)
        head = Class_GetList(CLASS_GLINE);
        elem = Lists_GetFirst(head);
        while (elem) {
+               t = Lists_GetValidity(elem) - time(NULL);
                if (!IRC_WriteStrClient(Client, "GLINE %s %ld :%s",
                                        Lists_GetMask(elem),
-                                       (long)(Lists_GetValidity(elem) - time(NULL)),
+                                       t > 0 ? (long)t : 0,
                                        Lists_GetReason(elem)))
                        return DISCONNECTED;
                elem = Lists_GetNext(elem);