Procházet zdrojové kódy

* Add DP_CACHE for caching server information for use after restart

Bryan Drewery před 17 roky
rodič
revize
f504026bf2
3 změnil soubory, kde provedl 15 přidání a 2 odebrání
  1. 2 1
      src/dccutil.c
  2. 1 0
      src/dccutil.h
  3. 12 1
      src/mod/server.mod/server.c

+ 2 - 1
src/dccutil.c

@@ -301,11 +301,12 @@ dprintf(int idx, const char *format, ...)
       case DP_SERVER_NEXT:
       case DP_HELP_NEXT:
       case DP_DUMP:
+      case DP_CACHE:
         if (conf.bot->hub)
           break;
         len -= remove_crlf_r(buf);
 
-        if ((idx == DP_DUMP || floodless)) {
+        if ((idx == DP_DUMP || (floodless && idx != DP_CACHE))) {
          if (serv != -1) {
            if (debug_output)
              putlog(LOG_SRVOUT, "@", "[d->] %s", buf);

+ 1 - 0
src/dccutil.h

@@ -27,6 +27,7 @@ struct portmap {
 #define DP_SERVER_NEXT  0x7FF8
 #define DP_HELP_NEXT    0x7FF9
 #define DP_DUMP		0x8000
+#define DP_CACHE	0x8001
 
 
 

+ 12 - 1
src/mod/server.mod/server.c

@@ -122,7 +122,7 @@ bind_table_t *BT_ctcr = NULL, *BT_ctcp = NULL, *BT_msgc = NULL;
 
 /* Maximum messages to store in each queue. */
 static int maxqmsg = 300;
-static struct msgq_head mq, hq, modeq;
+static struct msgq_head mq, hq, modeq, cacheq;
 static int burst;
 
 #include "cmdsserv.c"
@@ -497,6 +497,7 @@ static void empty_msgq()
   msgq_clear(&modeq);
   msgq_clear(&mq);
   msgq_clear(&hq);
+  msgq_clear(&cacheq);
   burst = 0;
 }
 
@@ -544,6 +545,11 @@ void queue_server(int which, char *buf, int len)
       doublemsg = 1;
     break;
 
+  case DP_CACHE:
+    h = &cacheq;
+    tempq = cacheq;
+    break;
+
   default:
     putlog(LOG_MISC, "*", "!!! queuing unknown type to server!!");
     return;
@@ -632,6 +638,11 @@ void queue_server(int which, char *buf, int len)
     case DP_HELP_NEXT:
       putlog(LOG_SRVOUT, "@", "[!!h] %s", buf);
       break;
+#ifdef DEBUG
+    case DP_CACHE:
+      sdprintf("CACHE: %s", buf);
+      break;
+#endif
     }
   }