Преглед изворни кода

* Return bind check result for dcc

Bryan Drewery пре 16 година
родитељ
комит
fbfdd1939e
4 измењених фајлова са 13 додато и 12 уклоњено
  1. 2 2
      src/auth.c
  2. 1 1
      src/auth.h
  3. 8 7
      src/core_binds.c
  4. 2 2
      src/core_binds.h

+ 2 - 2
src/auth.c

@@ -260,7 +260,7 @@ void makehash(struct userrec *u, const char *randstring, char *out, size_t out_s
   OPENSSL_cleanse(hash, sizeof(hash));
 }
 
-void check_auth_dcc(Auth *auth, const char *cmd, const char *par)
+int check_auth_dcc(Auth *auth, const char *cmd, const char *par)
 {
-  real_check_bind_dcc(cmd, auth->idx, par, auth);
+  return real_check_bind_dcc(cmd, auth->idx, par, auth);
 }

+ 1 - 1
src/auth.h

@@ -52,6 +52,6 @@ class Auth {
 
 void makehash(struct userrec *u, const char *randstring, char *out, size_t out_size);
 
-void check_auth_dcc(Auth *, const char *, const char *);
+int check_auth_dcc(Auth *, const char *, const char *);
 
 #endif /* !_AUTH_H */

+ 8 - 7
src/core_binds.c

@@ -167,12 +167,12 @@ bool check_aliases(int idx, const char *cmd, const char *args)
   return found;
 }
 
-void check_bind_dcc(const char *cmd, int idx, const char *text)
+int check_bind_dcc(const char *cmd, int idx, const char *text)
 {
-  real_check_bind_dcc(cmd, idx, text, NULL);
+  return real_check_bind_dcc(cmd, idx, text, NULL);
 }
 
-void real_check_bind_dcc(const char *cmd, int idx, const char *text, Auth *auth)
+int real_check_bind_dcc(const char *cmd, int idx, const char *text, Auth *auth)
 {
   struct flag_record fr = {FR_GLOBAL | FR_CHAN, 0, 0, 0 };
   bind_entry_t *entry = NULL;
@@ -218,13 +218,13 @@ void real_check_bind_dcc(const char *cmd, int idx, const char *text, Auth *auth)
               putlog(LOG_CMDS, "*", "$ #%s# %s **hidden** %s", dcc[idx].nick, entry->mask, p && *p ? p : "");
               putlog(LOG_MISC, "*", "%s attempted %s%s with missing or incorrect command password", dcc[idx].nick, settings.dcc_prefix, entry->mask);
               free(args);
-              return;
+              return 0;
             }
           } else {
             putlog(LOG_CMDS, "*", "! #%s# %s %s", dcc[idx].nick, cmd, args);
             dprintf(idx, "What?  You need '%shelp'\n", (dcc[idx].u.chat->channel >= 0) ? settings.dcc_prefix : "");
             free(args);
-            return;
+            return 0;
           }
         }
         break;
@@ -234,13 +234,13 @@ void real_check_bind_dcc(const char *cmd, int idx, const char *text, Auth *auth)
 
   if (entry && auth) {
     if (!(entry->cflags & AUTH))
-      return;
+      return 0;
   }
 
   hits = 0;
   bool log_bad = 0;
 
-  check_bind_hits(BT_dcc, cmd, &fr, &hits, idx, args);
+  int ret = check_bind_hits(BT_dcc, cmd, &fr, &hits, idx, args);
 
   if (hits != 1)
     log_bad = 1;
@@ -258,6 +258,7 @@ void real_check_bind_dcc(const char *cmd, int idx, const char *text, Auth *auth)
     putlog(LOG_CMDS, "*", "! #%s# %s %s", dcc[idx].nick, cmd, args);
 
   free(args);
+  return ret;
 }
 
 void check_bind_bot(const char *nick, const char *code, const char *param)

+ 2 - 2
src/core_binds.h

@@ -5,8 +5,8 @@
 
 void core_binds_init();
 void check_bind_time(struct tm *tm);
-void check_bind_dcc(const char *, int, const char *);
-void real_check_bind_dcc(const char *, int, const char *, Auth *);
+int check_bind_dcc(const char *, int, const char *);
+int real_check_bind_dcc(const char *, int, const char *, Auth *);
 void check_bind_bot(const char *, const char *, const char *);
 void check_bind_chon(char *, int);
 void check_bind_chof(char *, int);