Преглед на файлове

* Got rid of a bit of findanyidx() usage
* Reorganized disconnect_server() calls


svn: 602

Bryan Drewery преди 22 години
родител
ревизия
bd311938c2
променени са 11 файла, в които са добавени 50 реда и са изтрити 69 реда
  1. 1 1
      src/botmsg.c
  2. 1 1
      src/mod/module.h
  3. 1 4
      src/mod/notes.mod/notes.c
  4. 6 9
      src/mod/server.mod/server.c
  5. 1 1
      src/mod/server.mod/server.h
  6. 28 28
      src/mod/server.mod/servmsg.c
  7. 1 1
      src/modules.c
  8. 11 0
      src/net.c
  9. 0 4
      src/proto.h
  10. 0 10
      src/tcl.c
  11. 0 10
      src/tclhash.c

+ 1 - 1
src/botmsg.c

@@ -672,7 +672,7 @@ int add_note(char *to, char *from, char *msg, int idx, int echo)
   }
   if (idx == (-2))
     return NOTE_OK;		/* Error msg from a tandembot: don't store */
-  status = storenote(from, to, msg, dcc[idx].sock, NULL, 0);
+  status = storenote(from, to, msg, idx, NULL, 0);
   if (status < 0) status = NOTE_ERROR;
   else if (status == NOTE_AWAY) {
       /* User is away in all sessions -- just notify the user that a

+ 1 - 1
src/mod/module.h

@@ -258,7 +258,7 @@
 /* 128 - 131 */
 #define interp (*(Tcl_Interp **)(global[128]))
 #define now (*(time_t*)global[129])
-#define findanyidx ((int (*)(int))global[130])
+/* UNUSED 130 */
 #define findchan ((struct chanset_t *(*)(char *))global[131])
 /* 132 - 135 */
 #define dolimit ((int (*)(struct chanset_t *))global[132])

+ 1 - 4
src/mod/notes.mod/notes.c

@@ -190,7 +190,6 @@ static int storenote(char *argv1, char *argv2, char *argv3, int idx, char *who,
   struct userrec *ur;
   struct userrec *ur2;
 
-  idx = findanyidx(idx);
   if (who && bufsize > 0) who[0] = 0;
   ur = get_user_by_handle(userlist, argv2);
   if (ur && allow_fwd && (f1 = get_user(&USERENTRY_FWD, ur))) {
@@ -697,10 +696,8 @@ static void notes_hourly()
   }
 }
 
-static void away_notes(char *bot, int sock, char *msg)
+static void away_notes(char *bot, int idx, char *msg)
 {
-  int idx = findanyidx(sock);
-
   if (egg_strcasecmp(bot, botnetnick))
     return;
   if (msg && msg[0])

+ 6 - 9
src/mod/server.mod/server.c

@@ -15,6 +15,7 @@ extern struct cfg_entry CFG_OPTIMESLACK;
 static int checked_hostmask;	/* Used in request_op()/check_hostmask() cleared on connect */
 static int ctcp_mode;
 static int serv;		/* sock # of server currently */
+static int servidx;		/* idx of server */
 static int strict_host;		/* strict masking of hosts ? */
 static char newserver[121];	/* new server? */
 static int newserverport;	/* new server port? */
@@ -75,7 +76,7 @@ static int optimize_kicks;
 
 static void empty_msgq(void);
 static void next_server(int *, char *, unsigned int *, char *);
-static void disconnect_server(int);
+static void disconnect_server();
 static int calc_penalty(char *);
 static int fast_deq(int);
 static char *splitnicks(char **);
@@ -1403,10 +1404,7 @@ static void server_5minutely()
       /* Uh oh!  Never got pong from last time, five minutes ago!
        * Server is probably stoned.
        */
-      int servidx = findanyidx(serv);
-
-      disconnect_server(servidx);
-      lostdcc(servidx);
+      disconnect_server();
       putlog(LOG_SERV, "*", IRC_SERVERSTONED);
     } else if (!trying_server) {
       /* Check for server being stoned. */
@@ -1449,7 +1447,6 @@ static void server_die()
 static void server_report(int idx, int details)
 {
   char s1[64], s[128];
-  int servidx;
 
   if (server_online) {
     dprintf(idx, "    Online as: %s%s%s (%s)\n", botname,
@@ -1469,8 +1466,7 @@ static void server_report(int idx, int details)
       strcat(s, s1);
     }
   }
-  if ((trying_server || server_online) &&
-	((servidx = findanyidx(serv)) != (-1))) {
+  if ((trying_server || server_online) && (servidx != (-1))) {
     dprintf(idx, "    Server %s:%d %s\n", dcc[servidx].host, dcc[servidx].port,
 	    trying_server ? "(trying)" : s);
   } else
@@ -1531,7 +1527,7 @@ static Function server_table[] =
   /* 12 - 15 */
   (Function) match_my_nick,
   (Function) 0,
-  (Function) NULL,		/* fixfrom - moved to the core (drummer) */
+  (Function) & servidx,		/* int					*/
   (Function) & answer_ctcp,	/* int					*/
   /* 16 - 19 */
   (Function) & trigger_on_ignore, /* int				*/
@@ -1578,6 +1574,7 @@ char *server_start(Function *global_funcs)
    * globally.
    */
   serv = -1;
+  servidx = -1;
   strict_host = 1;
   botname[0] = 0;
   trying_server = 0L;

+ 1 - 1
src/mod/server.mod/server.h

@@ -23,7 +23,7 @@
 #define flud_ctcp_time (*(int*)(server_funcs[11]))
 /* 12 - 15 */
 #define match_my_nick ((int(*)(char *))server_funcs[12])
-/* #define fixfrom ((void (*)(char *))server_funcs[14]) -- moved to core */
+#define servidx (*(int *)(server_funcs[14]))
 #define answer_ctcp (*(int *)(server_funcs[15]))
 /* 16 - 19 */
 #define trigger_on_ignore (*(int *)(server_funcs[16]))

+ 28 - 28
src/mod/server.mod/servmsg.c

@@ -160,7 +160,7 @@ static int match_my_nick(char *nick)
 static int got001(char *from, char *msg)
 {
   struct server_list *x;
-  int i, servidx = findanyidx(serv);
+  int i;
   struct chanset_t *chan;
 
   /* Ok...param #1 of 001 = what server thinks my nick is */
@@ -246,12 +246,8 @@ static int got442(char *from, char *msg)
 static void nuke_server(char *reason)
 {
   if (serv >= 0) {
-    int servidx = findanyidx(serv);
-
-    if (reason && (servidx > 0))
-      dprintf(servidx, "QUIT :%s\n", reason);
-    disconnect_server(servidx);
-    lostdcc(servidx);
+    if (reason && (servidx > 0)) dprintf(servidx, "QUIT :%s\r\n", reason);
+    disconnect_server();
   }
 }
 
@@ -882,10 +878,7 @@ static int gotmode(char *from, char *msg)
       /* umode +r? - D0H dalnet uses it to mean something different */
       fixcolon(msg);
       if ((msg[0] == '+') && strchr(msg, 'r')) {
-	int servidx = findanyidx(serv);
-
-	putlog(LOG_MISC | LOG_JOIN, "*",
-	       "%s has me i-lined (jumping)", dcc[servidx].host);
+	putlog(LOG_MISC | LOG_JOIN, "*", "%s has me i-lined (jumping)", dcc[servidx].host);
 	nuke_server("i-lines suck");
       }
     }
@@ -893,14 +886,22 @@ static int gotmode(char *from, char *msg)
   return 0;
 }
 
-static void disconnect_server(int idx)
+static void disconnect_server()
 {
-  server_online = 0;
-  if (dcc[idx].sock >= 0)
-    killsock(dcc[idx].sock);
-  dcc[idx].sock = (-1);
-  serv = (-1);
-  botuserhost[0] = 0;
+	int idx;
+
+	if (server_online > 0) check_bind_event("disconnect-server");
+
+	server_online = 0;
+	if (servidx != -1 && dcc[servidx].sock >= 0) {
+		killsock(dcc[servidx].sock);
+		dcc[servidx].sock = (-1);
+	}
+	serv = -1;
+	botuserhost[0] = 0;
+	idx = servidx;
+	servidx = -1;
+	lostdcc(idx);
 }
 
 static void eof_server(int idx)
@@ -916,8 +917,7 @@ static void eof_server(int idx)
   }
 }
 #endif /* S_AUTH */
-  disconnect_server(idx);
-  lostdcc(idx);
+  disconnect_server();
 }
 
 static void display_server(int idx, char *buf)
