#include "client.h"
#include "common.h"
#include "hash.h"
-#include "irc_string.h"
+#include "match.h"
#include "ircd.h"
#include "ircd_defs.h"
#include "numeric.h"
/*
** m_whowas
-** parv[0] = sender prefix
** parv[1] = nickname queried
*/
static int
int max = -1, found = 0;
char *p;
const char *nick;
+ char tbuf[26];
+ long sendq_limit;
static time_t last_used = 0L;
if(!IsOper(source_p))
{
- if((last_used + ConfigFileEntry.pace_wait_simple) > CurrentTime)
+ if((last_used + ConfigFileEntry.pace_wait_simple) > rb_current_time())
{
sendto_one(source_p, form_str(RPL_LOAD2HI),
me.name, source_p->name, "WHOWAS");
return 0;
}
else
- last_used = CurrentTime;
+ last_used = rb_current_time();
}
nick = parv[1];
+ sendq_limit = get_sendq(client_p) * 9 / 10;
+
temp = WHOWASHASH[hash_whowas_name(nick)];
found = 0;
for (; temp; temp = temp->next)
{
if(!irccmp(nick, temp->name))
{
+ if(cur > 0 && rb_linebuf_len(&client_p->localClient->buf_sendq) > sendq_limit)
+ {
+ sendto_one(source_p, form_str(ERR_TOOMANYMATCHES),
+ me.name, source_p->name, "WHOWAS");
+ break;
+ }
sendto_one(source_p, form_str(RPL_WHOWASUSER),
me.name, source_p->name, temp->name,
temp->username, temp->hostname, temp->realname);
form_str(RPL_WHOISACTUALLY),
temp->name, temp->sockhost);
#endif
+ if (!EmptyString(temp->suser))
+ sendto_one_numeric(source_p, RPL_WHOISLOGGEDIN,
+ "%s %s :was logged in as",
+ temp->name, temp->suser);
sendto_one_numeric(source_p, RPL_WHOISSERVER,
form_str(RPL_WHOISSERVER),
temp->name, temp->servername,
- myctime(temp->logoff));
+ rb_ctime(temp->logoff, tbuf, sizeof(tbuf)));
cur++;
found++;
}