#include "client.h"
#include "ircd.h"
+#include "ircd_log.h"
#include "ircd_reply.h"
#include "ircd_string.h"
#include "msg.h"
#include "numnicks.h"
+#include "s_debug.h"
#include "s_user.h"
#include "send.h"
-#include <assert.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
+#include <stdlib.h>
+#include <string.h>
/*
* ms_account - server message handler
assert(0 == cli_user(acptr)->account[0]);
+ if (strlen(parv[2]) > ACCOUNTLEN)
+ return protocol_violation(cptr,
+ "Received account (%s) longer than %d for %s; "
+ "ignoring.",
+ parv[2], ACCOUNTLEN, cli_name(acptr));
+
+ if (parc > 3) {
+ cli_user(acptr)->acc_create = atoi(parv[3]);
+ Debug((DEBUG_DEBUG, "Received timestamped account: account \"%s\", "
+ "timestamp %Tu", parv[2], cli_user(acptr)->acc_create));
+ }
+
ircd_strncpy(cli_user(acptr)->account, parv[2], ACCOUNTLEN);
- hide_hostmask(acptr, FLAGS_ACCOUNT);
+ hide_hostmask(acptr, FLAG_ACCOUNT);
- sendcmdto_serv_butone(sptr, CMD_ACCOUNT, cptr, "%C %s", acptr,
- cli_user(acptr)->account);
+ sendcmdto_serv_butone(sptr, CMD_ACCOUNT, cptr,
+ cli_user(acptr)->acc_create ? "%C %s %Tu" : "%C %s",
+ acptr, cli_user(acptr)->account,
+ cli_user(acptr)->acc_create);
return 0;
}