static bool
+#ifdef STRICT_RFC
Validate_Args(CONN_ID Idx, REQUEST *Req, bool *Closed)
+#else
+Validate_Args(UNUSED CONN_ID Idx, UNUSED REQUEST *Req, bool *Closed)
+#endif
{
#ifdef STRICT_RFC
int i;
#endif
- assert( Idx >= 0 );
- assert( Req != NULL );
*Closed = false;
#ifdef STRICT_RFC
+ assert( Idx >= 0 );
+ assert( Req != NULL );
+
/* CR and LF are never allowed in command parameters.
* But since we do accept lines terminated only with CR or LF in
* "non-RFC-compliant mode" (besides the correct CR+LF combination),
Handle_Numeric(CLIENT *client, REQUEST *Req)
{
static const struct _NUMERIC Numerics[] = {
- { 005, IRC_Num_ISUPPORT },
+ { 5, IRC_Num_ISUPPORT },
+ { 20, NULL },
{ 376, IRC_Num_ENDOFMOTD }
};
int i, num;
CLIENT *prefix, *target = NULL;
/* Determine target */
- if (Req->argc > 0)
- target = Client_Search(Req->argv[0]);
+ if (Req->argc > 0) {
+ if (strcmp(Req->argv[0], "*") != 0)
+ target = Client_Search(Req->argv[0]);
+ else
+ target = Client_ThisServer();
+ }
if (!target) {
/* Status code without target!? */
num = atoi(Req->command);
for (i = 0; i < (int) ARRAY_SIZE(Numerics); i++) {
- if (num == Numerics[i].numeric)
+ if (num == Numerics[i].numeric) {
+ if (!Numerics[i].function)
+ return CONNECTED;
return Numerics[i].function(client, Req);
+ }
}
LogDebug("Ignored status code %s from \"%s\".",