]> jfr.im git - irc/quakenet/newserv.git/commitdiff
serverlist/server: Use link TS from the SERVER message.
authorGunnar Beutner <redacted>
Sat, 3 Aug 2013 09:20:09 +0000 (11:20 +0200)
committerGunnar Beutner <redacted>
Sat, 3 Aug 2013 09:20:09 +0000 (11:20 +0200)
server/server.c
server/server.h
serverlist/serverlist.c

index 4d818e98049dcf000ebc731a1ed60bdbf2717d03..60f4931a12e5e41d7f9f95cfc3ba09a369d81bcd 100644 (file)
@@ -42,6 +42,7 @@ void _init() {
   serverlist[numerictolong(mynumeric->content,2)].name=getsstring(myserver->content,HOSTLEN);
   serverlist[numerictolong(mynumeric->content,2)].description=getcopyconfigitem("irc","serverdescription","newserv",100);
   serverlist[numerictolong(mynumeric->content,2)].maxusernum=MAXLOCALUSER;
+  serverlist[numerictolong(mynumeric->content,2)].ts=getnettime();
   serverlist[numerictolong(mynumeric->content,2)].linkstate=LS_LINKED;
   /* remember to update the mode line in irc/irc.c */
   serverlist[numerictolong(mynumeric->content,2)].flags=SMODE_SERVICE|SMODE_IPV6|SMODE_HUB|SMODE_OPERNAME;
@@ -85,6 +86,7 @@ int handleservermsg(void *source, int cargc, char **cargv) {
   serverlist[servernum].name=getsstring(cargv[0],HOSTLEN);
   serverlist[servernum].description=getsstring(cargv[cargc-1],REALLEN);
   serverlist[servernum].maxusernum=numerictolong(cargv[5]+2,3);
+  serverlist[servernum].ts=strtoull(cargv[3], NULL, 10);
   serverlist[servernum].marker=0;
   setflags(&serverlist[servernum].flags,SMODE_ALL,cargv[6],smodeflags,REJECT_NONE);
 
index 1a6f6a6fca09b49bb55bb851f150b819ac311ac1..7d5b45bac6e8b34626fe760582e50f573d07aee6 100644 (file)
@@ -6,6 +6,7 @@
 #include "../lib/sstring.h"
 #include "../irc/irc_config.h"
 #include "../lib/flags.h"
+#include <time.h>
 
 #define LS_INVALID   0   /* No server here */
 #define LS_LINKED    1   /* Server fully linked */
@@ -34,6 +35,7 @@ typedef struct {
   short      parent;
   short      linkstate;
   int        maxusernum;
+  time_t     ts;
   flag_t     flags;
   unsigned int marker;
 } server;
index 8e040f482b92ca1ec97f5ebd8ad978535ee33f86..b2a624a9c55d00010fad85b8f4a1efa9db6a52f2 100644 (file)
@@ -39,7 +39,6 @@ const flag servertypeflags[] = {
 
 struct {
   int used;
-  time_t ts;
   int lag;
   sstring *version1;
   sstring *version2;
@@ -87,7 +86,6 @@ void _init(void) {
     else
       serverinfo[i].used = 0;
 
-    serverinfo[i].ts = getnettime();
     serverinfo[i].lag = -1;
     serverinfo[i].version1 = NULL;
     serverinfo[i].version2 = NULL;
@@ -155,7 +153,7 @@ int cmd_serverlist(void *sender, int cargc, char **cargv) {
       controlreply(np, "%-7d %-30s %5d/%5d/%-5d %-7s %-7s %-20s %-8s %-20s - %s", i, serverlist[i].name->content,
             servercount[i], ucount, serverlist[i].maxusernum,
             printflags(serverlist[i].flags, smodeflags), buf,
-            longtoduration(getnettime() - serverinfo[i].ts, 0),
+            longtoduration(getnettime() - serverlist[i].ts, 0),
             lagstr,
             serverinfo[i].version1 ? serverinfo[i].version1->content : "Unknown",
             serverinfo[i].version2 ? serverinfo[i].version2->content : "Unknown");
@@ -212,7 +210,6 @@ void serverlist_hook_newserver(int hook, void *arg) {
   long num = (long)arg;
 
   serverinfo[num].used = 1;
-  serverinfo[num].ts = getnettime();
   serverinfo[num].version1 = NULL;
   serverinfo[num].version2 = NULL;
   serverinfo[num].type = getservertype(&serverlist[num]);