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
|
(cond
|
||||||
((= 2 (length ls))
|
((= 2 (length ls))
|
||||||
(let ((request
|
(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)
|
(log-info `(request: ,command ,(car ls) ,(cadr ls)
|
||||||
,(request-headers request)))
|
,(request-headers request)))
|
||||||
(protect (exn
|
(protect (exn
|
||||||
|
@ -49,7 +61,7 @@
|
||||||
(print-stack-trace exn)
|
(print-stack-trace exn)
|
||||||
(servlet-respond request 500 "Internal server error")))
|
(servlet-respond request 500 "Internal server error")))
|
||||||
(let restart ((request request))
|
(let restart ((request request))
|
||||||
(servlet cfg request servlet-bad-request restart)))))
|
(servlet cfg request servlet-bad-request restart)))))))
|
||||||
(else
|
(else
|
||||||
(let ((request (make-request command #f #f in out sock addr)))
|
(let ((request (make-request command #f #f in out sock addr)))
|
||||||
(servlet-respond request 400 "bad request")))))))))
|
(servlet-respond request 400 "bad request")))))))))
|
||||||
|
|
|
@ -9,10 +9,11 @@
|
||||||
http-regexp-servlet http-path-regexp-servlet http-uri-regexp-servlet
|
http-regexp-servlet http-path-regexp-servlet http-uri-regexp-servlet
|
||||||
http-host-regexp-servlet http-redirect-servlet http-rewrite-servlet
|
http-host-regexp-servlet http-redirect-servlet http-rewrite-servlet
|
||||||
http-cgi-bin-dir-servlet http-scheme-script-dir-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) (chibi mime) (chibi regexp) (chibi pathname) (chibi uri)
|
||||||
(chibi filesystem) (chibi io) (chibi string) (chibi process)
|
(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 app) (chibi ast) (chibi config) (chibi log) (chibi memoize)
|
||||||
(chibi temp-file))
|
(chibi temp-file))
|
||||||
(include "http-server.scm"))
|
(include "http-server.scm"))
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
request-uri-string request-with-uri request-path
|
request-uri-string request-with-uri request-path
|
||||||
copy-request make-request make-cgi-request
|
copy-request make-request make-cgi-request
|
||||||
;; servlets
|
;; 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
|
make-status-servlet servlet-handler servlet-run
|
||||||
servlet-bad-request)
|
servlet-bad-request)
|
||||||
(import
|
(import
|
||||||
|
|
Loading…
Add table
Reference in a new issue