erc-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Erc-commit] [commit][emacs22] Fix infinite reconnect bug when server er


From: mwolson
Subject: [Erc-commit] [commit][emacs22] Fix infinite reconnect bug when server error occurs
Date: Sun, 14 Oct 2007 00:48:44 -0400

commit c343782579602ebd40d02c267ca85823bc6ca846
Author: Michael Olson <address@hidden>
Date:   Mon Jan 22 01:49:04 2007 +0000

    Fix infinite reconnect bug when server error occurs
    
    * erc-backend.el (erc-server-error-occurred): New variable that indicates
      when an error has been signaled by the server.  This should fix an
      infinite reconnect bug when giving some servers a bogus :full-name.
      Thanks to Angelina Carlton for the report.
      (erc-server-connect): Initialize erc-server-error-occurred.
      (erc-server-reconnect-p): Use it.
      (ERROR): Set it.
    git-archimport-id: address@hidden/erc--main--0--patch-99

diff --git a/ChangeLog b/ChangeLog
index ce29520..2e8d3e5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2007-01-22  Michael Olson  <address@hidden>
 
+       * erc-backend.el (erc-server-error-occurred): New variable that
+       indicates when an error has been signaled by the server.  This
+       should fix an infinite reconnect bug when giving some servers a
+       bogus :full-name.  Thanks to Angelina Carlton for the report.
+       (erc-server-connect): Initialize erc-server-error-occurred.
+       (erc-server-reconnect-p): Use it.
+       (ERROR): Set it.
+
        * erc-services.el (erc-nickserv-alist): Alphabetize and add Ars
        and QuakeNet.  Standardize look of entries.  Fix type mismatch
        error in customize interface.
diff --git a/erc-backend.el b/erc-backend.el
index 477354b..8122c8a 100644
--- a/erc-backend.el
+++ b/erc-backend.el
@@ -201,6 +201,10 @@ active, use the `erc-server-process-alive' function 
instead.")
   "Non-nil if the user is denied access because of a server ban.")
 (make-variable-buffer-local 'erc-server-banned)
 
+(defvar erc-server-error-occurred nil
+  "Non-nil if the user triggers some server error.")
+(make-variable-buffer-local 'erc-server-error-occurred)
+
 (defvar erc-server-lines-sent nil
   "Line counter.")
 (make-variable-buffer-local 'erc-server-lines-sent)
@@ -495,6 +499,7 @@ We will store server variables in the buffer given by 
BUFFER."
         (setq erc-server-quitting nil)
         (setq erc-server-timed-out nil)
         (setq erc-server-banned nil)
+        (setq erc-server-error-occurred nil)
         (let ((time (erc-current-time)))
           (setq erc-server-last-sent-time time)
           (setq erc-server-last-ping-time time)
@@ -570,6 +575,7 @@ Make sure you are in an ERC buffer when running this."
 EVENT is the message received from the closed connection process."
   (and erc-server-auto-reconnect
        (not erc-server-banned)
+       (not erc-server-error-occurred)
        ;; make sure we don't infinitely try to reconnect, unless the
        ;; user wants that
        (or (eq erc-server-reconnect-attempts t)
@@ -1098,6 +1104,7 @@ add things to `%s' instead."
 
 (define-erc-response-handler (ERROR)
   "Handle an ERROR command from the server." nil
+  (setq erc-server-error-occurred t)
   (erc-display-message
    parsed 'error nil 'ERROR
    ?s (erc-response.sender parsed) ?c (erc-response.contents parsed)))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]