[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/websocket 923e74d686 038/114: Merge pull request #40 fr
From: |
ELPA Syncer |
Subject: |
[elpa] externals/websocket 923e74d686 038/114: Merge pull request #40 from ilysym/fragmented-header |
Date: |
Wed, 15 Feb 2023 20:58:58 -0500 (EST) |
branch: externals/websocket
commit 923e74d68658acc33cb1247e75edb0391c20f7cd
Merge: 19f9b3b74f 6b43f7525f
Author: Andrew Hyatt <ahyatt@gmail.com>
Commit: Andrew Hyatt <ahyatt@gmail.com>
Merge pull request #40 from ilysym/fragmented-header
Correctly parse fragmented HTTP header
---
websocket-test.el | 9 ++++++---
websocket.el | 33 ++++++++++++++++++---------------
2 files changed, 24 insertions(+), 18 deletions(-)
diff --git a/websocket-test.el b/websocket-test.el
index 7068bd0672..db16ddbf8e 100644
--- a/websocket-test.el
+++ b/websocket-test.el
@@ -114,7 +114,9 @@
(eq 400 (cdr (should-error (websocket-verify-response-code "HTTP/1.1 400")
:type 'websocket-received-error-http-response))))
(should
- (eq 200 (cdr (should-error (websocket-verify-response-code "HTTP/1.1
200"))))))
+ (eq 200 (cdr (should-error (websocket-verify-response-code "HTTP/1.1
200")))))
+ (should-error (websocket-verify-response-code "HTTP/1.")
+ :type 'websocket-invalid-header))
(ert-deftest websocket-verify-headers ()
(let ((accept "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=")
@@ -420,8 +422,9 @@
(websocket frame)
(lexical-let ((frame frame))
(lambda () (push frame processed-frames))))
- (websocket-verify-response-code (output) t)
- (websocket-verify-headers (websocket output) t))
+ (websocket-verify-headers (websocket output) t)
+ (websocket-close (websocket)))
+ (websocket-outer-filter fake-ws "HTTP/1.1 101 Switching Protocols\r\n")
(websocket-outer-filter fake-ws "Sec-")
(should (eq (websocket-ready-state fake-ws) 'connecting))
(should-not open-callback-called)
diff --git a/websocket.el b/websocket.el
index 3b048da95c..49e8366b39 100644
--- a/websocket.el
+++ b/websocket.el
@@ -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))
+ (progn
+ (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))))))
- [elpa] externals/websocket 01c8d98f69 011/114: * websocket.el: Remove use of buffers in connections. This simplifies, (continued)
- [elpa] externals/websocket 01c8d98f69 011/114: * websocket.el: Remove use of buffers in connections. This simplifies, ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 111febe203 020/114: Fix `websocket-version': update to 1.3, ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 9aad2f754f 022/114: Add supports for <32 bit emacs., ELPA Syncer, 2023/02/15
- [elpa] externals/websocket dba6893ec5 023/114: Bump version to 1.4, ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 965fac0fe5 027/114: add markdown preview mode, ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 49a93b2218 028/114: Merge pull request #39 from ancane/master, ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 90b9f03da0 029/114: Correctly parse fragmented HTTP header, ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 8299e57a4c 033/114: Function test improvements for Windows: SIGSTP, ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 4f8ddb64bc 034/114: Merge pull request #43 from chwarr/func-test-windows-sigstp, ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 7422064ea6 035/114: Add a way to specify websocket-server listen host, ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 923e74d686 038/114: Merge pull request #40 from ilysym/fragmented-header,
ELPA Syncer <=
- [elpa] externals/websocket f7d3fb5409 045/114: Fix issue with handling multibyte characters., ELPA Syncer, 2023/02/15
- [elpa] externals/websocket ccbe93ac8b 049/114: Stop checking certs in functional test., ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 33d0406901 057/114: Reflow function documentation., ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 268a0726b8 062/114: execute handshake after process status moved to open, ELPA Syncer, 2023/02/15
- [elpa] externals/websocket c045acb374 039/114: Add test for fragmented headers., ELPA Syncer, 2023/02/15
- [elpa] externals/websocket f18bfea59b 043/114: Made functional tests compile cleanly., ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 23ec19933d 050/114: Various idiomatic changes., ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 99d3b3e695 053/114: need another sleep on my environment, ELPA Syncer, 2023/02/15
- [elpa] externals/websocket c193d6f867 058/114: Add ability for clients to pass custom headers., ELPA Syncer, 2023/02/15
- [elpa] externals/websocket 058e8f4696 059/114: Fix issue with missing \r\n when using custom headers., ELPA Syncer, 2023/02/15