[PATCH] httpd: Support configurable start page

Denys Vlasenko vda.linux at googlemail.com
Wed Oct 17 04:01:17 PDT 2007


On Wednesday 17 October 2007 10:56, Alex Landau wrote:
> --- Alex Landau <landau_alex at yahoo.com> wrote:
> 
> > Hi,
> > 
> > The attached patch adds an option to set the default page to display for a URL like
> > http://hostname/ instead of index.html. The option is compile-time selectable and the
> > filename is config-file choosable. The file may also be a CGI script (if CGI is
> > compiled
> > in).
> > 
> > Any comments?

I removed dup() below:

cgi_io_loop_and_exit(proxy_fd, dup(proxy_fd), length);

Is it needed?

Also I edited code parts which looked like "if ((A = expr) == B) ... ",
and removed trailing whitespace.

Here you allocate 8k buffer and copy there all headers from client:

        char *headers = xmalloc(IOBUF_SIZE);
        ...
                /* Read until blank line for HTTP version specified, else parse immediate */
                while (1) {
                        alarm(HEADER_READ_TIMEOUT);
                        if (!get_line())
                                break; /* EOF or error or empty line */
                        if (DEBUG)
                                bb_error_msg("header: '%s'", iobuf);
#if ENABLE_FEATURE_HTTPD_PROXY
                        if (headers_ptr - headers < IOBUF_SIZE) {
                                int len = strlen(iobuf);
                                if (len > IOBUF_SIZE - (headers_ptr - headers) - 2)
                                        len = IOBUF_SIZE - (headers_ptr - headers) - 2;
                                memcpy(headers_ptr, iobuf, len);
                                headers_ptr += len;
                                headers_ptr[0] = '\r';
                                headers_ptr[1] = '\n';
                                headers_ptr += 2;
                        }
#endif

But you use it only if request happens to be one of the proxied
requests:

        proxy_entry = find_proxy_entry(urlcopy);
        if (proxy_entry != NULL) {
                ....
                write(proxy_fd, headers, headers_ptr - headers);
                write(proxy_fd, "\r\n", 2);
                cgi_io_loop_and_exit(proxy_fd, proxy_fd, length);
        }

Can you check find_proxy_entry(urlcopy) earlier and do xmalloc
and copying only if needed?

I am attaching modified httpd.c, please base your further work on it.

Thanks Alex for your work.
--
vda
-------------- next part --------------
A non-text attachment was scrubbed...
Name: httpd.c.bz2
Type: application/x-bzip2
Size: 19160 bytes
Desc: not available
Url : http://busybox.net/lists/busybox/attachments/20071017/e012e943/attachment-0001.bin 


More information about the busybox mailing list