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

    Handle on-close for all varieties of websocket closings.
    
    This brings the actual behavior in line with what the docs say it does.
---
 websocket.el | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/websocket.el b/websocket.el
index b1d8e6fe5e..b1ce52e12c 100644
--- a/websocket.el
+++ b/websocket.el
@@ -550,6 +550,7 @@ connecting or open."
 (defun websocket-close (websocket)
   "Close WEBSOCKET and erase all the old websocket data."
   (websocket-debug websocket "Closing websocket")
+  (websocket-try-callback 'websocket-on-close 'on-close websocket)
   (when (websocket-openp websocket)
     (websocket-send websocket
                     (make-websocket-frame :opcode 'close
@@ -688,10 +689,7 @@ describing the problem with the frame.
      conn
      (lambda (process change)
        (let ((websocket (process-get process :websocket)))
-         (websocket-debug websocket
-                          "State change to %s" change)
-         (unless (eq 'closed (websocket-ready-state websocket))
-           (websocket-try-callback 'websocket-on-close 'on-close websocket)))))
+         (websocket-debug websocket "State change to %s" change))))
     (set-process-query-on-exit-flag conn nil)
     (process-send-string conn
                          (format "GET %s HTTP/1.1\r\n"
@@ -845,11 +843,7 @@ 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)
-         (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)))))))
+         (websocket-debug websocket "State change to %s" change))))))
 
 (defun websocket-create-headers (url key protocol extensions)
   "Create connections headers for the given URL, KEY, PROTOCOL and EXTENSIONS.

Reply via email to