Skip to content

Commit

Permalink
Merge pull request #53 from yuya373/fix-for-emacs-25
Browse files Browse the repository at this point in the history
Ensure handshake is performed when nowait is not supported.
  • Loading branch information
ahyatt committed Apr 22, 2018
2 parents e9d148f + 607355d commit de26889
Showing 1 changed file with 14 additions and 14 deletions.
28 changes: 14 additions & 14 deletions websocket.el
Original file line number Diff line number Diff line change
Expand Up @@ -730,8 +730,7 @@ to the websocket protocol.
conn
(websocket-sentinel url conn key protocols extensions custom-header-alist nowait))
(set-process-query-on-exit-flag conn nil)
(unless nowait
(websocket-handshake url conn key protocols extensions custom-header-alist))
(websocket-ensure-handshake url conn key protocols extensions custom-header-alist)
websocket))

(defun websocket-sentinel (url conn key protocols extensions custom-header-alist nowait)
Expand All @@ -740,25 +739,26 @@ to the websocket protocol.
(websocket-debug websocket "State change to %s" change)
(let ((status (process-status process)))
(when (and nowait (eq status 'open))
(websocket-handshake url conn key protocols extensions custom-header-alist))
(websocket-ensure-handshake url conn key protocols extensions custom-header-alist))

(when (and (member status '(closed failed exit signal))
(not (eq 'closed (websocket-ready-state websocket))))
(websocket-try-callback 'websocket-on-close 'on-close websocket))))))

(defun websocket-handshake (url conn key protocols extensions custom-header-alist)
(defun websocket-ensure-handshake (url conn key protocols extensions custom-header-alist)
(let ((url-struct (url-generic-parse-url url))
(websocket (process-get conn :websocket)))
(process-send-string conn
(format "GET %s HTTP/1.1\r\n"
(let ((path (url-filename url-struct)))
(if (> (length path) 0) path "/"))))
(websocket-debug websocket "Sending handshake, key: %s, acceptance: %s"
key (websocket-accept-string websocket))
(process-send-string conn
(websocket-create-headers
url key protocols extensions custom-header-alist))
(websocket-debug websocket "Websocket opened")))
(when (and (eq 'connecting (websocket-ready-state websocket))
(eq 'open (process-status conn)))
(process-send-string conn
(format "GET %s HTTP/1.1\r\n"
(let ((path (url-filename url-struct)))
(if (> (length path) 0) path "/"))))
(websocket-debug websocket "Sending handshake, key: %s, acceptance: %s"
key (websocket-accept-string websocket))
(process-send-string conn
(websocket-create-headers
url key protocols extensions custom-header-alist)))))

(defun websocket-process-headers (url headers)
"On opening URL, process the HEADERS sent from the server."
Expand Down

0 comments on commit de26889

Please sign in to comment.