summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/InspIRCd.layout6
-rw-r--r--src/inspircd.cpp97
2 files changed, 48 insertions, 55 deletions
diff --git a/src/InspIRCd.layout b/src/InspIRCd.layout
index 77ece5f58..0bc46b2c6 100644
--- a/src/InspIRCd.layout
+++ b/src/InspIRCd.layout
@@ -13,9 +13,9 @@ LeftChar=1
[Editor_1]
Open=1
Top=1
-CursorCol=1
-CursorRow=4021
-TopLine=3955
+CursorCol=12
+CursorRow=5139
+TopLine=5093
LeftChar=1
[Editor_2]
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index 02414ad07..60ae88f61 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -5096,6 +5096,50 @@ void DoSync(serverrec* serv, char* udp_host,int udp_port, long MyKey)
serv->SendPacket(data,udp_host,udp_port,MyKey);
}
+
+void handle_N(char token,char* params,serverrec* source,serverrec* reply, char* udp_host,int udp_port)
+{
+ log(DEBUG,"Sync: Received an 'N' packet, processing");
+ char* tm = strtok(params," ");
+ char* nick = strtok(params," ");
+ char* host = strtok(params," ");
+ char* dhost = strtok(params," ");
+ char* ident = strtok(params," ");
+ char* modes = strtok(params," ");
+ char* server = strtok(params," ");
+ char* gecos = strchr(params,':') + 1;
+ time_t TS = atoi(tm);
+ user_hash::iterator iter = clientlist.find(nick);
+ if (iter != clientlist.end())
+ {
+ // nick collision
+ // TODO: make this work!
+ WriteOpers("Nickname collision: %s@%s != %s@%s",nick,server,iter->second->nick,iter->second->server);
+ return;
+ }
+ clientlist[nick] = new userrec();
+ // remote users have an fd of -1. This is so that our Write abstraction
+ // routines know to route any messages to this record away to whatever server
+ // theyre on.
+ clientlist[nick]->fd = -1;
+ strncpy(clientlist[nick]->nick, nick,NICKMAX);
+ strncpy(clientlist[nick]->host, host,160);
+ strncpy(clientlist[nick]->dhost, dhost,160);
+ strncpy(clientlist[nick]->server, server,256);
+ strncpy(clientlist[nick]->ident, ident,10); // +1 char to compensate for '~'
+ clientlist[nick]->signon = TS;
+ clientlist[nick]->nping = 0; // this is ignored for a remote user anyway.
+ clientlist[nick]->lastping = 1;
+ clientlist[nick]->port = 0; // so is this...
+ clientlist[nick]->registered = 7; // this however we need to set for them to receive messages and appear online
+ clientlist[nick]->idle_lastmsg = time(NULL); // this will have to update as they pm us,
+ // so a user wont need /WHOIS <nick> <server> to find it
+ // but it may be slightly different over the net
+ // (a couple of seconds at most)
+ log(DEBUG,"Sync: Added %s",nick);
+}
+
+
void process_restricted_commands(char token,char* params,serverrec* source,serverrec* reply, char* udp_host,int udp_port)
{
switch(token)
@@ -5107,82 +5151,31 @@ void process_restricted_commands(char token,char* params,serverrec* source,serve
// N <TS> <NICK> <HOST> <DHOST> <IDENT> <MODES> <SERVER> :<GECOS>
// introduce remote client
case 'N':
- {
- printf("Sync: Received an 'N' packet, processing");
- char* tm = strtok(params," ");
- char* nick = strtok(params," ");
- char* host = strtok(params," ");
- char* dhost = strtok(params," ");
- char* ident = strtok(params," ");
- char* modes = strtok(params," ");
- char* server = strtok(params," ");
- char* gecos = strchr(params,':') + 1;
- time_t TS = atoi(tm);
- user_hash::iterator iter = clientlist.find(nick);
- if (iter != clientlist.end())
- {
- // nick collision
- // TODO: make this work!
- WriteOpers("Nickname collision: %s@%s != %s@%s",nick,server,iter->second->nick,iter->second->server);
- return;
- }
- clientlist[nick] = new userrec();
- // remote users have an fd of -1. This is so that our Write abstraction
- // routines know to route any messages to this record away to whatever server
- // theyre on.
- clientlist[nick]->fd = -1;
- strncpy(clientlist[nick]->nick, nick,NICKMAX);
- strncpy(clientlist[nick]->host, host,160);
- strncpy(clientlist[nick]->dhost, dhost,160);
- strncpy(clientlist[nick]->server, server,256);
- strncpy(clientlist[nick]->ident, ident,10); // +1 char to compensate for '~'
- clientlist[nick]->signon = TS;
- clientlist[nick]->nping = 0; // this is ignored for a remote user anyway.
- clientlist[nick]->lastping = 1;
- clientlist[nick]->port = 0; // so is this...
- clientlist[nick]->registered = 7; // this however we need to set for them to receive messages and appear online
- clientlist[nick]->idle_lastmsg = time(NULL); // this will have to update as they pm us,
- // so a user wont need /WHOIS <nick> <server> to find it
- // but it may be slightly different over the net
- // (a couple of seconds at most)
- printf("Sync: Added %s",nick);
- }
+ process_N(token,params,source,reply,udp_host,udp_port);
break;
// J <NICK> :<CHANLIST>
// Join user to channel list, merge channel permissions
case 'J':
- {
- }
break;
// C <CHANNEL> <TS> <TOPICSETTER> :<MODES>
// initialise channel (netburst only)
case 'C':
- {
- }
break;
// T <TS> <CHANNEL> :<TOPIC>
// change channel topic (netburst only)
case 'T':
- {
- }
break;
// M <TS> <TARGET> <MODES> [MODE-PARAMETERS]
// Set modes on an object
case 'M':
- {
- }
break;
// F <TS>
// end netburst
case 'F':
- {
- }
break;
// anything else
default:
- {
WriteOpers("WARNING! Unknown datagram type '%c'",token);
- }
break;
}
}