[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/websocket 6fa9830 07/16: Version 1.6, mostly fixes for
From: |
Stefan Monnier |
Subject: |
[elpa] externals/websocket 6fa9830 07/16: Version 1.6, mostly fixes for fragmented headers. |
Date: |
Fri, 27 Nov 2020 17:47:19 -0500 (EST) |
branch: externals/websocket
commit 6fa9830bc19d13bf1e925ea63fde0475a64a6975
Author: Andrew Hyatt <ahyatt@gmail.com>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>
Version 1.6, mostly fixes for fragmented headers.
* websocket.el (websocket-verify-response-code, websocket-outer-filter):
Fix handling of fragmented headers.
* websocket.el (websocket-server): Accept host for listening on.
* websocket-functional-test.el: Stop stopping the listener process on
Windows.
---
websocket-functional-test.el | 8 +++++++-
websocket.el | 39 ++++++++++++++++++++++++---------------
2 files changed, 31 insertions(+), 16 deletions(-)
diff --git a/websocket-functional-test.el b/websocket-functional-test.el
index 6a9481f..1bbd190 100644
--- a/websocket-functional-test.el
+++ b/websocket-functional-test.el
@@ -79,7 +79,10 @@
(websocket-close wstest-ws)
(assert (null (websocket-openp wstest-ws)))
-(stop-process wstest-server-proc)
+(if (not (eq system-type 'windows-nt))
+ ; Windows doesn't have support for the SIGSTP signal, so we'll just kill
+ ; the process.
+ (stop-process wstest-server-proc))
(kill-process wstest-server-proc)
;; Make sure the processes are closed. This happens asynchronously,
@@ -93,6 +96,8 @@
(when (>= (string-to-int (substring emacs-version 0 2)) 24)
(message "Testing with wss://echo.websocket.org")
+ (when (eq system-type 'windows-nt)
+ (message "Windows users must have gnutls DLLs in the emacs bin
directory."))
(setq wstest-ws
(websocket-open
"wss://echo.websocket.org"
@@ -123,6 +128,7 @@
(setq wstest-closed nil)
(setq server-conn (websocket-server
9998
+ :host 'local
:on-message (lambda (ws frame)
(message "Server received text!")
(websocket-send-text ws
diff --git a/websocket.el b/websocket.el
index 1b0b294..8cd51ae 100644
--- a/websocket.el
+++ b/websocket.el
@@ -4,7 +4,7 @@
;; Author: Andrew Hyatt <ahyatt@gmail.com>
;; Keywords: Communication, Websocket, Server
-;; Version: 1.5
+;; Version: 1.6
;;
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
@@ -450,10 +450,11 @@ ERR should be a cons of error symbol and error data."
The only acceptable one to websocket is responce code 101.
A t value will be returned on success, and an error thrown
if not."
- (string-match "HTTP/1.1 \\([[:digit:]]+\\)" output)
+ (unless (string-match "^HTTP/1.1 \\([[:digit:]]+\\)" output)
+ (signal 'websocket-invalid-header "Invalid HTTP status line"))
(unless (equal "101" (match-string 1 output))
- (signal 'websocket-received-error-http-response
- (string-to-number (match-string 1 output))))
+ (signal 'websocket-received-error-http-response
+ (string-to-number (match-string 1 output))))
t)
(defun websocket-parse-repeated-field (output field)
@@ -746,19 +747,21 @@ connection is invalid, the connection will be closed."
(setf (websocket-inflight-input websocket) nil)
;; If we've received the complete header, check to see if we've
;; received the desired handshake.
- (when (and (eq 'connecting (websocket-ready-state websocket))
- (setq header-end-pos (string-match "\r\n\r\n" text))
+ (when (and (eq 'connecting (websocket-ready-state websocket)))
+ (if (and (setq header-end-pos (string-match "\r\n\r\n" text))
(setq start-point (+ 4 header-end-pos)))
- (condition-case err
(progn
- (websocket-verify-response-code text)
- (websocket-verify-headers websocket text)
- (websocket-process-headers (websocket-url websocket) text))
- (error
- (websocket-close websocket)
- (signal (car err) (cdr err))))
- (setf (websocket-ready-state websocket) 'open)
- (websocket-try-callback 'websocket-on-open 'on-open websocket))
+ (condition-case err
+ (progn
+ (websocket-verify-response-code text)
+ (websocket-verify-headers websocket text)
+ (websocket-process-headers (websocket-url websocket) text))
+ (error
+ (websocket-close websocket)
+ (signal (car err) (cdr err))))
+ (setf (websocket-ready-state websocket) 'open)
+ (websocket-try-callback 'websocket-on-open 'on-open websocket))
+ (setf (websocket-inflight-input websocket) text)))
(when (eq 'open (websocket-ready-state websocket))
(websocket-process-input-on-open-ws
websocket (substring text (or start-point 0))))))
@@ -820,6 +823,11 @@ of populating the list of server extensions to WEBSOCKET."
(defun* websocket-server (port &rest plist)
"Open a websocket server on PORT.
+If the plist contains a `:host' HOST pair, this value will be
+used to configure the addresses the socket listens on. The symbol
+`local' specifies the local host. If unspecified or nil, the
+socket will listen on all addresses.
+
This also takes a plist of callbacks: `:on-open', `:on-message',
`:on-close' and `:on-error', which operate exactly as documented
in the websocket client function `websocket-open'. Returns the
@@ -833,6 +841,7 @@ connection, which should be kept in order to pass to
:log 'websocket-server-accept
:filter-multibyte nil
:plist plist
+ :host (plist-get plist :host)
:service port)))
conn))
- [elpa] branch externals/websocket created (now f11d03a), Stefan Monnier, 2020/11/27
- [elpa] externals/websocket 350ea63 01/16: 2013-09-15 Andrew Hyatt <address@hidden>, Stefan Monnier, 2020/11/27
- [elpa] externals/websocket cd7a044 04/16: Version 1.4, fix for ping/pong & 32-bit emacs., Stefan Monnier, 2020/11/27
- [elpa] externals/websocket a5a25d4 08/16: * websocket/websocket.el (websocket-server-accept): Mark arg as unused, Stefan Monnier, 2020/11/27
- [elpa] externals/websocket 45d421d 09/16: Fix some quoting problems in doc strings, Stefan Monnier, 2020/11/27
- [elpa] externals/websocket e008e03 02/16: websocket.el: Set version to 1.2, after last set of server fixes., Stefan Monnier, 2020/11/27
- [elpa] externals/websocket 2aad0b2 03/16: Upgrade to version 1.3., Stefan Monnier, 2020/11/27
- [elpa] externals/websocket 50d62ac 05/16: Add ability to handle cookies., Stefan Monnier, 2020/11/27
- [elpa] externals/websocket 6872e74 06/16: Fix maintainer address, Stefan Monnier, 2020/11/27
- [elpa] externals/websocket 6fa9830 07/16: Version 1.6, mostly fixes for fragmented headers.,
Stefan Monnier <=
- [elpa] externals/websocket 3b21915 10/16: Update to emacs-websocket version 1.8., Stefan Monnier, 2020/11/27
- [elpa] externals/websocket ba4334b 11/16: Remove use of string-make-unibyte and other cleanups., Stefan Monnier, 2020/11/27
- [elpa] externals/websocket 65b3e1c 12/16: Port websocket to bleeding-edge 32-bit Emacs, Stefan Monnier, 2020/11/27
- [elpa] externals/websocket bc57ded 15/16: Upgrade websocket library to version 1.11.1., Stefan Monnier, 2020/11/27
- [elpa] externals/websocket 8d540d4 13/16: websocket: Version 1.9, custom header support., Stefan Monnier, 2020/11/27
- [elpa] externals/websocket c4d8d58 14/16: Fix confusing documentation string in websocket library., Stefan Monnier, 2020/11/27
- [elpa] externals/websocket f11d03a 16/16: Allow websocket accept header variants., Stefan Monnier, 2020/11/27