X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fgline.c;h=bb169ab1cadca42875d0f6c5ddf54186c0832cb0;hb=HEAD;hp=a1cb2504ea81e790e2e5c509dc54ab38d349207c;hpb=2e67ca10af3665e1027a236fd0f7055a1b63c5ff;p=srvx.git diff --git a/src/gline.c b/src/gline.c index a1cb250..bb169ab 100644 --- a/src/gline.c +++ b/src/gline.c @@ -52,7 +52,7 @@ static int gline_comparator(const void *a, const void *b) { const struct gline *ga=a, *gb=b; - return ga->expires - gb->expires; + return ga->lifetime - gb->lifetime; } static void @@ -127,20 +127,16 @@ gline_add(const char *issuer, const char *target, unsigned long duration, const heap_remove_pred(gline_heap, gline_equal_p, ent); if (ent->issued > lastmod) ent->issued = lastmod; - if (ent->lastmod < lastmod) + if (ent->lastmod < lastmod) { ent->lastmod = lastmod; - if (ent->expires != expires) - ent->expires = expires; + ent->expires = expires; + if (strcmp(ent->reason, reason)) { + free(ent->reason); + ent->reason = strdup(reason); + } + } if (ent->lifetime < lifetime) ent->lifetime = lifetime; - if (strcmp(ent->issuer, issuer)) { - free(ent->issuer); - ent->issuer = strdup(issuer); - } - if (strcmp(ent->reason, reason)) { - free(ent->reason); - ent->reason = strdup(reason); - } } else { ent = malloc(sizeof(*ent)); ent->issued = issued;