@@ -932,7 +932,7 @@ static void kill_server(int idx, void *x)
 {
   module_entry *me;
 
-  disconnect_server(idx);
+  disconnect_server();
   if ((me = module_find("channels", 0, 0)) && me->funcs) {
     struct chanset_t *chan;
 
@@ -946,8 +946,7 @@ static void kill_server(int idx, void *x)
 static void timeout_server(int idx)
 {
   putlog(LOG_SERV, "*", "Timeout: connect to %s", dcc[idx].host);
-  disconnect_server(idx);
-  lostdcc(idx);
+  disconnect_server();
 }
 
 static void server_activity(int idx, char *msg, int len);
@@ -1141,7 +1140,6 @@ static void connect_server(void)
 {
   char pass[121], botserver[UHOSTLEN];
   static int oldserv = -1;
-  int servidx;
   unsigned int botserverport = 0;
 
   waiting_for_awake = 0;
@@ -1221,6 +1219,7 @@ static void connect_server(void)
 static void server_resolve_failure(int servidx)
 {
   serv = -1;
+  servidx = -1;
   resolvserv = 0;
   putlog(LOG_SERV, "*", "%s %s (%s)", IRC_FAILEDCONNECT, dcc[servidx].host,
 	 IRC_DNSFAILED);
@@ -1249,6 +1248,7 @@ static void server_resolve_success(int servidx)
     putlog(LOG_SERV, "*", "%s %s (%s)", IRC_FAILEDCONNECT, dcc[servidx].host,
 	   s);
     lostdcc(servidx);
+    servidx = -1;
     if (oldserv == curserv && !never_give_up)
       fatal("NO SERVERS WILL ACCEPT MY CONNECTION.", 0);
   } else {
@@ -1275,10 +1275,10 @@ static void server_resolve_success(int servidx)
     strcpy(botname, origbotname);
     /* Start alternate nicks from the beginning */
     altnick_char = 0;
-    if (pass[0])
-      dprintf(DP_MODE, "PASS %s\n", pass);
-    dprintf(DP_MODE, "NICK %s\n", botname);
-    dprintf(DP_MODE, "USER %s . . :%s\n", botuser, botrealname);
+
+    if (pass[0]) dprintf(DP_MODE, "PASS %s\r\n", pass);
+    dprintf(DP_MODE, "NICK %s\r\n", botname);
+    dprintf(DP_MODE, "USER %s localhost %s :%s\r\n", botuser, dcc[servidx].host, botrealname);
     /* Wait for async result now */
   }
 }

+ 1 - 1
src/modules.c

@@ -318,7 +318,7 @@ Function global_table[] =
   /* 128 - 131 */
   (Function) & interp,		 /* Tcl_Interp *			*/
   (Function) & now,		 /* time_t				*/
-  (Function) findanyidx,
+  (Function) 0,
   (Function) findchan,
   /* 132 - 135 */
   (Function) dolimit,

+ 11 - 0
src/net.c

@@ -1612,6 +1612,17 @@ void tputs(register int z, char *s, unsigned int len)
 //    free(s);
 }
 
+static int findanyidx(register int z)
+{
+  register int j;
+
+  for (j = 0; j < dcc_total; j++)
+    if (dcc[j].sock == z)
+      return j;
+  return -1;
+}
+
+
 /* tputs might queue data for sockets, let's dump as much of it as
  * possible.
  */

+ 0 - 4
src/proto.h

@@ -338,10 +338,6 @@ int sockoptions(int sock, int operation, int sock_options);
 int flush_inbuf(int idx);
 
 /* tcl.c */
-void protect_tcl();
-void unprotect_tcl();
-int findidx(int);
-int findanyidx(int);
 
 /* userent.c */
 void update_mod(char *, char *, char *, char *);

+ 0 - 10
src/tcl.c

@@ -70,16 +70,6 @@ int	    clientdata_stuff = 0;
 /* Prototypes for tcl */
 Tcl_Interp *Tcl_CreateInterp();
 
-int findidx(int z)
-{
-  int j;
-
-  for (j = 0; j < dcc_total; j++)
-    if ((dcc[j].sock == z) && (dcc[j].type->flags & DCT_VALIDIDX))
-      return j;
-  return -1;
-}
-
 static void botnet_change(char *new)
 {
   if (egg_strcasecmp(botnetnick, new)) {

+ 0 - 10
src/tclhash.c

@@ -239,16 +239,6 @@ int bind_entry_add(bind_table_t *table, const char *flags, const char *mask, con
 	return(0);
 }
 
-int findanyidx(register int z)
-{
-  register int j;
-
-  for (j = 0; j < dcc_total; j++)
-    if (dcc[j].sock == z)
-      return j;
-  return -1;
-}
-
 /* Execute a bind entry with the given argument list. */
 static int bind_entry_exec(bind_table_t *table, bind_entry_t *entry, void **al)
 {