web-server/servlet/web seems to inhibit stateless operation
Nobody has claimed this yet.
- Dominant language
- Racket
- Stars
- 99
- Forks
- 48
- PR merge metrics
- No merged PRs in 30d
Description
I had a rough time getting stateless servers to work. The culprit appears to be web-server/servlet/web. Include it and stateless does not work, exclude it and it works quite seamlessly on a non-trivial system. See
https://discord.com/channels/571040468092321801/1128483815787077692
for a small, illustrative example, reproduced below.
However, I don't see anything in the documentation for either stateless or web-server/servlet/web that indicate this. It should be documented in both places.
Sample program:
#lang web-server
(require web-server/servlet-env
web-server/servlet/web)
(define (start req)
(println "starting")
(let ([r (send/suspend
(lambda (k-url)
(response/xexpr
`(html
(body
(form ([action ,k-url])
(input ([type "text"] [id "uid"] [name "uid"]))))))))])
(println "there")
(let ([uid (extract-binding/single 'uid (request-bindings r))])
(if (member uid '("hello"))
(response/xexpr `(html (body (p "yes"))))
(response/xexpr `(html (body (p "no"))))))))
(serve/servlet start
#:listen-ip #f
#:stateless? #t)
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the documentation for stateless operation and the web-server/servlet/web module, then compare it with the reproduced sample using #:stateless? #t. Document the interaction and its practical effect in both relevant locations. Done means both topics clearly describe this behavior and the sample provides enough context to understand it.
Written by the indexing model from the issue text.
Assessment
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100