Notes |
(0000803)
vodz
12-20-05 03:05
|
Ok. I removed debug feature for production version. ;-)
See SVN 12954. |
| |
(0000811)
flowtide
12-25-05 20:04
|
Not even for debug mode, using handleIncoming() function without fork() is desirable when we really need small web server.
Because it doesn't need to invoke another httpd process and so overall resource requirement is very small.
I wish you to support compile time flag whether it uses fork() or not.
And I have no problem at all using httpd without fork() for every request. |
| |
(0000812)
vodz
12-26-05 00:27
|
> I wish you to support compile time flag whether it uses fork() or not.
Without fork() httpd can usage in inetd-mode.
Other methods without wait accept() for a networking daemons is not exist in wordl. |
| |
(0000813)
flowtide
12-26-05 08:12
|
I see but I guess there is misunderstanding between us.
I don't mean httpd in the busybox has bug. It is small and powerful httpd that I met before in Internet.
In fact I am using busybox on uClinux with NO MMU ARM CPU so I am very careful about memory footprint.
Anyway, my suggestion of not using fork() in none inetd-mode has no problem because of following sequence.
In miniHttpd():
while ( 1 )
{
select(); // wait for new request
int s = accept();
handleIncoming();
close(s);
}
It seems that the reason of fork() is to process another request while processing handleIncoming().
In addition new patch for debug mode doesn't work.
if(config->httpd_found.found_moved_temporarily) {
sendHeaders(HTTP_MOVED_TEMPORARILY);
#if DEBUG
/* clear unforked memory flag */
config->httpd_found.found_moved_temporarily = NULL;
#endif
break;
}
Because httpd_found is union type, found_mime_type is also set during sending result.
You should put following code near the end of handleIncoming.
#if DEBUG
/* clear unforked memory flag */
config->httpd_found.found_moved_temporarily = NULL;
#endif |
| |
(0000814)
vodz
12-26-05 08:21
|
> while ( 1 )
> {
> select(); // wait for new request
> int s = accept();
> handleIncoming();
> close(s);
> }
If handleIncoming() is slow, then daemon have not accept other connections. Its bad idea.
Good idea for nonMMU: accept from inetd, vfork()+exec("httpd"). |
| |
(0000919)
landley
01-10-06 19:24
|
vodz got it. |
| |