/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2015 Alexander Barton (alex@barton.de) and Contributors.
+ * Copyright (c)2001-2018 Alexander Barton (alex@barton.de) and Contributors.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
}
if (Client_Conn(Client) != NONE) {
- Client_Destroy(Client, NULL, msg, false);
+ Conn_Close(Client_Conn(Client), NULL, msg, false);
return DISCONNECTED;
}
return CONNECTED;
}
- if (Client_Type(c) != CLIENT_USER && Client_Type(c) != CLIENT_GOTNICK) {
+ if (Client_Type(c) != CLIENT_USER && Client_Type(c) != CLIENT_GOTNICK
+ && Client_Type(c) != CLIENT_SERVICE) {
/* Target of this KILL is not a regular user, this is
* invalid! So we ignore this case if we received a
* regular KILL from the network and try to kill the
* @return Pointer to static (global) string buffer.
*/
static char *
-#ifdef ZLIB
+#if defined(SSL_SUPPORT) || defined(ZLIB)
Option_String(CONN_ID Idx)
-#else
-Option_String(UNUSED CONN_ID Idx)
-#endif
{
static char option_txt[8];
UINT16 options;
#endif
return option_txt;
+#else
+Option_String(UNUSED CONN_ID Idx)
+{
+ return "";
+#endif
} /* Option_String */
/**
goto send_next_target;
}
- if (Client_HasMode(cl, 'C')) {
+ if (Client_HasMode(cl, 'C') &&
+ !Client_HasMode(from, 'o') &&
+ !(Client_Type(from) == CLIENT_SERVER) &&
+ !(Client_Type(from) == CLIENT_SERVICE)) {
cl2chan = Channel_FirstChannelOf(cl);
while (cl2chan) {
chan = Channel_GetChannel(cl2chan);