[Top][All Lists]
[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."
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Erc-commit] [commit][emacs22] Split erc-process-sentinel-2 from erc-process-sentinel-1,
mwolson <=