]> arthur.barton.de Git - ngircd.git/blobdiff - src/ngircd/numeric.c
Announce IRC services in the network.
[ngircd.git] / src / ngircd / numeric.c
index 927989db9923d99567703938a9800ec60b8803ab..ab6476654bc08c25a84f2e1789324bd0b633b03a 100644 (file)
@@ -100,8 +100,17 @@ Announce_User(CLIENT * Client, CLIENT * User)
                }
                return CONNECTED;
        } else {
-               /* RFC 2813 mode: one combined NICK command */
-               return IRC_WriteStrClient(Client, "NICK %s %d %s %s %d +%s :%s",
+               /* 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)),