Announce_User(): support RFC 1459 compatibility mode.

This commit is contained in:
Alexander Barton 2008-08-15 00:11:53 +02:00
parent 92603f7c80
commit 687784d276
1 changed files with 12 additions and 2 deletions

View File

@ -78,17 +78,27 @@ static bool
Announce_User(CLIENT * Client, CLIENT * User) Announce_User(CLIENT * Client, CLIENT * User)
{ {
CONN_ID conn; CONN_ID conn;
char *modes;
conn = Client_Conn(Client); conn = Client_Conn(Client);
if (Conn_Options(conn) & CONN_RFC1459) { if (Conn_Options(conn) & CONN_RFC1459) {
/* RFC 1459 mode: separate NICK and USER commands */ /* RFC 1459 mode: separate NICK and USER commands */
if (! Conn_WriteStr(conn, "NICK %s :%d", if (! Conn_WriteStr(conn, "NICK %s :%d",
Client_ID(User), Client_Hops(User) + 1)) Client_ID(User), Client_Hops(User) + 1))
return DISCONNECTED; return DISCONNECTED;
return Conn_WriteStr(conn, ":%s USER %s %s %s :%s", if (! Conn_WriteStr(conn, ":%s USER %s %s %s :%s",
Client_ID(User), Client_User(User), Client_ID(User), Client_User(User),
Client_Hostname(User), Client_Hostname(User),
Client_ID(Client_Introducer(User)), Client_ID(Client_Introducer(User)),
Client_Info(User)); Client_Info(User)))
return DISCONNECTED;
modes = Client_Modes(User);
if (modes[0]) {
return Conn_WriteStr(conn, ":%s MODE %s +%s",
Client_ID(User), Client_ID(User),
modes);
}
return CONNECTED;
} else { } else {
/* RFC 2813 mode: one combined NICK command */ /* RFC 2813 mode: one combined NICK command */
return IRC_WriteStrClient(Client, "NICK %s %d %s %s %d +%s :%s", return IRC_WriteStrClient(Client, "NICK %s %d %s %s %d +%s :%s",