Subject: Re: [boost] [GSoC] Opinions and suggestions for improving CGI library
From: Phil Endecott (spam_from_boost_dev_at_[hidden])
Date: 2009-03-28 08:50:00


Eugene Wee wrote:
> As suggested, I have uploaded my proposal draft to a web page:
> http://www.comp.nus.edu.sg/~weehke/gsoc/proposal2009.html

Hi Eugene,

Quoting from your web page:

> Session handling allows data to persist across requests. Each session
> has a unique session identifier, and stores an arbitrary number of
> name/value pairs. The name will be a string, while the value will
> be a serializable object. The session identifier could be propagated
> via a cookie, the query string, or a hidden form field. To avoid
> session fixation, session identifiers can be regenerated.
>
> At the moment, the CGI library lacks session handling entirely. My
> aim is to design a session handler interface that allows for pluggable
> storage formats: a (possibly memory mapped) file or a database table
> could be used to store the session's name/value pairs. As such, this
> part of the project will involve designing both the session interface
> and the session handler interface, and then an implementation will
> be made with at least one possible storage format.

Web applications have persistent data associated with sessions, but
they also have persistent data associated with e.g. a username or page,
etc. I would think that IFF the framework provides a good way to
access cookies, form variables etc AND handle the data storage
(database, Boost.Serialisation, Boost.Interprocess) THEN the user
should be allowed to plumb these together as they wish: there are many
possible combinations with no "one size fits all".

> Currently, multipart/form-data parsing is done with regular expressions.
> However, regular expressions are not adequate to describe the structure,
> hence this is difficult to read and maintain. I intend to re-implement
> multipart/form-data parsing by using Boost.Spirit.

multipart/form-data is basically MIME, so providing a library that can
also be used more generally would be useful. It would be a shame to
implement a MIME parser and then to hide it as an implementation detail
inside another library.

I have previously implemented a basic multipart/form-data parser using
"traditional" string manipulation (i.e. find, substr etc). It's not
clear to me that Boost.Spirit offers a significant benefit for this task.

Anyway, this is all important stuff that we should have in Boost. Go
for it.

Phil.