From 146fc4507cead23d2b53f0088af2d232d8dec84b Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Wed, 10 Jul 2013 21:25:27 +0200 Subject: [PATCH] Use IPython 1.0-compatible "handshake" IPython changed the way to start channel [1]. fixes #121 [1] see commit ipython/ipython@24dcb6ba48453c74b10fb0772058ca65503222c8 in ipython/ipython#3089 --- lisp/ein-kernel.el | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/lisp/ein-kernel.el b/lisp/ein-kernel.el index 8d6a112e..e8e293f8 100644 --- a/lisp/ein-kernel.el +++ b/lisp/ein-kernel.el @@ -176,11 +176,14 @@ See: https://github.com/ipython/ipython/pull/3307" The kernel will no longer be responsive."))) -(defun ein:kernel-send-cookie (channel host) +(defun ein:kernel-send-cookie (channel kernel) ;; cookie can be an empty string for IPython server with no password, ;; but something must be sent to start channel. - (let ((cookie (ein:query-get-cookie host "/"))) - (ein:websocket-send channel cookie))) + (let* ((url-or-port (ein:$kernel-url-or-port kernel)) + (host (if (stringp url-or-port) url-or-port ein:url-localhost)) + (cookie (ein:query-get-cookie host "/")) + (session-id (ein:$kernel-session-id kernel))) + (ein:websocket-send channel (format "%s:%s" session-id cookie)))) (defun ein:kernel--ws-closed-callback (websocket kernel arg) @@ -214,14 +217,9 @@ See: https://github.com/ipython/ipython/pull/3307" do (setf (ein:$websocket-onclose-args c) (list kernel onclose-arg)) do (setf (ein:$websocket-onopen c) (lexical-let ((channel c) - (kernel kernel) - (host (let (url-or-port - (ein:$kernel-url-or-port kernel)) - (if (stringp url-or-port) - url-or-port - ein:url-localhost)))) + (kernel kernel)) (lambda () - (ein:kernel-send-cookie channel host) + (ein:kernel-send-cookie channel kernel) ;; run `ein:$kernel-after-start-hook' if both ;; channels are ready. (when (ein:kernel-live-p kernel)