]> jfr.im git - irc/thales.git/commitdiff
added support for NOQUIT
authormunsternet <munsternet>
Tue, 29 Jun 2004 10:05:18 +0000 (10:05 +0000)
committermunsternet <munsternet>
Tue, 29 Jun 2004 10:05:18 +0000 (10:05 +0000)
ChangeLog
src/actions.c
src/db.c
src/db.h
src/main.c

index c25a5bdbf981ea9096655bc93bee33eb2ea0527f..8abe71d62ee0a055a5ea6484afaa73d3f40f1198 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4 @@
+   - added support for Unreal and Bahamut's NOQUIT
 GNU Thales 1.0 (09/05/2004)
    - added a workaround for a possible unreal bug.
    - using autoconf 2.59 instead of autoconf 2.13.
index 4425164df793116806b1d0bc97c63fe0bf209b3c..30abe8104e2fc21a1a3aa9cf104e8deffdbfbe85 100644 (file)
@@ -487,12 +487,16 @@ void do_server(char *server, char *comment, char *linkedto)
 void do_squit(char *server)
 {
        server = db_escape(server);
+       
+       /* We guess which users are now offline (for NOQUIT support) */
+       db_offlineusers(db_getserver(server));  
        if (ServerCacheTime)
        {
                db_query("UPDATE " TBL_SERV
                                        " SET online=\"N\", lastsplit=NOW(),linkedto=NULL WHERE servid=\"%d\"",
                                        db_getserver(server));
                db_cleanserver();
+
        }
        else
        {
index b393e9d16011531735c78f9449c865809497d9f7..228d66ff5abfac21ec668037b491a2008e8538e0 100644 (file)
--- a/src/db.c
+++ b/src/db.c
@@ -521,3 +521,21 @@ void db_cleanuser()
                }
        }
 }
+
+void db_offlineusers(int servid)
+{
+       MYSQL_RES *resptr2;
+       char **res2;
+       
+       /* We select users that went on the splitted server and send them to the appropritate functions */
+       db_query("SELECT nick, nickid FROM " TBL_USER " WHERE servid=\"%d\"", servid);
+       resptr2 = mysql_store_result(myptr);
+       while ((res2 = mysql_fetch_row(resptr2)))
+       {
+               char *nick = db_escape(res2[0]);
+               int nickid = atoi(res2[1]);
+               db_removenick(nick);
+               db_removefromchans(nickid);
+               free(nick);
+       }
+}
index 3f71828e65f1d3a1918bad7d6f6d208f05cf2f0a..769043a9d13fc5c53164f82ad4ee5b91afb82904 100644 (file)
--- a/src/db.h
+++ b/src/db.h
@@ -46,6 +46,7 @@ void db_checkemptychan(int chanid, char *chan);
 void db_close();
 void db_cleanserver();
 void db_cleanuser();
+void db_offlineusers();
 int db_getlusers(int type);
 #define LUSERS_USERS 1
 #define LUSERS_USERSINV 2
index 41325953f2b8e3eb3144fe8553e083c76940a710..9d7caa807ea41771bb2639558d6fffc497da5bf3 100644 (file)
@@ -178,13 +178,14 @@ int main(int argc, char **argv)
        }
 #if defined(IRCD_UNREAL)
        send_cmd(NULL, "PROTOCTL NICKv2 SJOIN SJOIN2 SJ3");
+       send_cmd(NULL, "CAPAB NOQUIT");
 #endif
 #if defined(IRCD_HYBRID)
        send_cmd(NULL, "PASS %s :TS", RemotePassword);
        send_cmd(NULL, "CAPAB :HOPS TBURST");
 #elif defined (IRCD_BAHAMUT)
        send_cmd(NULL, "PASS %s :TS", RemotePassword);
-       send_cmd(NULL, "CAPAB TS3 SSJOIN NICKIP");
+       send_cmd(NULL, "CAPAB TS3 SSJOIN NICKIP NOQUIT");
 #elif defined (IRCD_IRCDRU)
        send_cmd(NULL, "PASS %s :TS", RemotePassword);
        send_cmd(NULL, "CAPAB TS3 SSJOIN 8BNCI NICKIP");