GLOBAL bool
IRC_ERROR(CLIENT *Client, REQUEST *Req)
{
+ char *msg;
+
assert( Client != NULL );
assert( Req != NULL );
return CONNECTED;
}
- if (Req->argc < 1)
+ if (Req->argc < 1) {
+ msg = "Got ERROR command";
Log(LOG_NOTICE, "Got ERROR from \"%s\"!",
Client_Mask(Client));
- else
+ } else {
+ msg = Req->argv[0];
Log(LOG_NOTICE, "Got ERROR from \"%s\": \"%s\"!",
- Client_Mask(Client), Req->argv[0]);
+ Client_Mask(Client), msg);
+ }
+
+ if (Client_Conn(Client) != NONE) {
+ Client_Destroy(Client, NULL, msg, false);
+ return DISCONNECTED;
+ }
return CONNECTED;
} /* IRC_ERROR */
return CONNECTED;
}
- /* Inform other servers */
- IRC_WriteStrServersPrefix(From ? Client : NULL,
- From ? From : Client_ThisServer(),
- "KILL %s :%s", Nick, Reason);
-
if (Client_Type(c) != CLIENT_USER && Client_Type(c) != CLIENT_GOTNICK) {
/* Target of this KILL is not a regular user, this is
* invalid! So we ignore this case if we received a
Client_Type(c), Nick);
}
+ /* Inform other servers */
+ IRC_WriteStrServersPrefix(From ? Client : NULL,
+ From ? From : Client_ThisServer(),
+ "KILL %s :%s", Nick, Reason);
+
+
/* Save ID of this connection */
if (Client)
my_conn = Client_Conn(Client);
if(options & CONN_ZIP) /* zlib compression enabled */
strlcat(option_txt, "z", sizeof(option_txt));
#endif
- LogDebug(" *** %d: %d = %s", Idx, options, option_txt);
return option_txt;
} /* Option_String */
currentTarget = strtok_r(currentTarget, ",", &strtok_last);
ngt_UpperStr(Req->command);
- while (true) {
+ /* Please note that "currentTarget" is NULL when the target contains
+ * the separator character only, e. g. "," or ",,,," etc.! */
+ while (currentTarget) {
/* Make sure that there hasn't been such a target already: */
targets[target_nr++] = currentTarget;
for(i = 0; i < target_nr - 1; i++) {