mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +02:00
http-read robustness
* module/web/server/http.scm (http-read): Record the client index in more cases in which code could throw an error.
This commit is contained in:
parent
c7857da63a
commit
ec3c7570d8
1 changed files with 4 additions and 2 deletions
|
@ -84,6 +84,7 @@
|
|||
(lp (1- (poll-set-nfds poll-set))))
|
||||
((not (zero? (logand revents *error-events*)))
|
||||
;; An error.
|
||||
(set-http-poll-idx! server idx)
|
||||
(throw 'interrupt))
|
||||
(else
|
||||
;; A new client. Add to set, poll, and loop.
|
||||
|
@ -104,6 +105,9 @@
|
|||
;; it. Remove it from the poll set.
|
||||
(else
|
||||
(let ((port (poll-set-remove! poll-set idx)))
|
||||
;; Record the next index in all cases, in case the EOF check
|
||||
;; throws an error.
|
||||
(set-http-poll-idx! server (1- idx))
|
||||
(cond
|
||||
((eof-object? (peek-char port))
|
||||
;; EOF.
|
||||
|
@ -111,8 +115,6 @@
|
|||
(lp (1- idx)))
|
||||
(else
|
||||
;; Otherwise, try to read a request from this port.
|
||||
;; Record the next index.
|
||||
(set-http-poll-idx! server (1- idx))
|
||||
(with-throw-handler
|
||||
#t
|
||||
(lambda ()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue