Re: Apach::TestRequest Doc Patch
David Wheeler wrote: Hi all, I especially need help with the keep_alive parameter to user_agent() keep_alive enables connection persistence, where the same connection is used to process multiple requests. the only use of it that I have seen is in http11/basicauth.t my $request_num = Apache::TestRequest::user_agent_request_num($res); ok $request_num == 3; #1 = no credentials #2 = 401 response with second request #3 = 200 with guest/guest credentials also, from the LWP::UserAgent manpage: The Ckeep_alive option also has the effect of loading and enabling the new experimental HTTP/1.1 protocol module. so keep_alive may be more of a shorthand way of enabling (and testing) HTTP/1.1 compliance rather than just persistent connections (which can be used in both protocols). as for the code changes, Stas should probably review them first. however, the docs look great - nice work. --Geoff
Re: input filters with mod_ext_filter [patch]
Am Montag, 23. Juni 2003 03:56 schrieb Jeff Trawick: (apologies for missing the right mail reference and nasty quoting... e-mail problems, and luckily I was browsing the archives on daedalus during my ISP-imposed silence) Philip, Thanks for submitting the patch. I hope you will fix minor issues and resubmit for further review? Hi Jeff, Of course! I am happy that you are willing to help me to get it in. Please find the new version of the patch attached. BTW, Please have a close look to the part where I look at the Content-Type header. The old code examien r-content_type. I had to find an other way, one that is also possible for request filtering... -Philipp -- : Dipl-Ing Philipp Reisner Tel +43-1-8178292-50 : : LINBIT Information Technologies GmbH Fax +43-1-8178292-82 : : Schönbrunnerstr 244, 1120 Vienna, Austriahttp://www.linbit.com : --- mod_ext_filter.c_orig 2003-02-27 13:33:07.0 +0100 +++ mod_ext_filter.c 2003-06-23 10:22:07.0 +0200 @@ -117,6 +117,9 @@ static const server_rec *main_server; static apr_status_t ef_output_filter(ap_filter_t *, apr_bucket_brigade *); +static apr_status_t ef_input_filter(ap_filter_t *, apr_bucket_brigade *, +ap_input_mode_t, apr_read_type_e, +apr_off_t); #define DBGLVL_SHOWOPTIONS 1 #define DBGLVL_ERRORCHECK 2 @@ -351,12 +354,10 @@ /* XXX need a way to ensure uniqueness among all filters */ ap_register_output_filter(filter-name, ef_output_filter, NULL, filter-ftype); } -#if 0 /* no input filters yet */ else if (filter-mode == INPUT_FILTER) { /* XXX need a way to ensure uniqueness among all filters */ -ap_register_input_filter(filter-name, ef_input_filter, NULL, AP_FTYPE_RESOURCE); +ap_register_input_filter(filter-name, ef_input_filter, NULL, filter-ftype); } -#endif else { ap_assert(1 != 1); /* we set the field wrong somehow */ } @@ -592,18 +593,20 @@ ctx-p = f-r-pool; if (ctx-filter-intype ctx-filter-intype != INTYPE_ALL) { -if (!f-r-content_type) { -ctx-noop = 1; -} -else { -const char *ctypes = f-r-content_type; -const char *ctype = ap_getword(f-r-pool, ctypes, ';'); - -if (strcasecmp(ctx-filter-intype, ctype)) { -/* wrong IMT for us; don't mess with the output */ -ctx-noop = 1; -} -} +const char *ctypes = apr_table_get(ctx-filter-mode == INPUT_FILTER ? + f-r-headers_in : f-r-headers_out, + Content-Type); + if(ctypes) { + const char *ctype = ap_getword(f-r-pool, ctypes, ';'); + + if (strcasecmp(ctx-filter-intype, ctype)) { + /* wrong IMT for us; don't mess with the output */ + ctx-noop = 1; + } + } + else { + ctx-noop = 1; + } } if (ctx-filter-enable_env !apr_table_get(f-r-subprocess_env, ctx-filter-enable_env)) { @@ -646,10 +649,11 @@ /* drain_available_output(): * - * if any data is available from the filter, read it and pass it - * to the next filter + * if any data is available from the filter, read it and append it + * to the the bucket brigade */ -static apr_status_t drain_available_output(ap_filter_t *f) +static apr_status_t drain_available_output(ap_filter_t *f, + apr_bucket_brigade *bb) { request_rec *r = f-r; conn_rec *c = r-connection; @@ -658,7 +662,6 @@ apr_size_t len; char buf[4096]; apr_status_t rv; -apr_bucket_brigade *bb; apr_bucket *b; while (1) { @@ -675,14 +678,9 @@ if (rv != APR_SUCCESS) { return rv; } -bb = apr_brigade_create(r-pool, c-bucket_alloc); -b = apr_bucket_transient_create(buf, len, c-bucket_alloc); +b = apr_bucket_heap_create(buf, len, NULL, c-bucket_alloc); APR_BRIGADE_INSERT_TAIL(bb, b); -if ((rv = ap_pass_brigade(f-next, bb)) != APR_SUCCESS) { -ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, - ap_pass_brigade()); -return rv; -} +return APR_SUCCESS; } /* we should never get here; if we do, a bogus error message would be * the least of our problems @@ -691,7 +689,7 @@ } static apr_status_t pass_data_to_filter(ap_filter_t *f, const char *data, -apr_size_t len) +apr_size_t len, apr_bucket_brigade *bb) { ef_ctx_t *ctx = f-ctx; ef_dir_t *dc = ctx-dc; @@ -716,7 +714,7 @@ * to read data from the child process and pass it down to the * next filter! */ -rv = drain_available_output(f); +rv = drain_available_output(f, bb);
Re: httpd-2.0.46 cgid crashes
I submitted a bug report on this 6 weeks ago, and then submitted a patch which will restart the cgid daemon 3 weeks ago. See bug report: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19849 This doesn't prevent the cgid daemon from failing but at least makes sure it gets restarted if it does. With this patch only a few cgi requests fail instead of having to stop/start apache 2 to get cgi working again. Regards, Glenn Jie Gao wrote: On Thu, 5 Jun 2003, Justin Erenkrantz wrote: --On Friday, June 6, 2003 4:29 PM +1000 Jie Gao [EMAIL PROTECTED] wrote: Hi All, This is happening too often to me and I need to do somthing about it. It'd be helpful if you told us what was going on with mod_cgid so we could fix it. -- justin Under heavy load, the cgid just dies. This is what's in the log: (3)No such process: cgid daemon is gone; is Apache terminating?: uri. This was reported before. Thanks, Jie
Re: httpd-2.0.46 cgid crashes
Jie Gao wrote: On Thu, 5 Jun 2003, Justin Erenkrantz wrote: --On Friday, June 6, 2003 4:29 PM +1000 Jie Gao [EMAIL PROTECTED] wrote: Hi All, This is happening too often to me and I need to do somthing about it. It'd be helpful if you told us what was going on with mod_cgid so we could fix it. -- justin Under heavy load, the cgid just dies. This is what's in the log: (3)No such process: cgid daemon is gone; is Apache terminating?: uri. A common cause was fixed in http://cvs.apache.org/viewcvs.cgi/httpd-2.0/modules/generators/mod_cgid.c.diff?r1=1.145.2.5r2=1.145.2.6 please try that... and Glenn's patch to restart the cgid daemon when necessary should get committed soon too...
Re: PerChild Error
Pablo Yaggi wrote: It doesn't dump anything, i have this CoreDumpDirectory /tmp/ and it dumps nothing there. ok, that looks good so far... What I saw is that a new process for the site (user pablo) is being started about 2 seconds all the time and each process logs what I mention before, so I think the process is not even starting in the right way. The main process is starting, because I can stablish a connection with a browser, but the request is never attended. Please let me know how I can log something else or dump the core. I can't open the process with gdb because the process is dieing permantly, is it any usefull for you a dump from the main process? wich kind ?. Yes I 'm using linux, version 2.4.21 from mandrake 9.1 There is a fix in the open source version of 2.0.46 http://www.apache.org/dist/httpd/httpd-2.0.46.tar.gz ...which allows coredumps on Linux when you start httpd as root and code CoreDumpDirectory in httpd.conf. If you start httpd as non-root, it should just work (i.e., you don't need the fix), assuming CoreDumpDirectory points to somewhere like /tmp where the non-root user can create files. Pablo Yaggi wrote: I forgot this in my last post, output from httpd -V Server version: Apache-AdvancedExtranetServer/2.0.46 I don't know what is in this vendor's version of Apache. You might want to talk to them, or try the open source version. Greg
RE: Apache 1.3.x - Problem with handling ErrorDocument for 413 ?
It'll be nice if somebody can please review the patch and give me the feedback.. Thanks -Madhu -Original Message- From: MATHIHALLI,MADHUSUDAN (HP-Cupertino,ex1) [mailto:[EMAIL PROTECTED] Sent: Friday, June 20, 2003 12:02 PM To: '[EMAIL PROTECTED]' Subject: Apache 1.3.x - Problem with handling ErrorDocument for 413 ? Hi, One of my collegue ran into this problem using Apache 1.3.27 (works fine in Apache 2.0.x), and attached is a brief description. 1. Configure the httpd.conf to use LimitRequestBody directive by adding, LimitRequestBody 1000 2. Add a customized error response for the above directive. ErrorDocument 413 /error413.htm 3. Make a request from the client with content length greater than 1000 (I tried using POST) This should result in a error with the customized error html error413.htm but instead, it displays the standard 413 error message !!. If we do the following, things seem work fine.. --- http_request.c Fri Jun 21 16:59:16 2002 +++ http_request.c.new Fri Jun 20 11:57:12 2003 @@ -1128,6 +1128,7 @@ r-method = ap_pstrdup(r-pool, GET); r-method_number = M_GET; } +ap_table_unset(r-headers_in, Content-Length); ap_internal_redirect(custom_response, r); return; } It's probably just masking the problem and not the correct solution. We tried to discard the body before the redirect, but it wouldn't work, as the request gets bitten again because of the call to ap_setup_client_block(). Has anybody seen this problem before .. or is it a user error ? Thanks, -Madhu
Pre shutdown hook
Has anybody consider providing a hook to be called right before shutting down the server? This is the scenario: A module creates a thread during initialization and then you want to close the thread during shutdown. I figured this could be done by registering a destroy function in a pool, but I'm not sure if this is the right way to do it (architecturally speaking). If there are initialization hooks why don't we have clean up hooks? Or are the pool destroy functions the designed way to do this? Juan
Re: Pre shutdown hook
Juan Rivera wrote: This is the scenario: A module creates a thread during initialization and then you want to close the thread during shutdown. do it in a cleanup registered on the pchild pool during child init (if you're talking about cleaning up a thread you've created in each child process) I figured this could be done by registering a destroy function in a pool, but I'm not sure if this is the right way to do it (architecturally speaking). If there are initialization hooks why don't we have clean up hooks? Or are the pool destroy functions the designed way to do this? registering a cleanup against the right pool is the right way to do it... having the additional hooks is redundant...
Re: cvs commit: httpd-2.0/server log.c
Very nice, thanks! However, do either NETWARE or OS2 need this code as well for source file names? Brad? Brian? Bill At 08:03 AM 6/23/2003, [EMAIL PROTECTED] wrote: stoddard2003/06/23 06:03:59 Modified:server Tag: APACHE_2_0_BRANCH log.c Log: Win32: Whack the fully qualified names win loglevel debug is set Revision ChangesPath No revision No revision 1.127.2.4 +6 -1 httpd-2.0/server/log.c Index: log.c === RCS file: /home/cvs/httpd-2.0/server/log.c,v retrieving revision 1.127.2.3 retrieving revision 1.127.2.4 diff -u -r1.127.2.3 -r1.127.2.4 --- log.c 20 Mar 2003 21:56:06 - 1.127.2.3 +++ log.c 23 Jun 2003 13:03:59 - 1.127.2.4 @@ -473,9 +473,14 @@ #ifndef TPF if (file level_and_mask == APLOG_DEBUG) { -#ifdef _OSD_POSIX +#if defined(_OSD_POSIX) || defined(WIN32) char tmp[256]; char *e = strrchr(file, '/'); +#ifdef WIN32 +if (!e) { +e = strrchr(file, '\\'); +} +#endif /* In OSD/POSIX, the compiler returns for __FILE__ * a string like: __FILE__=*POSIX(/usr/include/stdio.h)
Request for download statistics - Material for research paper
I am a graduate research student at Oakland University, working on a paper on Open Source Software and new product diffusion analysis for open source products. I am trying to provide a comparative study with already successful products such as Linux and the Apache server to go with it. I am looking towards gathering information on the number of downloads over an extended period of time.(Preferably from the first release to date) and I haven't been able to come up with accurate information, after repeated searches on the net. I would greatly appreciate it, if I could be directed towards the URL where this would be available. Thank you very much for your time. Regards, Neethi Shastry
Re: PerChild Error
[EMAIL PROTECTED] wrote: There is a fix in the open source version of 2.0.46 http://www.apache.org/dist/httpd/httpd-2.0.46.tar.gz ...which allows coredumps on Linux when you start httpd as root and code CoreDumpDirectory in httpd.conf. If you start httpd as non-root, it should just work (i.e., you don't need the fix), assuming CoreDumpDirectory points to somewhere like /tmp where the non-root user can create files. ps. This fix is mainly to os/unix/unixd.c::unixd_setup_child() . That function is not called by the perchild mpm, so it won't help your situation. I'm assuming perchild does its own setuid calls, since the user ids are a unique feature of perchild. You could look for this and code prctl(PR_SET_DUMPABLE,1) after the setuid. Here's what I did in the mainstream code: http://cvs.apache.org/viewcvs.cgi/httpd-2.0/os/unix/unixd.c.diff?r1=1.56r2=1.57diff_format=h Good luck! Greg not about to become the PerChild maintainer Ames
Re: Request for download statistics - Material for research paper
Neethi, this isn't practical because of the vast number of mirrors which redistribute the software... Bill At 12:14 PM 6/23/2003, Neethi Shastry wrote: I am a graduate research student at Oakland University, working on a paper on Open Source Software and new product diffusion analysis for open source products. I am trying to provide a comparative study with already successful products such as Linux and the Apache server to go with it. I am looking towards gathering information on the number of downloads over an extended period of time.(Preferably from the first release to date) and I haven't been able to come up with accurate information, after repeated searches on the net. I would greatly appreciate it, if I could be directed towards the URL where this would be available. Thank you very much for your time. Regards, Neethi Shastry
Re: Request for download statistics - Material for research paper
Recognize, also, the number of linux distributions which package the Apache server as part of their software bundle... Elias William A. Rowe, Jr. wrote: Neethi, this isn't practical because of the vast number of mirrors which redistribute the software... Bill At 12:14 PM 6/23/2003, Neethi Shastry wrote: I am a graduate research student at Oakland University, working on a paper on Open Source Software and new product diffusion analysis for open source products. I am trying to provide a comparative study with already successful products such as Linux and the Apache server to go with it. I am looking towards gathering information on the number of downloads over an extended period of time.(Preferably from the first release to date) and I haven't been able to come up with accurate information, after repeated searches on the net. I would greatly appreciate it, if I could be directed towards the URL where this would be available. Thank you very much for your time. Regards, Neethi Shastry
RE: response handlers get all requests
... The ap_hook_handler() call does not specify the handler key from the corresponding AddHandler configuration directive. As a consequence, the specified handler function must look at and accept or decline each request I'm looking at trace statements and my handler must reject PNG files and so forth... your handler needs to look at r-handler and decline stuff that you're not supposed to handle Yeah, that's what I'm doing. It just seems odd that this step is necessary with response handlers but not with filters. It also seems inefficient, as now each handler in a particular directory is calling strcmp() against r-handler for a lot of files that don't apply (albeit there will only be a few handlers registered for any given directory). So my handler has to reject PNG files and so forth, which are obviously not matches as specified by directivies in httpd.conf. Seems like whatever mechanism is in place for filters could be used for response handlers. Symmetry, neh? But there's probably some rationale for this that hasn't surfaced yet. Some particular usage case that wouldn't be properly supported any other way. mma
Re: PerChild Error
No, it was running as less privileged user , and the version Extranet is just somthing mandrake puted there, I'm recompiling mandrakes rpms, maybe there's some patch there that stops the dumps, i'll try to rebuild the source. But now I'm trying muxmpm cause somebody told me that perchild it was not working at all, did you manage to make it work ? if it is so, are you cgi working at right userid ? do you have php running ? what happens with ssl request on namebased virtual hosts ? who attends ? Thank's Pablo On Monday 23 June 2003 11:36 am, [EMAIL PROTECTED] wrote: Pablo Yaggi wrote: It doesn't dump anything, i have this CoreDumpDirectory /tmp/ and it dumps nothing there. ok, that looks good so far... What I saw is that a new process for the site (user pablo) is being started about 2 seconds all the time and each process logs what I mention before, so I think the process is not even starting in the right way. The main process is starting, because I can stablish a connection with a browser, but the request is never attended. Please let me know how I can log something else or dump the core. I can't open the process with gdb because the process is dieing permantly, is it any usefull for you a dump from the main process? wich kind ?. Yes I 'm using linux, version 2.4.21 from mandrake 9.1 There is a fix in the open source version of 2.0.46 http://www.apache.org/dist/httpd/httpd-2.0.46.tar.gz ...which allows coredumps on Linux when you start httpd as root and code CoreDumpDirectory in httpd.conf. If you start httpd as non-root, it should just work (i.e., you don't need the fix), assuming CoreDumpDirectory points to somewhere like /tmp where the non-root user can create files. Pablo Yaggi wrote: I forgot this in my last post, output from httpd -V Server version: Apache-AdvancedExtranetServer/2.0.46 I don't know what is in this vendor's version of Apache. You might want to talk to them, or try the open source version. Greg
Re: PerChild Error
Pablo Yaggi wrote: No, it was running as less privileged user , and the version Extranet is just somthing mandrake puted there, I'm recompiling mandrakes rpms, maybe there's some patch there that stops the dumps, i'll try to rebuild the source. you might want to have a look at my other post where I talked about prctl(). PerChild might need something like that in order to dump on Linux, if it does its own setuid(). But now I'm trying muxmpm cause somebody told me that perchild it was not working at all, I've heard that too. did you manage to make it work ? haven't tried it, and I don't plan on it in the near future. Greg
Re: response handlers get all requests
Marc M. Adkins wrote: The ap_hook_handler() call does not specify the handler key from the corresponding AddHandler configuration directive. As a consequence, the specified handler function must look at and accept or decline each request. yes, you are right. IMO that sucks, for a number of reasons: * the Apache 1.3 core was better about it and only called handlers when the request type matched a type the handler was interested in, * we had to change the module API to accomodate this regression in the core, and * now we have a distributed performance hit in 2.x, because the core is calling all these modules who don't care about the request which makes the CPU fetch crap instructions into the i-cache. This won't show up as a hot spot in a profiler, because it is spread among all the different handlers and other code which is now taking more frequent i-cache misses. ...but I'll shut up because I don't have a patch or a design for one yet. By contrast, output filters only see requests in which they have interest. Clearly a better situation. Greg
Re: [users@httpd] apache 2.0.x freezing when using perchild MPM
Hello, Just wanted to report that I am seeing this same problem with Apache 2.0.46 on Linux 2.4.21. (See original message attached.) Here is how I configured Apache: CC=gcc \ CFLAGS='-pipe -O2 -fomit-frame-pointer' \ INCLUDES='-I/usr/local/include' \ LDFLAGS='-L/usr/local/lib -s' \ /bin/sh configure --prefix=/usr/local/apache --with-layout=apache \ --with-mpm=perchild \ --with-berkeley-db=/usr \ --enable-mods-shared=charset_lite deflate logio mime_magic usertrack unique_id proxy proxy_connect proxy_ftp proxy_http suexec ssl most \ --with-ssl=/usr/local/openssl \ --enable-suexec \ --with-suexec-bin=/usr/local/apache/bin/suexec \ --with-suexec-caller=http \ --with-suexec-uidmin=1000 --with-suexec-gidmin=1000 \ --with-suexec-umask=022 I'd be happy to provide any more info if necessary; just drop me a line. -- Michael Glasgow [EMAIL PROTECTED] -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 The subject says it all... At first I thought this is somehow related to PHP, but I commented out almost all of the modules, and it still happens on static content. error log (LogLevel debug): Lots of these (normal): [Thu May 29 13:20:48 2003] [debug] perchild.c(1790): Determining if request should be passed. Child Num: 2, SD: 6, sd from table: 16, hostname from server: www3.example.com And then: [Thu May 29 13:20:48 2003] [debug] perchild.c(1799): Passing request. [Thu May 29 13:20:48 2003] [debug] perchild.c(1655): passing request to another child. Vhost: www3.example.com, child 2 7 [Thu May 29 13:20:48 2003] [debug] perchild.c(1707): Writing message to 7, passing sd: 22 [Thu May 29 13:20:48 2003] [debug] perchild.c(1717): Writing message succeeded 49 - From here on httpd stops serving requests. It does not refuse connections, but there are no new log entries and it doesn't return anything. Running ab -n 10 -c 1 http://www3.example.com/zeros.txt (zeros.txt is 10K worth of zeros) from 1 to 3 times is enough to freeze the server, but the number of tries needed is not connected to *Threads* directives (I tried to fiddle with those to see if it has any effect). What I've found out is that the server freezes as long as it is running under different UIDs. If it only runs as the default user (no ChildPerUserID directives), everything is fine. If ChildPerUserID # # = NumServers, everything is fine (no httpd processes running under the default UID). MPM config: IfModule perchild.c NumServers 8 StartThreads 20 MinSpareThreads 5 MaxSpareThreads 20 MaxThreadsPerChild 20 MaxRequestsPerChild 0 ChildPerUserId #3 #3 2 /IfModule vhost config: NameVirtualHost xx.xx.xx.xx:80 VirtualHost xx.xx.xx.xx:80 ServerAdmin [EMAIL PROTECTED] DocumentRoot /var/www/www3.example.com ServerName www3.example.com AssignUserID #3 #3 /VirtualHost Loaded modules: LoadModule access_module modules/mod_access.so LoadModule log_config_module modules/mod_log_config.so LoadModule mime_module modules/mod_mime.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so (I could lose some of these, but didn't want to massacre the default config file by removing all the directives that need these modules - I could if anyone thinks it might help) Other non-default settings: AcceptMutex flock (the default - sysvsem doesn't work - but that's a topic for another post) My system: Debian 3.0 Linux 2.4.21-pre5 (also tried earlier kernels, 2.4.18 and maybe some others, can't remember) glibc 2.2.5-11.5 Apache 2.0.46 (also tried 45 and two or three older versions) Httpd was configured like this: ./configure --prefix=/opt/apache-2.0.46 --bindir=/usr/local/bin/ - --sbindir=/usr/local/sbin/ --enable-mods-shared=all --with-mpm=perchild - --enable-ssl Any ideas? I need mpm_perchild, otherwise I won't migrate this webserver to Apache 2.0 - yet. :-) thanks, - -- Borut Mrak, [EMAIL PROTECTED] PGP: finger [EMAIL PROTECTED] -BEGIN PGP SIGNATURE- iD8DBQE+1ftyRUVvbWYRhIIRAiolAKDOmm1qzq6/Ni1Id6vqj+ztiqyXIACfQR4o nHTkIRP96Bl3QgSOOxxrOUo= =EbxX -END PGP SIGNATURE- - The official User-To-User support forum of the Apache HTTP Server Project. See URL:http://httpd.apache.org/userslist.html for more info. To unsubscribe, e-mail: [EMAIL PROTECTED] from the digest: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]