private void whois(CommandArgsIterator args_it) throws IOException
    {
        if (args_it.hasNext()) {    
            String user_name = args_it.next();
            if (!args_it.hasNext()) {
                Map<String, Client> users = this._server.getUsers();
                String[] chan_names = null;
                synchronized (users) {
                    Client user = users.get(user_name);
                    if (user != null) {
                        Map<String, Chan> chans = user.getChans();
                        synchronized (chans) {
                            chan_names = chans.keySet().toArray(new String[0]);
                        }
                    }
                }
                
                // Envoie la réponse hors des verrous.
                if (chan_names != null) {
                    StringBuilder args = new StringBuilder("C");
                    for (String name : chan_names) {
                        args.append(" #");
                        args.append(name);
                    }
                        
                    this.writeCommand(new Command('I', args.toString()));
                } else
                    this.writeCommand(new Command('I', "D"));
                
                this.traceEvent("Whois sur " + user_name);
                this.writeCommand(Command.Ack);
            } else
                this.syntaxError();
        } else
            this.syntaxError();
    }