summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2010-01-25 13:49:23 -0500
committerChong Yidong <cyd@stupidchicken.com>2010-01-25 13:49:23 -0500
commit361bbf574b7ae0e0a3975307b8f00c355870a3e0 (patch)
treefe72731cbf34243917fc9d5c8e9586ad6486924b
parente2396d80cbf7e9d20c05eff44c1c8f04ecb9341c (diff)
downloademacs-361bbf574b7ae0e0a3975307b8f00c355870a3e0.tar.gz
Fix erc reconnection via non-default connectors (Bug#4958).
* erc-backend.el (erc-session-connector): New var. (erc-server-reconnect): Use it to reconnect via old connector (Bug#4958). * erc.el (erc-determine-parameters): Save erc-server-connect-function to erc-session-connector.
-rw-r--r--lisp/erc/ChangeLog9
-rw-r--r--lisp/erc/erc-backend.el10
-rw-r--r--lisp/erc/erc.el4
3 files changed, 20 insertions, 3 deletions
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 0ba18b68cfb..8daf590ee89 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,12 @@
+2010-01-25 Vivek Dasmohapatra <vivek@etla.org>
+
+ * erc-backend.el (erc-session-connector): New var.
+ (erc-server-reconnect): Use it to reconnect via old
+ connector (Bug#4958).
+
+ * erc.el (erc-determine-parameters): Save
+ erc-server-connect-function to erc-session-connector.
+
2009-11-03 Stefan Monnier <monnier@iro.umontreal.ca>
* erc.el (erc-display-line-1, erc-process-away):
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 1ab9467ab3a..8b533b4c255 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -130,6 +130,10 @@ Use `erc-current-nick' to access this.")
"The server name used to connect to for this session.")
(make-variable-buffer-local 'erc-session-server)
+(defvar erc-session-connector nil
+ "The function used to connect to this session (nil for the default).")
+(make-variable-buffer-local 'erc-session-connector)
+
(defvar erc-session-port nil
"The port used to connect to.")
(make-variable-buffer-local 'erc-session-port)
@@ -538,8 +542,10 @@ Make sure you are in an ERC buffer when running this."
(erc-set-active-buffer (current-buffer))
(setq erc-server-last-sent-time 0)
(setq erc-server-lines-sent 0)
- (erc-open erc-session-server erc-session-port erc-server-current-nick
- erc-session-user-full-name t erc-session-password))))
+ (let ((erc-server-connect-function (or erc-session-connector
+ 'open-network-stream)))
+ (erc-open erc-session-server erc-session-port erc-server-current-nick
+ erc-session-user-full-name t erc-session-password)))))
(defun erc-server-filter-function (process string)
"The process filter for the ERC server."
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index d2445414c83..b76f486f155 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -5654,11 +5654,13 @@ user input."
"Determine the connection and authentication parameters.
Sets the buffer local variables:
+- `erc-session-connector'
- `erc-session-server'
- `erc-session-port'
- `erc-session-full-name'
- `erc-server-current-nick'"
- (setq erc-session-server (erc-compute-server server)
+ (setq erc-session-connector erc-server-connect-function
+ erc-session-server (erc-compute-server server)
erc-session-port (or port erc-default-port)
erc-session-user-full-name (erc-compute-full-name name))
(erc-set-current-nick (erc-compute-nick nick)))