mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-07-03 11:16:36 +02:00
better error handling in http-server request parsing
This commit is contained in:
parent
24d1f6a8a5
commit
8597c3eda5
3 changed files with 29 additions and 16 deletions
|
@ -40,7 +40,19 @@
|
|||
(cond
|
||||
((= 2 (length ls))
|
||||
(let ((request
|
||||
(make-request command (car ls) (cadr ls) in out sock addr)))
|
||||
(protect
|
||||
(exn
|
||||
(else
|
||||
;; error parsing headers, can't use servlet-respond
|
||||
(log-error "request error: " exn ls
|
||||
(sockaddr-name (address-info-address addr)))
|
||||
(servlet-write-status out 500 "Internal server error")
|
||||
(mime-write-headers `((Status . "500")) out)
|
||||
(display "\r\n" out)
|
||||
#f))
|
||||
(make-request command (car ls) (cadr ls) in out sock addr))))
|
||||
(cond
|
||||
(request
|
||||
(log-info `(request: ,command ,(car ls) ,(cadr ls)
|
||||
,(request-headers request)))
|
||||
(protect (exn
|
||||
|
@ -49,7 +61,7 @@
|
|||
(print-stack-trace exn)
|
||||
(servlet-respond request 500 "Internal server error")))
|
||||
(let restart ((request request))
|
||||
(servlet cfg request servlet-bad-request restart)))))
|
||||
(servlet cfg request servlet-bad-request restart)))))))
|
||||
(else
|
||||
(let ((request (make-request command #f #f in out sock addr)))
|
||||
(servlet-respond request 400 "bad request")))))))))
|
||||
|
|
|
@ -9,10 +9,11 @@
|
|||
http-regexp-servlet http-path-regexp-servlet http-uri-regexp-servlet
|
||||
http-host-regexp-servlet http-redirect-servlet http-rewrite-servlet
|
||||
http-cgi-bin-dir-servlet http-scheme-script-dir-servlet)
|
||||
(import (scheme time) (srfi 39) (srfi 95)
|
||||
(import
|
||||
(scheme time) (srfi 39) (srfi 95)
|
||||
(chibi) (chibi mime) (chibi regexp) (chibi pathname) (chibi uri)
|
||||
(chibi filesystem) (chibi io) (chibi string) (chibi process)
|
||||
(chibi net server) (chibi net server-util) (chibi net servlet)
|
||||
(chibi net) (chibi net server) (chibi net server-util) (chibi net servlet)
|
||||
(chibi app) (chibi ast) (chibi config) (chibi log) (chibi memoize)
|
||||
(chibi temp-file))
|
||||
(include "http-server.scm"))
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
request-uri-string request-with-uri request-path
|
||||
copy-request make-request make-cgi-request
|
||||
;; servlets
|
||||
servlet-write servlet-respond servlet-parse-body!
|
||||
servlet-write servlet-write-status servlet-respond servlet-parse-body!
|
||||
make-status-servlet servlet-handler servlet-run
|
||||
servlet-bad-request)
|
||||
(import
|
||||
|
|
Loading…
Add table
Reference in a new issue