A web server with D

Sean Kelly sean at invisibleduck.org
Sun Jun 20 12:37:11 PDT 2010


Nick Sabalausky Wrote:

> "Sean Kelly" <sean at invisibleduck.org> wrote in message 
> >
> > Read the HTTP RFC, tear your hair out as you realize that the grammar 
> > isn't context-free
> 
> Really? It seems so simple (but of course, XML seems really simple at first 
> glance, too). Have an example?

I may have exaggerated a tad, but the issue I was thinking of is that the header values can contain pretty much anything--particularly cookies (no one follows the cookie RFC).  So it's not uncommon to see:

    Cookie: myval=thing1:thing2

And then of course the body is just a blob of whatever.  So you can't just tokenize an HTTP request the same way you would a D module, for example.  You have to know whether you're in the control line (GET /thingy HTTP/1.1), header key, header value, or body part.  What I've found so far is that it's easiest to simply break a request into control line, set of header key/value pairs (of which there can be duplicates of the same key), and body blob and then parse individual headers or the body separately as needed.  This is more efficient anyway I suppose.  It's just irksome that it seems necessary.


More information about the Digitalmars-d mailing list