Fixing problem reported by Robby.

Contracts intefere with safety marks.
This commit is contained in:
Jay McCarthy 2010-09-16 12:41:44 -06:00
parent ab5a9ff1e8
commit 4f49658835
3 changed files with 36 additions and 6 deletions

View File

@ -161,4 +161,18 @@
"Quiz Results")
; XXX test web-extras.rkt - redirect/get
(let* ([x (random 500)]
[xs (string->bytes/utf-8 (number->string x))]
[y (random 500)]
[ys (string->bytes/utf-8 (number->string y))])
(test-equal?
"redirectget.rkt"
(let* ([d (mkd (build-path example-servlets "redirectget.rkt"))]
[k0 (simple-xpath* '(form #:action) (call d url0 empty))]
[k1 (call d k0 empty)])
k1)
""))
))

View File

@ -0,0 +1,17 @@
#lang web-server
(define interface-version 'stateless)
(provide start interface-version)
(define (start request)
(define request
(send/suspend
(λ (url)
`(html
(head)
(body
(form ((action ,url))
(input ((type "submit") (value "submit")))))))))
(redirect/get)
(send/suspend
(λ (_)
`(html "bye"))))

View File

@ -21,7 +21,8 @@
send/suspend/dispatch
send/suspend/hidden
send/suspend/url
send/suspend/url/dispatch)
send/suspend/url/dispatch
redirect/get)
(provide/contract
[make-stateless-servlet
@ -37,7 +38,8 @@
[send/suspend/hidden ((url? list? . -> . response/c) . -> . request?)]
[send/suspend/url ((url? . -> . response/c) . -> . request?)]
[send/suspend/url/dispatch ((((request? . -> . any/c) . -> . url?) . -> . response/c)
. -> . any/c)])
. -> . any/c)]
[redirect/get (-> request?)])
;; initial-servlet : (request -> response) -> (request -> response/c)
(define (initialize-servlet start)
@ -113,10 +115,7 @@
[(struct binding:form (id kont))
((stuffer-out stuffer)
(read (open-input-bytes kont)))]
[_ #f])))
(provide/contract
[redirect/get (-> request?)])
[_ #f])))
(define (redirect/get)
(send/suspend/url (lambda (k-url) (redirect-to (url->string k-url) temporarily))))