unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* Handling HTTP "Upgrade" requests
@ 2015-02-21 23:00 David Thompson
  2015-02-25  5:05 ` Nala Ginrut
  2015-03-04 10:51 ` Ludovic Courtès
  0 siblings, 2 replies; 7+ messages in thread
From: David Thompson @ 2015-02-21 23:00 UTC (permalink / raw)
  To: guile-devel

I've been tinkering with adding WebSockets[0] support to Guile's HTTP
arsenal.  The first blocking issue I've come across is that an HTTP
server must be able to detect the "Upgrade" header[1] and change
protocols.  In my case, once a client thread accepts a WebSocket
connection, it should speak the WebSocket protocol, not HTTP.

Here's an example of a backtrace that you'd see after a successful
WebSocket handshake, when the client tries to actually make use of the
socket:

    In ice-9/boot-9.scm:
       171:12  3 (with-throw-handler #t #<procedure 1720560 at web/...> #)
    In web/server/http.scm:
       126:17  2 (#<procedure 1720560 at web/server/http.scm:125:15 ()>)
    In web/request.scm:
       204:31  1 (read-request #<closed: file 0> ())
    In ice-9/boot-9.scm:
       106:20  0 (#<procedure 10ce380 at ice-9/boot-9.scm:97:6 (thr...> ...)
    ERROR: Bad request: Bad Request-Line: "\x81\x86B\x93�Q"

Does anyone have an idea about how to approach this problem?

Thanks in advance!

[0] http://www.websocket.org/
[1] http://en.wikipedia.org/wiki/HTTP/1.1_Upgrade_header

-- 
David Thompson
Web Developer - Free Software Foundation - http://fsf.org
GPG Key: 0FF1D807
Support the FSF: https://fsf.org/donate



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-03-11  3:55 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-21 23:00 Handling HTTP "Upgrade" requests David Thompson
2015-02-25  5:05 ` Nala Ginrut
2015-02-25 16:23   ` Dave Thompson
2015-02-26  7:51     ` Nala Ginrut
2015-03-10 20:59       ` Andy Wingo
2015-03-11  3:55         ` Nala Ginrut
2015-03-04 10:51 ` Ludovic Courtès

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).