1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-05 23:13:12 +02:00

Rip out support for servers lacking SIDs/UIDs.

More cleanups will follow later for this one.
This commit is contained in:
Bram Matthys
2019-10-13 09:24:26 +02:00
parent 930ede1c86
commit 545c2560e6
14 changed files with 54 additions and 179 deletions
-2
View File
@@ -336,7 +336,6 @@ typedef enum ClientStatus {
#define PROTO_VL 0x000040 /* Negotiated VL protocol */
#define PROTO_SJ3 0x000080 /* Negotiated SJ3 protocol */
#define PROTO_VHP 0x000100 /* Send hostnames in NICKv2 even if not sethosted */
#define PROTO_SID 0x000200 /* SID/UID mode */
#define PROTO_TKLEXT 0x000400 /* TKL extension: 10 parameters instead of 8 (3.2RC2) */
#define PROTO_CLK 0x001000 /* Send cloaked host in the NICK command (regardless of +x/-x) */
#define PROTO_MLOCK 0x002000 /* server supports MLOCK */
@@ -512,7 +511,6 @@ typedef enum ClientStatus {
#define SupportTKLEXT(x) (CHECKPROTO(x, PROTO_TKLEXT))
#define SupportTKLEXT2(x) (CHECKPROTO(x, PROTO_TKLEXT2))
#define SupportCLK(x) (CHECKPROTO(x, PROTO_CLK))
#define SupportSID(x) (CHECKPROTO(x, PROTO_SID))
#define SupportMTAGS(x) (CHECKPROTO(x, PROTO_MTAGS))
#define SetUMODE2(x) ((x)->local->proto |= PROTO_UMODE2)
+1 -2
View File
@@ -627,8 +627,7 @@ void exit_client(Client *client, MessageTag *recv_mtags, char *comment)
}
else if (IsUser(client) && !IsKilled(client))
{
sendto_server(client, PROTO_SID, 0, recv_mtags, ":%s QUIT :%s", ID(client), comment);
sendto_server(client, 0, PROTO_SID, recv_mtags, ":%s QUIT :%s", client->name, comment);
sendto_server(client, 0, 0, recv_mtags, ":%s QUIT :%s", ID(client), comment);
}
/* Finally, the client/server itself exits.. */
+1 -7
View File
@@ -249,15 +249,9 @@ void _join_channel(Channel *channel, Client *client, MessageTag *recv_mtags, int
/* old non-SJOINv3 servers */
sendto_server(client, 0, PROTO_SJ3, mtags, ":%s JOIN :%s", client->name, channel->chname);
/* I _know_ that the "@%s " look a bit wierd
with the space and all .. but its to get around
a SJOIN bug --stskeeps */
sendto_server(client, PROTO_SID | PROTO_SJ3, 0, mtags_sjoin, ":%s SJOIN %lld %s :%s%s ",
sendto_server(client, 0, 0, mtags_sjoin, ":%s SJOIN %lld %s :%s%s ",
me.id, (long long)channel->creationtime,
channel->chname, chfl_to_sjoin_symbol(flags), ID(client));
sendto_server(client, PROTO_SJ3, PROTO_SID, mtags_sjoin, ":%s SJOIN %lld %s :%s%s ",
me.name, (long long)channel->creationtime,
channel->chname, chfl_to_sjoin_symbol(flags), client->name);
if (MyUser(client))
{
+1 -3
View File
@@ -314,10 +314,8 @@ CMD_FUNC(cmd_kick)
client->name, channel->chname, who->name, comment);
}
}
sendto_server(client, PROTO_SID, 0, mtags, ":%s KICK %s %s :%s",
sendto_server(client, 0, 0, mtags, ":%s KICK %s %s :%s",
ID(client), channel->chname, ID(who), comment);
sendto_server(client, 0, PROTO_SID, mtags, ":%s KICK %s %s :%s",
client->name, channel->chname, who->name, comment);
free_message_tags(mtags);
if (lp)
{
+2 -4
View File
@@ -230,11 +230,9 @@ CMD_FUNC(cmd_kill)
{
/* Kill from one server to another (we may be src, victim or something in-between) */
/* Broadcast it to other SID and non-SID servers (may be a NOOP, obviously) */
sendto_server(client, PROTO_SID, 0, mtags, ":%s KILL %s :%s!%s",
/* Broadcast it to other servers */
sendto_server(client, 0, 0, mtags, ":%s KILL %s :%s!%s",
client->name, ID(target), inpath, path);
sendto_server(client, 0, PROTO_SID, mtags, ":%s KILL %s :%s!%s",
client->name, target->name, inpath, path);
/* Don't send a QUIT for this */
SetKilled(target);
+13 -33
View File
@@ -236,17 +236,13 @@ void _broadcast_md_client_cmd(Client *except, Client *sender, Client *client, ch
{
if (value)
{
sendto_server(except, PROTO_SID, 0, NULL, ":%s MD %s %s %s :%s",
sendto_server(except, 0, 0, NULL, ":%s MD %s %s %s :%s",
sender->name, "client", ID(client), varname, value);
sendto_server(except, 0, PROTO_SID, NULL, ":%s MD %s %s %s :%s",
sender->name, "client", client->name, varname, value);
}
else
{
sendto_server(except, PROTO_SID, 0, NULL, ":%s MD %s %s %s",
sendto_server(except, 0, 0, NULL, ":%s MD %s %s %s",
sender->name, "client", ID(client), varname);
sendto_server(except, 0, PROTO_SID, NULL, ":%s MD %s %s %s",
sender->name, "client", client->name, varname);
}
}
@@ -264,17 +260,13 @@ void _broadcast_md_member_cmd(Client *except, Client *sender, Channel *channel,
{
if (value)
{
sendto_server(except, PROTO_SID, 0, NULL, ":%s MD %s %s:%s %s :%s",
sendto_server(except, 0, 0, NULL, ":%s MD %s %s:%s %s :%s",
sender->name, "member", channel->chname, ID(client), varname, value);
sendto_server(except, 0, PROTO_SID, NULL, ":%s MD %s %s:%s %s :%s",
sender->name, "member", channel->chname, client->name, varname, value);
}
else
{
sendto_server(except, PROTO_SID, 0, NULL, ":%s MD %s %s:%s %s",
sendto_server(except, 0, 0, NULL, ":%s MD %s %s:%s %s",
sender->name, "member", channel->chname, ID(client), varname);
sendto_server(except, 0, PROTO_SID, NULL, ":%s MD %s %s:%s %s",
sender->name, "member", channel->chname, client->name, varname);
}
}
@@ -282,17 +274,13 @@ void _broadcast_md_membership_cmd(Client *except, Client *sender, Client *client
{
if (value)
{
sendto_server(except, PROTO_SID, 0, NULL, ":%s MD %s %s:%s %s :%s",
sendto_server(except, 0, 0, NULL, ":%s MD %s %s:%s %s :%s",
sender->name, "membership", ID(client), channel->chname, varname, value);
sendto_server(except, 0, PROTO_SID, NULL, ":%s MD %s %s:%s %s :%s",
sender->name, "membership", client->name, channel->chname, varname, value);
}
else
{
sendto_server(except, PROTO_SID, 0, NULL, ":%s MD %s %s:%s %s",
sendto_server(except, 0, 0, NULL, ":%s MD %s %s:%s %s",
sender->name, "membership", ID(client), channel->chname, varname);
sendto_server(except, 0, PROTO_SID, NULL, ":%s MD %s %s:%s %s",
sender->name, "membership", client->name, channel->chname, varname);
}
}
@@ -300,16 +288,12 @@ void _broadcast_md_globalvar_cmd(Client *except, Client *sender, char *varname,
{
if (value)
{
sendto_server(except, PROTO_SID, 0, NULL, ":%s MD %s %s :%s",
sender->name, "globalvar", varname, value);
sendto_server(except, 0, PROTO_SID, NULL, ":%s MD %s %s :%s",
sendto_server(except, 0, 0, NULL, ":%s MD %s %s :%s",
sender->name, "globalvar", varname, value);
}
else
{
sendto_server(except, PROTO_SID, 0, NULL, ":%s MD %s %s",
sender->name, "globalvar", varname);
sendto_server(except, 0, PROTO_SID, NULL, ":%s MD %s %s",
sendto_server(except, 0, 0, NULL, ":%s MD %s %s",
sender->name, "globalvar", varname);
}
}
@@ -359,7 +343,6 @@ void _broadcast_md_globalvar(ModDataInfo *mdi, ModData *md)
void _send_moddata_client(Client *srv, Client *client)
{
ModDataInfo *mdi;
char *user = CHECKPROTO(srv, PROTO_SID) ? ID(client) : client->name;
for (mdi = MDInfo; mdi; mdi = mdi->next)
{
@@ -368,7 +351,7 @@ void _send_moddata_client(Client *srv, Client *client)
char *value = mdi->serialize(&moddata_client(client, mdi));
if (value)
sendto_one(srv, NULL, ":%s MD %s %s %s :%s",
me.name, "client", user, mdi->name, value);
me.name, "client", ID(client), mdi->name, value);
}
}
}
@@ -402,9 +385,8 @@ void _send_moddata_members(Client *srv)
Member *m;
for (m = channel->members; m; m = m->next)
{
char *user = CHECKPROTO(srv, PROTO_SID) ? ID(m->client) : m->client->name;
if (m->client->direction == srv)
client = m->client;
if (client->direction == srv)
continue; /* from srv's direction */
for (mdi = MDInfo; mdi; mdi = mdi->next)
{
@@ -413,7 +395,7 @@ void _send_moddata_members(Client *srv)
char *value = mdi->serialize(&moddata_member(m, mdi));
if (value)
sendto_one(srv, NULL, ":%s MD %s %s:%s %s :%s",
me.name, "member", channel->chname, user, mdi->name, value);
me.name, "member", channel->chname, ID(client), mdi->name, value);
}
}
}
@@ -430,8 +412,6 @@ void _send_moddata_members(Client *srv)
for (m = client->user->channel; m; m = m->next)
{
char *user = CHECKPROTO(srv, PROTO_SID) ? ID(client) : client->name;
for (mdi = MDInfo; mdi; mdi = mdi->next)
{
if ((mdi->type == MODDATATYPE_MEMBERSHIP) && mdi->sync && mdi->serialize)
@@ -439,7 +419,7 @@ void _send_moddata_members(Client *srv)
char *value = mdi->serialize(&moddata_membership(m, mdi));
if (value)
sendto_one(srv, NULL, ":%s MD %s %s:%s %s :%s",
me.name, "membership", user, m->channel->chname, mdi->name, value);
me.name, "membership", ID(client), m->channel->chname, mdi->name, value);
}
}
}
+1 -1
View File
@@ -446,7 +446,7 @@ void cmd_message(Client *client, MessageTag *recv_mtags, int parc, char *parv[],
new_message(client, recv_mtags, &mtags);
labeled_response_inhibit = 1;
sendto_prefix_one(target, client, mtags, ":%s %s %s :%s",
CHECKPROTO(target->direction, PROTO_SID) ? ID(client) : client->name,
ID(client),
cmd,
(MyUser(target) ? target->name : nick),
text);
+5 -21
View File
@@ -115,12 +115,13 @@ void nick_collision(Client *cptr, char *newnick, char *newid, Client *new, Clien
*/
/* cptr case first... this side knows the user by newnick/newid */
if (CHECKPROTO(cptr, PROTO_SID) && !BadPtr(newid))
if (!BadPtr(newid))
{
/* SID server can kill 'new' by ID */
sendto_one(cptr, NULL, ":%s KILL %s :%s (%s)",
me.name, newid, me.name, comment);
} else {
// FIXME: this never happens, right? after the old proto ripout...
#ifndef ASSUME_NICK_IN_FLIGHT
/* cptr is not SID-capable or user has no UID */
sendto_one(cptr, NULL, ":%s KILL %s :%s (%s)",
@@ -146,14 +147,10 @@ void nick_collision(Client *cptr, char *newnick, char *newid, Client *new, Clien
new_message(new, NULL, &mtags);
/* non-cptr side knows this user by their old nick name */
sendto_server(cptr, PROTO_SID, 0, mtags,
sendto_server(cptr, 0, 0, mtags,
":%s KILL %s :%s (%s)",
me.name, ID(new), me.name, comment);
sendto_server(cptr, 0, PROTO_SID, mtags,
":%s KILL %s :%s (%s)",
me.name, new->name, me.name, comment);
/* Exit the client */
ircstats.is_kill++;
SetKilled(new);
@@ -170,21 +167,10 @@ void nick_collision(Client *cptr, char *newnick, char *newid, Client *new, Clien
new_message(existing, NULL, &mtags);
/* Now let's kill 'existing' */
sendto_server(NULL, PROTO_SID, 0, mtags,
sendto_server(NULL, 0, 0, mtags,
":%s KILL %s :%s (%s)",
me.name, ID(existing), me.name, comment);
#ifndef ASSUME_NICK_IN_FLIGHT
/* This is not ideal on non-SID servers, may kill the wrong person. */
sendto_server(NULL, 0, PROTO_SID, mtags,
":%s KILL %s :%s (%s)",
me.name, existing->name, me.name, comment);
#else
sendto_server(cptr, 0, PROTO_SID, mtags,
":%s KILL %s :%s (%s)",
me.name, existing->name, me.name, comment);
#endif
/* NOTE: we may have sent two KILLs on the same nick in some cases.
* Should be acceptable and only happens in a non-100% UID network.
*/
@@ -959,10 +945,8 @@ CMD_FUNC(cmd_nick)
}
add_history(client, 1);
new_message(client, recv_mtags, &mtags);
sendto_server(client, PROTO_SID, 0, mtags, ":%s NICK %s %lld",
sendto_server(client, 0, 0, mtags, ":%s NICK %s %lld",
ID(client), nick, (long long)client->lastnick);
sendto_server(client, 0, PROTO_SID, mtags, ":%s NICK %s %lld",
client->name, nick, (long long)client->lastnick);
sendto_local_common_channels(client, client, 0, mtags, ":%s NICK :%s", client->name, nick);
sendto_one(client, mtags, ":%s NICK :%s", client->name, nick);
free_message_tags(mtags);
+1 -3
View File
@@ -158,10 +158,8 @@ CMD_FUNC(cmd_part)
new_message_special(client, recv_mtags, &mtags, ":%s PART %s", client->name, channel->chname);
/* Send to other servers... */
sendto_server(client, PROTO_SID, 0, mtags, ":%s PART %s :%s",
sendto_server(client, 0, 0, mtags, ":%s PART %s :%s",
ID(client), channel->chname, comment ? comment : "");
sendto_server(client, 0, PROTO_SID, mtags, ":%s PART %s :%s",
client->name, channel->chname, comment ? comment : "");
if (invisible_user_in_channel(client, channel))
{
-1
View File
@@ -220,7 +220,6 @@ CMD_FUNC(cmd_protoctl)
del_from_id_hash_table(client->id, client); /* delete old UID entry (created on connect) */
strlcpy(client->id, sid, IDLEN);
add_to_id_hash_table(client->id, client); /* add SID */
client->local->proto |= PROTO_SID;
}
else if (!strcmp(name, "EAUTH") && value && NEW_LINKING_PROTOCOL)
{
+16 -34
View File
@@ -750,12 +750,10 @@ CMD_FUNC(cmd_server_remote)
if (*acptr->id)
{
sendto_server(client, PROTO_SID, 0, NULL, ":%s SID %s %d %s :%s",
sendto_server(client, 0, 0, NULL, ":%s SID %s %d %s :%s",
acptr->srvptr->id, acptr->name, hop + 1, acptr->id, acptr->info);
sendto_server(client, 0, PROTO_SID, NULL, ":%s SERVER %s %d :%s",
acptr->srvptr->name,
acptr->name, hop + 1, acptr->info);
} else {
// FIXME: this should never happen
sendto_server(client, 0, 0, NULL, ":%s SERVER %s %d :%s",
acptr->srvptr->name,
acptr->name, hop + 1, acptr->info);
@@ -773,8 +771,7 @@ void _introduce_user(Client *to, Client *acptr)
send_moddata_client(to, acptr);
if (acptr->user->away)
sendto_one(to, NULL, ":%s AWAY :%s", CHECKPROTO(to, PROTO_SID) ? ID(acptr) : acptr->name,
acptr->user->away);
sendto_one(to, NULL, ":%s AWAY :%s", ID(acptr), acptr->user->away);
if (acptr->user->swhois)
{
@@ -993,15 +990,8 @@ int server_sync(Client *cptr, ConfigItem_link *aconf)
RunHook(HOOKTYPE_SERVER_CONNECT, cptr);
/* Broadcast new server to the rest of the network */
if (*cptr->id)
{
sendto_server(cptr, PROTO_SID, 0, NULL, ":%s SID %s 2 %s :%s",
cptr->srvptr->id, cptr->name, cptr->id, cptr->info);
}
sendto_server(cptr, 0, *cptr->id ? PROTO_SID : 0, NULL, ":%s SERVER %s 2 :%s",
cptr->serv->up,
cptr->name, cptr->info);
sendto_server(cptr, 0, 0, NULL, ":%s SID %s 2 %s :%s",
cptr->srvptr->id, cptr->name, cptr->id, cptr->info);
/* Broadcast the just-linked-in featureset to other servers on our side */
broadcast_sinfo(cptr, NULL, cptr);
@@ -1017,18 +1007,10 @@ int server_sync(Client *cptr, ConfigItem_link *aconf)
if (IsServer(acptr))
{
if (SupportSID(cptr) && *acptr->id)
{
sendto_one(cptr, NULL, ":%s SID %s %d %s :%s",
acptr->srvptr->id,
acptr->name, acptr->hopcount + 1,
acptr->id, acptr->info);
}
else
sendto_one(cptr, NULL, ":%s SERVER %s %d :%s",
acptr->serv->up,
acptr->name, acptr->hopcount + 1,
acptr->info);
sendto_one(cptr, NULL, ":%s SID %s %d %s :%s",
acptr->srvptr->id,
acptr->name, acptr->hopcount + 1,
acptr->id, acptr->info);
/* Also signal to the just-linked server which
* servers are fully linked.
@@ -1041,7 +1023,7 @@ int server_sync(Client *cptr, ConfigItem_link *aconf)
*/
if (acptr->serv->flags.synced)
{
sendto_one(cptr, NULL, ":%s EOS", CHECKPROTO(cptr, PROTO_SID) ? ID(acptr) : acptr->name);
sendto_one(cptr, NULL, ":%s EOS", ID(acptr));
#ifdef DEBUGMODE
ircd_log(LOG_ERROR, "[EOSDBG] server_sync: sending to uplink '%s' with src %s...",
cptr->name, acptr->name);
@@ -1093,7 +1075,7 @@ int server_sync(Client *cptr, ConfigItem_link *aconf)
ircnetwork);
/* Send EOS (End Of Sync) to the just linked server... */
sendto_one(cptr, NULL, ":%s EOS", CHECKPROTO(cptr, PROTO_SID) ? me.id : me.name);
sendto_one(cptr, NULL, ":%s EOS", me.id);
#ifdef DEBUGMODE
ircd_log(LOG_ERROR, "[EOSDBG] server_sync: sending to justlinked '%s' with src ME...",
cptr->name);
@@ -1446,7 +1428,7 @@ void send_channel_modes_sjoin(Client *to, Channel *channel)
name = CHECKPROTO(to, PROTO_SID) ? ID(lp->client) : lp->client->name;
name = ID(lp->client);
strcpy(bufptr, name);
bufptr += strlen(bufptr);
@@ -1538,19 +1520,19 @@ void send_channel_modes_sjoin3(Client *to, Channel *channel)
if (nomode && nopara)
{
ircsnprintf(buf, sizeof(buf),
":%s SJOIN %lld %s :", CHECKPROTO(to, PROTO_SID) ? me.id : me.name,
":%s SJOIN %lld %s :", me.id,
(long long)channel->creationtime, channel->chname);
}
if (nopara && !nomode)
{
ircsnprintf(buf, sizeof(buf),
":%s SJOIN %lld %s %s :", CHECKPROTO(to, PROTO_SID) ? me.id : me.name,
":%s SJOIN %lld %s %s :", me.id,
(long long)channel->creationtime, channel->chname, modebuf);
}
if (!nopara && !nomode)
{
ircsnprintf(buf, sizeof(buf),
":%s SJOIN %lld %s %s %s :", CHECKPROTO(to, PROTO_SID) ? me.id : me.name,
":%s SJOIN %lld %s %s %s :", me.id,
(long long)channel->creationtime, channel->chname, modebuf, parabuf);
}
@@ -1593,7 +1575,7 @@ void send_channel_modes_sjoin3(Client *to, Channel *channel)
if (lp->flags & MODE_CHANADMIN)
*p++ = '~';
p = mystpcpy(p, CHECKPROTO(to, PROTO_SID) ? ID(lp->client) : lp->client->name);
p = mystpcpy(p, ID(lp->client));
*p++ = ' ';
*p = '\0';
+6 -41
View File
@@ -140,7 +140,6 @@ CMD_FUNC(cmd_sjoin)
char nick[1024]; /**< nick or ban/invex/exempt being processed */
char scratch_buf[1024]; /**< scratch buffer */
char prefix[16]; /**< prefix of nick for server to server traffic (eg: @) */
char nick_buf[BUFSIZE]; /**< Buffer for server-to-server traffic which will be broadcasted to others (using nick names) */
char uid_buf[BUFSIZE]; /**< Buffer for server-to-server traffic which will be broadcasted to others (servers supporting SID/UID) */
char uid_sjsby_buf[BUFSIZE]; /**< Buffer for server-to-server traffic which will be broadcasted to others (servers supporting SID/UID and SJSBY) */
char sj3_parabuf[BUFSIZE]; /**< Prefix for the above SJOIN buffers (":xxx SJOIN #channel +mode :") */
@@ -352,7 +351,6 @@ CMD_FUNC(cmd_sjoin)
/* Now process adding of users & adding of list modes (bans/exempt/invex) */
snprintf(nick_buf, sizeof nick_buf, ":%s SJOIN %lld %s :", client->name, (long long)ts, sj3_parabuf);
snprintf(uid_buf, sizeof uid_buf, ":%s SJOIN %lld %s :", ID(client), (long long)ts, sj3_parabuf);
snprintf(uid_sjsby_buf, sizeof uid_sjsby_buf, ":%s SJOIN %lld %s :", ID(client), (long long)ts, sj3_parabuf);
@@ -533,26 +531,10 @@ getnick:
CheckStatus('h', CHFL_HALFOP);
CheckStatus('v', CHFL_VOICE);
if (strlen(nick_buf) + strlen(prefix) + strlen(acptr->name) > BUFSIZE - 10)
{
/* Send what we have and start a new buffer */
sendto_server(client, PROTO_SJ3, PROTO_SID, recv_mtags, "%s", nick_buf);
snprintf(nick_buf, sizeof(nick_buf), ":%s SJOIN %lld %s :", client->name, (long long)ts, sj3_parabuf);
/* Double-check the new buffer is sufficient to concat the data */
if (strlen(nick_buf) + strlen(prefix) + strlen(acptr->name) > BUFSIZE - 5)
{
ircd_log(LOG_ERROR, "Oversized SJOIN: '%s' + '%s%s'",
nick_buf, prefix, acptr->name);
sendto_realops("Oversized SJOIN for %s -- see ircd log", channel->chname);
continue;
}
}
sprintf(nick_buf+strlen(nick_buf), "%s%s ", prefix, acptr->name);
if (strlen(uid_buf) + strlen(prefix) + IDLEN > BUFSIZE - 10)
{
/* Send what we have and start a new buffer */
sendto_server(client, PROTO_SJ3 | PROTO_SID, PROTO_SJSBY, recv_mtags, "%s", uid_buf);
sendto_server(client, PROTO_SJ3, PROTO_SJSBY, recv_mtags, "%s", uid_buf);
snprintf(uid_buf, sizeof(uid_buf), ":%s SJOIN %lld %s :", ID(client), (long long)ts, sj3_parabuf);
/* Double-check the new buffer is sufficient to concat the data */
if (strlen(uid_buf) + strlen(prefix) + strlen(ID(acptr)) > BUFSIZE - 5)
@@ -568,7 +550,7 @@ getnick:
if (strlen(uid_sjsby_buf) + strlen(prefix) + IDLEN > BUFSIZE - 10)
{
/* Send what we have and start a new buffer */
sendto_server(client, PROTO_SJ3 | PROTO_SID, PROTO_SJSBY, recv_mtags, "%s", uid_sjsby_buf);
sendto_server(client, PROTO_SJ3, PROTO_SJSBY, recv_mtags, "%s", uid_sjsby_buf);
snprintf(uid_sjsby_buf, sizeof(uid_sjsby_buf), ":%s SJOIN %lld %s :", ID(client), (long long)ts, sj3_parabuf);
/* Double-check the new buffer is sufficient to concat the data */
if (strlen(uid_sjsby_buf) + strlen(prefix) + strlen(ID(acptr)) > BUFSIZE - 5)
@@ -624,26 +606,10 @@ getnick:
}
}
if (strlen(nick_buf) + strlen(prefix) + strlen(nick) > BUFSIZE - 10)
{
/* Send what we have and start a new buffer */
sendto_server(client, PROTO_SJ3, PROTO_SID, recv_mtags, "%s", nick_buf);
snprintf(nick_buf, sizeof(nick_buf), ":%s SJOIN %lld %s :", client->name, (long long)ts, sj3_parabuf);
/* Double-check the new buffer is sufficient to concat the data */
if (strlen(nick_buf) + strlen(prefix) + strlen(nick) > BUFSIZE - 5)
{
ircd_log(LOG_ERROR, "Oversized SJOIN: '%s' + '%s%s'",
nick_buf, prefix, nick);
sendto_realops("Oversized SJOIN for %s -- see ircd log", channel->chname);
continue;
}
}
sprintf(nick_buf+strlen(nick_buf), "%s%s ", prefix, nick);
if (strlen(uid_buf) + strlen(prefix) + strlen(nick) > BUFSIZE - 10)
{
/* Send what we have and start a new buffer */
sendto_server(client, PROTO_SJ3 | PROTO_SID, PROTO_SJSBY, recv_mtags, "%s", uid_buf);
sendto_server(client, PROTO_SJ3, PROTO_SJSBY, recv_mtags, "%s", uid_buf);
snprintf(uid_buf, sizeof(uid_buf), ":%s SJOIN %lld %s :", ID(client), (long long)ts, sj3_parabuf);
/* Double-check the new buffer is sufficient to concat the data */
if (strlen(uid_buf) + strlen(prefix) + strlen(nick) > BUFSIZE - 5)
@@ -665,7 +631,7 @@ getnick:
if (strlen(uid_sjsby_buf) + strlen(scratch_buf) > BUFSIZE - 10)
{
/* Send what we have and start a new buffer */
sendto_server(client, PROTO_SJ3 | PROTO_SID | PROTO_SJSBY, 0, recv_mtags, "%s", uid_sjsby_buf);
sendto_server(client, PROTO_SJ3 | PROTO_SJSBY, 0, recv_mtags, "%s", uid_sjsby_buf);
snprintf(uid_sjsby_buf, sizeof(uid_sjsby_buf), ":%s SJOIN %lld %s :", ID(client), (long long)ts, sj3_parabuf);
/* Double-check the new buffer is sufficient to concat the data */
if (strlen(uid_sjsby_buf) + strlen(scratch_buf) > BUFSIZE - 5)
@@ -682,9 +648,8 @@ getnick:
/* Send out any possible remainder.. */
Debug((DEBUG_DEBUG, "Sending '%li %s :%s' to sj3", ts, parabuf, parv[parc - 1]));
sendto_server(client, PROTO_SJ3, PROTO_SID, recv_mtags, "%s", nick_buf);
sendto_server(client, PROTO_SID | PROTO_SJ3, PROTO_SJSBY, recv_mtags, "%s", uid_buf);
sendto_server(client, PROTO_SID | PROTO_SJ3 | PROTO_SJSBY, 0, recv_mtags, "%s", uid_sjsby_buf);
sendto_server(client, PROTO_SJ3, PROTO_SJSBY, recv_mtags, "%s", uid_buf);
sendto_server(client, PROTO_SJ3 | PROTO_SJSBY, 0, recv_mtags, "%s", uid_sjsby_buf);
if (modebuf[1])
{
+1 -4
View File
@@ -174,12 +174,9 @@ CMD_FUNC(cmd_topic)
new_message(client, recv_mtags, &mtags);
RunHook4(HOOKTYPE_TOPIC, client, channel, mtags, topic);
sendto_server(client, PROTO_SID, 0, mtags, ":%s TOPIC %s %s %lld :%s",
sendto_server(client, 0, 0, mtags, ":%s TOPIC %s %s %lld :%s",
ID(client), channel->chname, channel->topic_nick,
(long long)channel->topic_time, channel->topic);
sendto_server(client, 0, PROTO_SID, mtags, ":%s TOPIC %s %s %lld :%s",
client->name, channel->chname, channel->topic_nick,
(long long)channel->topic_time, channel->topic);
sendto_channel(channel, client, NULL, 0, 0, SEND_LOCAL, mtags,
":%s TOPIC %s :%s",
client->name, channel->chname, channel->topic);
+6 -23
View File
@@ -1081,30 +1081,13 @@ void sendto_one_nickcmd(Client *server, Client *client, char *umodes)
vhost = "*";
}
if (CHECKPROTO(server, PROTO_SID) && *client->id)
{
sendto_one(server, NULL,
":%s UID %s %d %lld %s %s %s %s %s %s %s %s :%s",
client->srvptr->id, client->name, client->hopcount,
(long long)client->lastnick,
client->user->username, client->user->realhost, client->id,
client->user->svid, umodes, vhost, getcloak(client),
encode_ip(client->ip), client->info);
return;
}
sendto_one(server, NULL,
"NICK %s %d %lld %s %s %s %s %s %s %s%s %s:%s",
client->name, client->hopcount+1,
(long long)client->lastnick, client->user->username,
client->user->realhost, client->srvptr->name,
client->user->svid, umodes, vhost,
CHECKPROTO(server, PROTO_CLK) ? getcloak(client) : "",
CHECKPROTO(server, PROTO_CLK) ? " " : "",
encode_ip(client->ip),
client->info);
return;
":%s UID %s %d %lld %s %s %s %s %s %s %s %s :%s",
client->srvptr->id, client->name, client->hopcount,
(long long)client->lastnick,
client->user->username, client->user->realhost, client->id,
client->user->svid, umodes, vhost, getcloak(client),
encode_ip(client->ip), client->info);
}
/* sidenote: sendnotice() and sendtxtnumeric() assume no client or server