-
-/**
- * Announce existing user to a new server
- * @param Client New server
- * @param User Existing user in the network
- */
-static bool
-Announce_User(CLIENT * Client, CLIENT * User)
-{
- CONN_ID conn;
- char *modes;
-
- conn = Client_Conn(Client);
- if (Conn_Options(conn) & CONN_RFC1459) {
- /* RFC 1459 mode: separate NICK and USER commands */
- if (! Conn_WriteStr(conn, "NICK %s :%d",
- Client_ID(User), Client_Hops(User) + 1))
- return DISCONNECTED;
- if (! Conn_WriteStr(conn, ":%s USER %s %s %s :%s",
- Client_ID(User), Client_User(User),
- Client_Hostname(User),
- Client_ID(Client_Introducer(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 {
- /* RFC 2813 mode: one combined NICK or SERVICE command */
- if (Client_Type(User) == CLIENT_SERVICE
- && strchr(Client_Flags(Client), 'S'))
- return IRC_WriteStrClient(Client,
- "SERVICE %s %d * +%s %d :%s", Client_Mask(User),
- Client_MyToken(Client_Introducer(User)),
- Client_Modes(User), Client_Hops(User) + 1,
- Client_Info(User));
- else
- return IRC_WriteStrClient(Client,
- "NICK %s %d %s %s %d +%s :%s",
- Client_ID(User), Client_Hops(User) + 1,
- Client_User(User), Client_Hostname(User),
- Client_MyToken(Client_Introducer(User)),
- Client_Modes(User), Client_Info(User));
- }
-} /* Announce_User */
-
-