branch: externals/websocket
commit d46cacb8b1d2c8b8a97c4d606bad43a87a54d1c5
Author: Andrew Hyatt <ahy...@gmail.com>
Commit: Andrew Hyatt <ahy...@gmail.com>

    Add back in calling of websocket-close, this time more safely.
    
    This needs to be done because when the connection is suddently killed,
    the websocket would otherwise not be notified of being closed.
---
 websocket.el | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/websocket.el b/websocket.el
index b1ce52e12c..564e04178a 100644
--- a/websocket.el
+++ b/websocket.el
@@ -689,7 +689,11 @@ describing the problem with the frame.
      conn
      (lambda (process change)
        (let ((websocket (process-get process :websocket)))
-         (websocket-debug websocket "State change to %s" change))))
+         (websocket-debug websocket "State change to %s" change)
+         (when (and
+                (member (process-status process) '(closed failed exit signal))
+                (not (eq 'closed (websocket-ready-state websocket))))
+           (websocket-try-callback 'websocket-on-close 'on-close websocket)))))
     (set-process-query-on-exit-flag conn nil)
     (process-send-string conn
                          (format "GET %s HTTP/1.1\r\n"
@@ -843,7 +847,11 @@ connection, which should be kept in order to pass to
     (set-process-sentinel client
      (lambda (process change)
        (let ((websocket (process-get process :websocket)))
-         (websocket-debug websocket "State change to %s" change))))))
+         (websocket-debug websocket "State change to %s" change)
+         (when (and
+                (member (process-status process) '(closed failed exit signal))
+                (not (eq 'closed (websocket-ready-state websocket))))
+           (websocket-try-callback 'websocket-on-close 'on-close 
websocket)))))))
 
 (defun websocket-create-headers (url key protocol extensions)
   "Create connections headers for the given URL, KEY, PROTOCOL and EXTENSIONS.

Reply via email to