- /* Statuscode, der geforwarded werden muss? */
- if(( strlen( Req->command ) == 3 ) && ( atoi( Req->command ) > 100 ))
- {
- /* Befehl ist ein Statuscode */
-
- /* Zielserver ermitteln */
- if(( Client_Type( client ) == CLIENT_SERVER ) && ( Req->argc > 0 )) target = Client_Search( Req->argv[0] );
- else target = NULL;
- if( ! target )
- {
- if( Req->argc > 0 ) Log( LOG_WARNING, "Unknown target for status code %s: \"%s\"", Req->command, Req->argv[0] );
- else Log( LOG_WARNING, "Unknown target for status code %s!", Req->command );
- return TRUE;
- }
- if( target == Client_ThisServer( ))
- {
- Log( LOG_DEBUG, "Ignored status code %s from \"%s\".", Req->command, Client_ID( client ));
- return TRUE;
- }
-
- /* Quell-Client ermitteln */
- if( ! Req->prefix[0] )
- {
- Log( LOG_WARNING, "Got status code without prefix!?" );
- return TRUE;
- }
- else prefix = Client_Search( Req->prefix );
- if( ! prefix )
- {
- Log( LOG_WARNING, "Got status code from unknown source: \"%s\"", Req->prefix );
- return TRUE;
- }
-
- /* Statuscode weiterleiten */
- strlcpy( str, Req->command, sizeof( str ));
- for( i = 0; i < Req->argc; i++ )
- {
- if( i < Req->argc - 1 ) strlcat( str, " ", sizeof( str ));
- else strlcat( str, " :", sizeof( str ));
- strlcat( str, Req->argv[i], sizeof( str ));
- }
- return IRC_WriteStrClientPrefix( target, prefix, "%s", str );
- }
+ /* Numeric? */
+ client_type = Client_Type(client);
+ if ((client_type == CLIENT_SERVER ||
+ client_type == CLIENT_UNKNOWNSERVER)
+ && strlen(Req->command) == 3 && atoi(Req->command) > 1)
+ return Handle_Numeric(client, Req);