]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/proto-p10.c
Fixing nick burst timestamp'd account messages.
[irc/evilnet/x3.git] / src / proto-p10.c
index 40b03a60c4fe253a7beac9afd7ad449d82776907..b75ee87ffb20211ab869a0096a5cbf84d26373c6 100644 (file)
@@ -425,9 +425,9 @@ irc_user(struct userNode *user)
 }
 
 void
-irc_account(struct userNode *user, const char *stamp)
+irc_account(struct userNode *user, const char *stamp, time_t timestamp)
 {
-    putsock("%s " P10_ACCOUNT " %s %s", self->numeric, user->numeric, stamp);
+    putsock("%s " P10_ACCOUNT " %s R %s %lu", self->numeric, user->numeric, stamp, timestamp);
 }
 
 void
@@ -1042,13 +1042,36 @@ static CMD_FUNC(cmd_nick)
 static CMD_FUNC(cmd_account)
 {
     struct userNode *user;
+    struct server *server;
+    struct handle_info *hi;
 
-    if ((argc < 3) || !origin || !GetServerH(origin))
+    if ((argc < 3) || !origin || !(server = GetServerH(origin)))
         return 0; /* Origin must be server. */
+    
+    /* This next line appears to tremple origin.. why? */
     user = GetUserN(argv[1]);
     if (!user)
         return 1; /* A QUIT probably passed the ACCOUNT. */
-    call_account_func(user, argv[2]);
+    
+    if(!strcmp(argv[2],"C"))
+    {
+        if((hi = loc_auth(argv[4], argv[5])))
+        {
+            /* Return a AC A */
+            putsock("%s " P10_ACCOUNT " %s A %s %lu", self->numeric, server->numeric , argv[3], hi->registered);
+
+        }
+        else
+        {
+            /* Return a AC D */
+            putsock("%s " P10_ACCOUNT " %s D %s", self->numeric, server->numeric , argv[3]);
+        }
+        return 1;
+    }
+    else if(!strcmp(argv[2],"R"))
+       call_account_func(user, argv[3]);
+    else
+        call_account_func(user, argv[2]); /* For backward compatability */
     return 1;
 }