summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/InspIRCd.layout8
-rw-r--r--src/inspircd.cpp35
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<Module*> modules;
std::vector<std::string> 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 <TS>
// start netburst
case 'Y':
+ nb_start = time(NULL);
+ WriteOpers("Server %s is starting netburst.",source->name);
break;
// N <TS> <NICK> <HOST> <DHOST> <IDENT> <MODES> <SERVER> :<GECOS>
// 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 <TS> <CHANNEL> <TOPICSETTER> <TOPIC>
+ // T <TS> <CHANNEL> <TOPICSETTER> :<TOPIC>
// change channel topic (netburst only)
case 'T':
+ handle_T(token,params,source,reply,udp_host,udp_port);
break;
// M <TS> <TARGET> <MODES> [MODE-PARAMETERS]
// Set modes on an object
@@ -5498,6 +5527,8 @@ void process_restricted_commands(char token,char* params,serverrec* source,serve
// F <TS>
// 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: