httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ed <ed-h...@s5h.net>
Subject Re: what should be done in a vhost_db module?
Date Fri, 04 Apr 2008 18:48:42 GMT
On Fri, 04 Apr 2008 11:59:08 +0200
Robert Schulze <rs@bytecamp.net> wrote:

> Hi,
> 
> I'm currently working on a module to create virtualhosts on the fly
> out of a cdb-database file.
> 
> I looked at some module which do basically the same with other data 
> sources. What I now wonder is, what else I have to do except for
> setting the r->filename and maybe some script-alias-foo.
> 
> In one module I saw the following:
> 
> 8<--------------------------------------------------------------------
> 
> request_rec *top = (r->main)?r->main:r;
> 
> /* ... */
> 
> top->server->server_hostname = apr_pstrdup (top->pool, hostname);
> 
> r->parsed_uri.hostinfo =
> apr_pstrdup(r->pool,r->server->server_hostname);
> 
> r->parsed_uri.hostname =
> apr_pstrdup(r->pool,r->server->server_hostname);
> 
> 8<--------------------------------------------------------------------
> 
> and thats exactly where I got some problems.
> I sometimes noticed, that the virtual host name in /server-status/ 
> contained only weird characters, which I think is a result of freeing
> a buffer which is currently in use.
> I think the problem is the wrong pool for allocating space for the 
> server_hostname.
> 
> I thought I fixed that with this solution:
> 
> 8<--------------------------------------------------------------------
> 
> if(r->hostname!=NULL)
>          {
>          r->server->server_hostname =
> apr_pstrdup(r->connection->pool, r->hostname);
>          r->parsed_uri.hostinfo = 
> apr_pstrdup(r->pool,r->server->server_hostname);
>          r->parsed_uri.hostname = 
> apr_pstrdup(r->pool,r->server->server_hostname);
>          }
> 
> 8<--------------------------------------------------------------------
> 
> But that didn't fix the problem completely.
> 
> My question now: do I have to set server->server_hostname and if so, 
> from which pool should I allocate the memory from?
> 
> with kind regards,
> 
> Robert Schulze

I'm not sure that I understand what you're doing here by creating
virtual hosts on the fly, do you mean in real time to the database of
virtual hosts updating - that would perhaps be a lot of work that isn't
normally required during the request, why not signal the apache server
to reload it's config when the db changes?

Are you doing this to save memory? Maybe mod_safeinclude would be of
some use to you, which does populate virtual hosts from a DB.

-- 
The PRI to Alderan is strobing because of Brad White.
Tech Support is taking a percodan.
:: http://www.s5h.net/ :: http://www.s5h.net/gpg.html

Mime
View raw message