- sendto_server(client_p, chptr, CAP_TS6 | needcap, NOCAPS, ":%s BMASK %ld %s %s :%s",
- source_p->id, (long) chptr->channelts, chptr->chname, parv[3], parv[4]);
- return 0;
+ if (extended) {
+ *(degrade_ptr - 1) = '\0';
+ sendto_server(client_p, chptr, CAP_EBMASK | CAP_TS6 | needcap, NOCAPS, ":%s EBMASK %ld %s %s :%s",
+ source_p->id, (long) chptr->channelts, chptr->chname, parv[3], parv[4]);
+ sendto_server(client_p, chptr, CAP_TS6 | needcap, CAP_EBMASK, ":%s BMASK %ld %s %s :%s",
+ source_p->id, (long) chptr->channelts, chptr->chname, parv[3], degrade);
+ }
+ else
+ sendto_server(client_p, chptr, CAP_TS6 | needcap, NOCAPS, ":%s BMASK %ld %s %s :%s",
+ source_p->id, (long) chptr->channelts, chptr->chname, parv[3], parv[4]);
+}
+
+static void
+ms_bmask(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
+{
+ do_bmask(false, msgbuf_p, client_p, source_p, parc, parv);
+}
+static void
+ms_ebmask(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
+{
+ do_bmask(true, msgbuf_p, client_p, source_p, parc, parv);