erc-commit
[Top][All Lists]
Advanced

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

[Erc-commit] [commit][emacs22] Split erc-process-sentinel-2 from erc-pro


From: mwolson
Subject: [Erc-commit] [commit][emacs22] Split erc-process-sentinel-2 from erc-process-sentinel-1
Date: Sun, 14 Oct 2007 00:49:07 -0400

commit a3dcacd0b817d6ca18d3b96ae04515535ca71e0c
Author: Michael W. Olson <address@hidden>
Date:   Tue Aug 14 00:34:31 2007 -0400

    Split erc-process-sentinel-2 from erc-process-sentinel-1
    
    * erc-backend.el (erc-process-sentinel-2): New function split from
      erc-process-sentinel-1.

diff --git a/ChangeLog b/ChangeLog
index 38cfe66..1ad7eb7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,8 @@
        reconnect was not happening when erc-server-reconnect-attempts was
        t.  Call erc-server-reconnect-p only once per loop iteration.
        (erc-process-sentinel): Pass buffer to erc-process-sentinel-1.
+       (erc-process-sentinel-2): New function split from
+       erc-process-sentinel-1.
 
        * erc.el (erc-command-no-process-p): Fix bug: the return value of
        erc-extract-command-from-line is a list rather than a single
diff --git a/erc-backend.el b/erc-backend.el
index 9e5279e..1f2fc0c 100644
--- a/erc-backend.el
+++ b/erc-backend.el
@@ -610,6 +610,36 @@ EVENT is the message received from the closed connection 
process."
            ;; open-network-stream-nowait error for connection refused
            (not (string-match "^failed with code 111" event)))))
 
+(defun erc-process-sentinel-2 (event buffer)
+  "Called when `erc-process-sentinel-1' has detected an unexpected disconnect."
+  (with-current-buffer buffer
+    (let ((again t)
+          reconnect-p)
+      (while again
+        (setq again nil)
+        (setq reconnect-p (erc-server-reconnect-p event))
+        (erc-display-message nil 'error (current-buffer)
+                             (if reconnect-p 'disconnected
+                               'disconnected-noreconnect))
+        (if reconnect-p
+            (condition-case err
+                (progn
+                  (setq erc-server-reconnecting nil)
+                  (erc-server-reconnect)
+                  (setq erc-server-reconnect-count 0))
+              (error (when (buffer-live-p buffer)
+                       (set-buffer buffer)
+                       (when (integerp erc-server-reconnect-attempts)
+                         (setq erc-server-reconnect-count
+                               (1+ erc-server-reconnect-count)))
+                       ;; TODO: Make this use a one-time timer
+                       ;; instead of sit-for
+                       (sit-for erc-server-reconnect-timeout)
+                       (setq again t))))
+          ;; terminate, do not reconnect
+          (erc-display-message nil 'error (current-buffer)
+                               'terminated ?e event))))))
+
 (defun erc-process-sentinel-1 (event buffer)
   "Called when `erc-process-sentinel' has decided that we're disconnecting.
 Determine whether user has quit or whether erc has been terminated.
@@ -623,32 +653,7 @@ Conditionally try to reconnect and take appropriate 
action."
             (set-buffer-modified-p nil)
             (kill-buffer (current-buffer))))
       ;; unexpected disconnect
-      (let ((again t)
-            reconnect-p)
-        (while again
-          (setq again nil)
-          (setq reconnect-p (erc-server-reconnect-p event))
-          (erc-display-message nil 'error (current-buffer)
-                               (if reconnect-p 'disconnected
-                                 'disconnected-noreconnect))
-          (if reconnect-p
-              (condition-case err
-                  (progn
-                    (setq erc-server-reconnecting nil)
-                    (erc-server-reconnect)
-                    (setq erc-server-reconnect-count 0))
-                (error (when (buffer-live-p buffer)
-                         (set-buffer buffer)
-                         (when (integerp erc-server-reconnect-attempts)
-                           (setq erc-server-reconnect-count
-                                 (1+ erc-server-reconnect-count)))
-                         ;; TODO: Make this use a one-time timer
-                         ;; instead of sit-for
-                         (sit-for erc-server-reconnect-timeout)
-                         (setq again t))))
-            ;; terminate, do not reconnect
-            (erc-display-message nil 'error (current-buffer)
-                                 'terminated ?e event)))))))
+      (erc-process-sentinel-2 event buffer))))
 
 (defun erc-process-sentinel (cproc event)
   "Sentinel function for ERC process."




reply via email to

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