X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/46b3bb76550cf811d049a534fffddc0da8699f20..82f8e812f5f3df9a23b58dff2024f83237280b9d:/src/send.c diff --git a/src/send.c b/src/send.c index 5cdd232..e5d71f2 100644 --- a/src/send.c +++ b/src/send.c @@ -85,10 +85,7 @@ _send_linebuf(struct Client *to, buf_head_t *linebuf) get_sendq(to)); } - if(IsClient(to)) - to->flags |= FLAGS_SENDQEX; - - dead_link(to); + dead_link(to, 1); return -1; } else @@ -200,7 +197,7 @@ send_queued(struct Client *to) if(retlen == 0 || (retlen < 0 && !rb_ignore_errno(errno))) { - dead_link(to); + dead_link(to, 0); return; } } @@ -587,7 +584,7 @@ sendto_channel_opmod(struct Client *one, struct Client *source_p, if(IsIOError(target_p->from) || target_p->from == one) continue; - if((msptr->flags & CHFL_CHANOP) == 0) + if(!is_any_op(msptr)) continue; if(IsDeaf(target_p)) @@ -760,69 +757,6 @@ sendto_common_channels_local(struct Client *user, const char *pattern, ...) rb_linebuf_donebuf(&linebuf); } -/* - * sendto_common_channels_local_with_capability() - * - * inputs - pointer to client - * - capability - * - pattern to send - * output - NONE - * side effects - Sends a message to all people on local server who are - * in same channel with user. - * used by m_nick.c and exit_one_client. - */ -void -sendto_common_channels_local_with_capability(struct Client *user, int capability, const char *pattern, ...) -{ - va_list args; - rb_dlink_node *ptr; - rb_dlink_node *next_ptr; - rb_dlink_node *uptr; - rb_dlink_node *next_uptr; - struct Channel *chptr; - struct Client *target_p; - struct membership *msptr; - struct membership *mscptr; - buf_head_t linebuf; - - rb_linebuf_newbuf(&linebuf); - va_start(args, pattern); - rb_linebuf_putmsg(&linebuf, pattern, &args, NULL); - va_end(args); - - ++current_serial; - - RB_DLINK_FOREACH_SAFE(ptr, next_ptr, user->user->channel.head) - { - mscptr = ptr->data; - chptr = mscptr->chptr; - - RB_DLINK_FOREACH_SAFE(uptr, next_uptr, chptr->locmembers.head) - { - msptr = uptr->data; - target_p = msptr->client_p; - - if(!IsCapable(target_p, capability)) - continue; - - if(IsIOError(target_p) || - target_p->serial == current_serial) - continue; - - target_p->serial = current_serial; - send_linebuf(target_p, &linebuf); - } - } - - /* this can happen when the user isnt in any channels, but we still - * need to send them the data, ie a nick change - */ - if(MyConnect(user) && (user->serial != current_serial)) - send_linebuf(user, &linebuf); - - rb_linebuf_donebuf(&linebuf); -} - /* * sendto_common_channels_local_butone() * @@ -877,72 +811,6 @@ sendto_common_channels_local_butone(struct Client *user, const char *pattern, .. rb_linebuf_donebuf(&linebuf); } -/* - * sendto_common_channels_local_with_capability_butone() - * - * inputs - pointer to client - * - capability - * - pattern to send - * output - NONE - * side effects - Sends a message to all people on local server who are - * in same channel with user, except the user themselves. - * used by m_nick.c and exit_one_client. - */ -void -sendto_common_channels_local_with_capability_butone(struct Client *user, int capability, const char *pattern, ...) -{ - va_list args; - rb_dlink_node *ptr; - rb_dlink_node *next_ptr; - rb_dlink_node *uptr; - rb_dlink_node *next_uptr; - struct Channel *chptr; - struct Client *target_p; - struct membership *msptr; - struct membership *mscptr; - buf_head_t linebuf; - - rb_linebuf_newbuf(&linebuf); - va_start(args, pattern); - rb_linebuf_putmsg(&linebuf, pattern, &args, NULL); - va_end(args); - - ++current_serial; - /* Skip them -- jilles */ - user->serial = current_serial; - - RB_DLINK_FOREACH_SAFE(ptr, next_ptr, user->user->channel.head) - { - mscptr = ptr->data; - chptr = mscptr->chptr; - - RB_DLINK_FOREACH_SAFE(uptr, next_uptr, chptr->locmembers.head) - { - msptr = uptr->data; - target_p = msptr->client_p; - - if(!IsCapable(target_p, capability)) - continue; - - if(IsIOError(target_p) || - target_p->serial == current_serial) - continue; - - target_p->serial = current_serial; - send_linebuf(target_p, &linebuf); - } - } - - /* this can happen when the user isnt in any channels, but we still - * need to send them the data, ie a nick change - */ - if(MyConnect(user) && (user->serial != current_serial)) - send_linebuf(user, &linebuf); - - rb_linebuf_donebuf(&linebuf); -} - - /* sendto_match_butone() * * inputs - server not to send to, source, mask, type of mask, va_args