You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Brian McCallister <br...@skife.org> on 2009/03/01 02:37:52 UTC
Re: patch for handling headers_in and headers_out as tables in
mod_lua
On Fri, Feb 27, 2009 at 2:55 AM, Bertrand Mansion <bm...@mamasam.net> wrote:
> By the way, for content-type, the dispatch function at the moment is:
> if (0 == apr_strnatcmp("content_type", key)) {
> const char *value = luaL_checkstring(L, 3);
> r->content_type = apr_pstrdup(r->pool, value);
> luaL_getmetatable(L, "Apache2.Request");
> lua_pushstring(L, value);
> lua_setfield(L, -2, "content_type");
> lua_pop(L, 1);
> return 0;
> }
> Shouldn't it use ap_set_content_type() instead ?
It should, in fact, thanks. Just checked in the change.
> And I find it weird that, now, to get 'document root', you have to
> call r:document_root() instead of r.document_root as it was before.
> That's because the dispatch is set like this:
> apr_hash_set(dispatch, "document_root", APR_HASH_KEY_STRING,
> makefun(&req_document_root, APL_REQ_FUNTYPE_LUACFUN, p));
>
> It could be just:
> apr_hash_set(dispatch, "document_root", APR_HASH_KEY_STRING,
> makefun(&req_content_encoding_field, APL_REQ_FUNTYPE_STRING,
> p));
Agreed, this is much nicer syntax. Applied this change as well. Thanks!
>
> --
> Bertrand Mansion
> Mamasam
>
Re: patch for handling headers_in and headers_out as tables in
mod_lua
Posted by Bertrand Mansion <bm...@mamasam.net>.
On Sun, Mar 1, 2009 at 2:37 AM, Brian McCallister <br...@skife.org> wrote:
> On Fri, Feb 27, 2009 at 2:55 AM, Bertrand Mansion <bm...@mamasam.net> wrote:
>
>> And I find it weird that, now, to get 'document root', you have to
>> call r:document_root() instead of r.document_root as it was before.
>> That's because the dispatch is set like this:
>> apr_hash_set(dispatch, "document_root", APR_HASH_KEY_STRING,
>> makefun(&req_document_root, APL_REQ_FUNTYPE_LUACFUN, p));
>>
>> It could be just:
>> apr_hash_set(dispatch, "document_root", APR_HASH_KEY_STRING,
>> makefun(&req_content_encoding_field, APL_REQ_FUNTYPE_STRING,
>> p));
>
> Agreed, this is much nicer syntax. Applied this change as well. Thanks!
Hi Brian, the change does not compile on my box, I suggest this instead:
static char *req_document_root(request_rec *r)
{
const char *docroot = ap_document_root(r);
return apr_pstrdup(r->pool, docroot ? docroot : "");
}
Thanks,
--
Bertrand Mansion
Mamasam
Re: patch for handling headers_in and headers_out as tables in mod_lua
Posted by Brian McCallister <br...@skife.org>.
--
Please forgive typos, sent from phone.
On Mar 2, 2009, at 5:34 AM, Brian Akins <br...@akins.org> wrote:
> On 2/28/09 8:37 PM, "Brian McCallister" <br...@skife.org> wrote:
>
>>> It could be just:
>>> apr_hash_set(dispatch, "document_root", APR_HASH_KEY_STRING,
>>> makefun(&req_content_encoding_field,
>>> APL_REQ_FUNTYPE_STRING,
>>> p));
>>
>
>
> Also, couldn't we build the dispatch has once, and only once, and
> then just
> associated it with each apache2.request? This seems more efficient
> than
> building this array every time. It would also be nice to use a
> dispatch
> hash for "setters" as well.
Agreed. I'm thinking we can store the dispatch tables on the server
conf, that way we can allow them to be modified.
> --Brian
>
>
Re: patch for handling headers_in and headers_out as tables in
mod_lua
Posted by Brian Akins <br...@akins.org>.
On 2/28/09 8:37 PM, "Brian McCallister" <br...@skife.org> wrote:
>> It could be just:
>> apr_hash_set(dispatch, "document_root", APR_HASH_KEY_STRING,
>> makefun(&req_content_encoding_field, APL_REQ_FUNTYPE_STRING,
>> p));
>
Also, couldn't we build the dispatch has once, and only once, and then just
associated it with each apache2.request? This seems more efficient than
building this array every time. It would also be nice to use a dispatch
hash for "setters" as well.
--Brian