From 8d5014fcf09d1ff675ca730d3a049cccd1af7e9b Mon Sep 17 00:00:00 2001 From: brain Date: Sat, 10 Apr 2004 12:45:46 +0000 Subject: [PATCH] Addition of 'T' datagram (TS topic set) and F/Y datagrams (start/end of netburst) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@489 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/InspIRCd.layout | 8 ++++---- src/inspircd.cpp | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/InspIRCd.layout b/src/InspIRCd.layout index 158e7b27d..47508ccca 100644 --- a/src/InspIRCd.layout +++ b/src/InspIRCd.layout @@ -13,9 +13,9 @@ LeftChar=1 [Editor_1] Open=1 Top=1 -CursorCol=12 -CursorRow=5153 -TopLine=5121 +CursorCol=2 +CursorRow=5531 +TopLine=5477 LeftChar=1 [Editor_2] @@ -143,7 +143,7 @@ Open=1 Top=0 CursorCol=83 CursorRow=110 -TopLine=60 +TopLine=9 LeftChar=1 [Editor_18] diff --git a/src/inspircd.cpp b/src/inspircd.cpp index d64b016e0..d4ed5042b 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -76,6 +76,7 @@ int WHOWAS_MAX = 100; // default 100 people maximum in the WHOWAS list int DieDelay = 5; time_t startup_time = time(NULL); int NetBufferSize = 10240; // NetBufferSize used as the buffer size for all read() ops +time_t nb_start = time(NULL); extern vector modules; std::vector module_names; @@ -5332,8 +5333,8 @@ void DoSync(serverrec* serv, char* udp_host,int udp_port, long MyKey) if (strcmp(c->second->topic,"")) { snprintf(data,MAXBUF,"T %d %s %s :%s",c->second->topicset,c->second->setby,c->second->name,c->second->topic); + serv->SendPacket(data,udp_host,udp_port,MyKey); } - serv->SendPacket(data,udp_host,udp_port,MyKey); // send current banlist for (BanList::iterator b = c->second->bans.begin(); b != c->second->bans.end(); b++) @@ -5347,6 +5348,25 @@ void DoSync(serverrec* serv, char* udp_host,int udp_port, long MyKey) serv->SendPacket(data,udp_host,udp_port,MyKey); } +void handle_T(char token,char* params,serverrec* source,serverrec* reply, char* udp_host,int udp_port) +{ + char* tm = strtok(params," "); + char* setnick = strtok(NULL," "); + char* channel = strtok(NULL," :"); + char* topic = strtok(NULL,"\r\n"); + topic++; + time_t TS = atoi(tm); + chanrec* c = FindChan(channel); + if (c) + { + if (TS <= c->age) + { + WriteChannelLocal(c,NULL,"TOPIC %s :%s",c->name,topic); + strncpy(c->topic,topic,MAXTOPIC); + } + } +} + void handle_M(char token,char* params,serverrec* source,serverrec* reply, char* udp_host,int udp_port) { char* pars[128]; @@ -5416,6 +5436,12 @@ void handle_N(char token,char* params,serverrec* source,serverrec* reply, char* clientlist[nick]->idle_lastmsg = time(NULL); // this is unrealiable and wont actually be used locally } +void handle_F(char token,char* params,serverrec* source,serverrec* reply, char* udp_host,int udp_port) +{ + long tdiff = time(NULL) - atoi(params); + WriteOpers("TS split for %s -> %s: %d",source->name,reply->name,tdiff); +} + void handle_J(char token,char* params,serverrec* source,serverrec* reply, char* udp_host,int udp_port) { // IMPORTANT NOTE @@ -5475,6 +5501,8 @@ void process_restricted_commands(char token,char* params,serverrec* source,serve // Y // start netburst case 'Y': + nb_start = time(NULL); + WriteOpers("Server %s is starting netburst.",source->name); break; // N : // introduce remote client @@ -5486,9 +5514,10 @@ void process_restricted_commands(char token,char* params,serverrec* source,serve case 'J': handle_J(token,params,source,reply,udp_host,udp_port); break; - // T + // T : // change channel topic (netburst only) case 'T': + handle_T(token,params,source,reply,udp_host,udp_port); break; // M [MODE-PARAMETERS] // Set modes on an object @@ -5498,6 +5527,8 @@ void process_restricted_commands(char token,char* params,serverrec* source,serve // F // end netburst case 'F': + WriteOpers("Server %s has completed netburst. (%d secs)",source->name,time(NULL)-nb_start); + handle_F(token,params,source,reply,udp_host,udp_port); break; // anything else default: -- 2.39.2