Re: Strange segmentation fault
Ralf Mattes ha scritto: On Mon, 2007-07-30 at 18:49 +0200, [EMAIL PROTECTED] wrote: I found that a similar problem was this: http://mail-archives.apache.org/mod_mbox/httpd-modules-dev/200703.mbox/[EMAIL PROTECTED] Similar? In what way? Abusing libxml2 interna? Are you doing this? Iff xmlFreeDoc triggers a segmentation violation than the most likely case is that you pass it a document pointer that's not (a valid libxml document any more). So what part of the module did invalidate that doc pointer? Is it more likely to be Apache or your module code? BTW - one shure way to f^h^hk up you document is messing (i.e. releasing) nodes still refered to from the document. Does your module copy/move/delete nodes? The violation is inside my module,near the end. When I'm at the end of my module I reply to the client and I free the xml documents I used: . ap_add_output_filter(SV_XSLT_FILTER_NAME, NULL, r, r-connection); mod_transform_set_XSLT(r, xslfilename); xmlDocDumpMemoryEnc(doc, bufptr, size, UTF-8); putXML(r, (char*)bufptr); if (size 0) xmlFree(bufptr); if (docinter != NULL) xmlFreeDoc(docinter); if (docs != NULL) xmlFreeDoc(docs); xmlFreeDoc(doc); xmlCleanupParser(); return OK; where: void putXML(request_rec *r, char* xml) { ap_set_content_type(r, text/xml); ap_rwrite(xml, strlen(xml), r); ap_rflush(r); } My final xml document is doc which is built in the module getting information from docinter and docs. Yes my module copies some nodes from docs to doc with xmlCopyNode. I think that my code is correct. Am I doing some mistakes? Best regards Marco So it seems that it's possibile. I don't understand how to solve it. Could you give me some hints? Unless your module replaced libxml2's allocator the library uses malloc/free - you can use all the glorious GNU tools to debug. I guess you already set MALLOC_CHECK_ to 1, did you? HTH Ralf Mattes Best regards Marco Sorry I don't understand the reply. You are telling me that it should be possibile or not? I always use r-pool to allocate memory in my module, but not for libxml2. It has it's memory allocation and looking at source it uses malloc and free. Best regards Marco On Mon, Jul 30, 2007 at 06:04:27PM +0200, [EMAIL PROTECTED] wrote: I isolated my problem. It seems that sometimes during xmlFreeDoc(doc) I get a Segmentation fault. xmlFreeDoc is a function of libxml2 which I use inside my module. I suppose that libxml2 uses malloc/free to alloc and free memory: is it possibile that there is some overlap of memory with apr poll (r-poll)? Not an option. Unless you use somewhat pools to allocate memory for libxml. If you do so, stop it. Either use apr pools or malloc/free. Kind regards. -- Software Engineer - Spinetti Marco Direzione Sviluppo Servizi, Sistemi e Piattaforme Tel. +39 050 618.4264 Fax. +39 050 618.4244 Mob. +39 329 4424216 E-Mail: [EMAIL PROTECTED] ItaliaOnLine S.p.A. Direzione e coordinamento di Weather Investments S.p.A. Via G. Malagoli, 12 56124 PISA The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer. Any term contained in this email is intended solely as a basis for further discussion and is not intended to be and does not constitute a legally binding obligation. No legally binding obligations will be created, implied or inferred until a definitive agreement in final form is executed in writing and delivered by both parties. Without limiting the generality of the foregoing, the parties intend that there shall be no ligations based on such things as parol evidence, extended negotiations, oral understandings or courses of conduct (including without limitation reliance and changes of position).
Re: Strange segmentation fault
I tried what Nick advised yesterday. I register all my cleanup with apr_pool_cleanup_register: this is for xml documents and bufptr. So after the creation or parsing of xml documents: apr_pool_cleanup_register(r-pool, doc, liberaDoc, apr_pool_cleanup_null); and after dump xml doc: xmlDocDumpMemoryEnc(doc, bufptr, size, UTF-8); apr_pool_cleanup_register(r-pool, bufptr, liberaBuff, apr_pool_cleanup_null); where: apr_status_t liberaDoc(void *d) { xmlDocPtr doc = d; if (doc != NULL) xmlFreeDoc(doc); return APR_SUCCESS; } apr_status_t liberaBuff(void *b) { xmlChar *bufptr = b; if (bufptr != NULL) xmlFree(bufptr); return APR_SUCCESS; } then I inserted two print at the start and end of my module: ap_log_perror(APLOG_MARK, APLOG_ERR, 0, r-pool, I:[%ld]%s, (long)getpid(), q); ap_log_perror(APLOG_MARK, APLOG_ERR, 0, r-pool, F:[%ld]%s, (long)getpid(), q); where the last print if before the last instruction of my module (return OK). Sometimes I get in the error_log: [Tue Jul 31 10:03:31 2007] [error] I:[15560]CASCINA DEI FAGIOLARI [Tue Jul 31 10:03:31 2007] [error] F:[15560]CASCINA DEI FAGIOLARI [Tue Jul 31 10:03:32 2007] [notice] child pid 15560 exit signal Segmentation fault (11) This is very strange. I use mod_transform (Nick is one of the authors ;-) ) to reply to the client. So I inserted this two print at the start and end of transform_filter: ap_log_perror(APLOG_MARK, APLOG_ERR, 0, f-r-pool, II:[%ld], (long)getpid()); ap_log_perror(APLOG_MARK, APLOG_ERR, 0, f-r-pool, FF:[%ld], (long)getpid()); Then I repeated the test and in the error log I get: [Tue Jul 31 10:52:19 2007] [error] I:[7307]CASCINA DEI FAGIOLARI [Tue Jul 31 10:52:20 2007] [error] II:[7307] [Tue Jul 31 10:52:20 2007] [error] FF:[7307] [Tue Jul 31 10:52:20 2007] [error] F:[7307]CASCINA DEI FAGIOLARI [Tue Jul 31 10:52:20 2007] [error] II:[7307] [Tue Jul 31 10:52:20 2007] [error] FF:[7307] [Tue Jul 31 10:52:20 2007] [notice] child pid 7307 exit signal Segmentation fault (11) I don't know why I have two times the prints of mod_transform (???) but the segmentation fault is after the end of mod_transform. So it seems that the error is in the mod_transform. What do you think? Best regards Marco Marco Spinetti ha scritto: Ralf Mattes ha scritto: On Mon, 2007-07-30 at 18:49 +0200, [EMAIL PROTECTED] wrote: I found that a similar problem was this: http://mail-archives.apache.org/mod_mbox/httpd-modules-dev/200703.mbox/[EMAIL PROTECTED] Similar? In what way? Abusing libxml2 interna? Are you doing this? Iff xmlFreeDoc triggers a segmentation violation than the most likely case is that you pass it a document pointer that's not (a valid libxml document any more). So what part of the module did invalidate that doc pointer? Is it more likely to be Apache or your module code? BTW - one shure way to f^h^hk up you document is messing (i.e. releasing) nodes still refered to from the document. Does your module copy/move/delete nodes? The violation is inside my module,near the end. When I'm at the end of my module I reply to the client and I free the xml documents I used: . ap_add_output_filter(SV_XSLT_FILTER_NAME, NULL, r, r-connection); mod_transform_set_XSLT(r, xslfilename); xmlDocDumpMemoryEnc(doc, bufptr, size, UTF-8); putXML(r, (char*)bufptr); if (size 0) xmlFree(bufptr); if (docinter != NULL) xmlFreeDoc(docinter); if (docs != NULL) xmlFreeDoc(docs); xmlFreeDoc(doc); xmlCleanupParser(); return OK; where: void putXML(request_rec *r, char* xml) { ap_set_content_type(r, text/xml); ap_rwrite(xml, strlen(xml), r); ap_rflush(r); } My final xml document is doc which is built in the module getting information from docinter and docs. Yes my module copies some nodes from docs to doc with xmlCopyNode. I think that my code is correct. Am I doing some mistakes? Best regards Marco So it seems that it's possibile. I don't understand how to solve it. Could you give me some hints? Unless your module replaced libxml2's allocator the library uses malloc/free - you can use all the glorious GNU tools to debug. I guess you already set MALLOC_CHECK_ to 1, did you? HTH Ralf Mattes Best regards Marco Sorry I don't understand the reply. You are telling me that it should be possibile or not? I always use r-pool to allocate memory in my module, but not for libxml2. It has it's memory allocation and looking at source it uses malloc and free. Best regards Marco On Mon, Jul 30, 2007 at 06:04:27PM +0200, [EMAIL PROTECTED] wrote: I isolated my problem. It seems that sometimes during xmlFreeDoc(doc) I get a Segmentation fault. xmlFreeDoc is a function of libxml2 which I use inside my module. I suppose that libxml2 uses malloc/free to alloc and free memory: is it possibile that there is some overlap of memory with apr poll (r-poll)? Not an option.
Re: Strange segmentation fault
Any news :'( ? Marco Marco Spinetti ha scritto: I tried what Nick advised yesterday. I register all my cleanup with apr_pool_cleanup_register: this is for xml documents and bufptr. So after the creation or parsing of xml documents: apr_pool_cleanup_register(r-pool, doc, liberaDoc, apr_pool_cleanup_null); and after dump xml doc: xmlDocDumpMemoryEnc(doc, bufptr, size, UTF-8); apr_pool_cleanup_register(r-pool, bufptr, liberaBuff, apr_pool_cleanup_null); where: apr_status_t liberaDoc(void *d) { xmlDocPtr doc = d; if (doc != NULL) xmlFreeDoc(doc); return APR_SUCCESS; } apr_status_t liberaBuff(void *b) { xmlChar *bufptr = b; if (bufptr != NULL) xmlFree(bufptr); return APR_SUCCESS; } then I inserted two print at the start and end of my module: ap_log_perror(APLOG_MARK, APLOG_ERR, 0, r-pool, I:[%ld]%s, (long)getpid(), q); ap_log_perror(APLOG_MARK, APLOG_ERR, 0, r-pool, F:[%ld]%s, (long)getpid(), q); where the last print if before the last instruction of my module (return OK). Sometimes I get in the error_log: [Tue Jul 31 10:03:31 2007] [error] I:[15560]CASCINA DEI FAGIOLARI [Tue Jul 31 10:03:31 2007] [error] F:[15560]CASCINA DEI FAGIOLARI [Tue Jul 31 10:03:32 2007] [notice] child pid 15560 exit signal Segmentation fault (11) This is very strange. I use mod_transform (Nick is one of the authors ;-) ) to reply to the client. So I inserted this two print at the start and end of transform_filter: ap_log_perror(APLOG_MARK, APLOG_ERR, 0, f-r-pool, II:[%ld], (long)getpid()); ap_log_perror(APLOG_MARK, APLOG_ERR, 0, f-r-pool, FF:[%ld], (long)getpid()); Then I repeated the test and in the error log I get: [Tue Jul 31 10:52:19 2007] [error] I:[7307]CASCINA DEI FAGIOLARI [Tue Jul 31 10:52:20 2007] [error] II:[7307] [Tue Jul 31 10:52:20 2007] [error] FF:[7307] [Tue Jul 31 10:52:20 2007] [error] F:[7307]CASCINA DEI FAGIOLARI [Tue Jul 31 10:52:20 2007] [error] II:[7307] [Tue Jul 31 10:52:20 2007] [error] FF:[7307] [Tue Jul 31 10:52:20 2007] [notice] child pid 7307 exit signal Segmentation fault (11) I don't know why I have two times the prints of mod_transform (???) but the segmentation fault is after the end of mod_transform. So it seems that the error is in the mod_transform. What do you think? Best regards Marco Marco Spinetti ha scritto: Ralf Mattes ha scritto: On Mon, 2007-07-30 at 18:49 +0200, [EMAIL PROTECTED] wrote: I found that a similar problem was this: http://mail-archives.apache.org/mod_mbox/httpd-modules-dev/200703.mbox/[EMAIL PROTECTED] Similar? In what way? Abusing libxml2 interna? Are you doing this? Iff xmlFreeDoc triggers a segmentation violation than the most likely case is that you pass it a document pointer that's not (a valid libxml document any more). So what part of the module did invalidate that doc pointer? Is it more likely to be Apache or your module code? BTW - one shure way to f^h^hk up you document is messing (i.e. releasing) nodes still refered to from the document. Does your module copy/move/delete nodes? The violation is inside my module,near the end. When I'm at the end of my module I reply to the client and I free the xml documents I used: . ap_add_output_filter(SV_XSLT_FILTER_NAME, NULL, r, r-connection); mod_transform_set_XSLT(r, xslfilename); xmlDocDumpMemoryEnc(doc, bufptr, size, UTF-8); putXML(r, (char*)bufptr); if (size 0) xmlFree(bufptr); if (docinter != NULL) xmlFreeDoc(docinter); if (docs != NULL) xmlFreeDoc(docs); xmlFreeDoc(doc); xmlCleanupParser(); return OK; where: void putXML(request_rec *r, char* xml) { ap_set_content_type(r, text/xml); ap_rwrite(xml, strlen(xml), r); ap_rflush(r); } My final xml document is doc which is built in the module getting information from docinter and docs. Yes my module copies some nodes from docs to doc with xmlCopyNode. I think that my code is correct. Am I doing some mistakes? Best regards Marco So it seems that it's possibile. I don't understand how to solve it. Could you give me some hints? Unless your module replaced libxml2's allocator the library uses malloc/free - you can use all the glorious GNU tools to debug. I guess you already set MALLOC_CHECK_ to 1, did you? HTH Ralf Mattes Best regards Marco Sorry I don't understand the reply. You are telling me that it should be possibile or not? I always use r-pool to allocate memory in my module, but not for libxml2. It has it's memory allocation and looking at source it uses malloc and free. Best regards Marco On Mon, Jul 30, 2007 at 06:04:27PM +0200, [EMAIL PROTECTED] wrote: I isolated my problem. It seems that sometimes during xmlFreeDoc(doc) I get a Segmentation fault. xmlFreeDoc is a function of libxml2 which I use inside my module. I suppose that libxml2 uses malloc/free to alloc and free memory: is it possibile that there is some overlap of memory with apr poll
PATCH 19441: mod_cache RFC2616 violation
Hi, I submitted a simple patch that fixes the above mentioned PR, and then some. 1. All of the Cache-Control request directives are ignored. As a consequence, end-to-end reload is for example not possible. Originally ap_cache_check_freshness() read the Cache-Control header from ((cache_handle_t) h)-req_hdrs. Turns out this never contains the Cache-Control header. The patch changes this so it is read from the request record instead ((request_rec)r-headers_in. This is also what is done in Apache 2.2.4 which does not exhibit this problem. 2. Responses to requests containing Cache-Control: no-cache are not cached. The way I understand RFC2616, the no-cache request directive should prevent a cache from serving a cached response to such a request, but not from saving it in cache. Apache 2.2.4 behaves as I would expect it to, i.e. saves the response (provided it is cacheable). I would love to move to 2.2.4, but I am prevented to do so for the next 12 months by dependencies to third-party modules. rgds -ascs
Re: svn commit: r560937 - /httpd/httpd/trunk/modules/filters/mod_deflate.c
On Mon, 30 Jul 2007 18:02:34 -0500 William A. Rowe, Jr. [EMAIL PROTECTED] wrote: } -else if (ap_strchr_c(encoding, ':') != NULL) { +else if (ap_strchr_c(encoding, ',') != NULL) { Uhm - so blowing away q val logic? Huh? You lost me. Actually, that doesn't look like a semi, that looks like a colon which has no meaning I can think of, offhand. What was that about, before? It came from a tired misreading of section 14:11 of rfc2616. Specifically the separately-quoted colon in the line Content-Encoding = Content-Encoding : 1#content-coding (also from having no recollection of ever having seen more than one token in a real-life Content-Encoding). -- Nick Kew Application Development with Apache - the Apache Modules Book http://www.apachetutor.org/
Re: [PATCH]: mod_cache: don't store headers that will never be used
On Tue, 31 Jul 2007, Sander Striker wrote: Here's a version with a config directive, defaults to disabled. Silly Q; a directive? Or a env var that can be scoped in interesting ways using mod_setenvif and/or mod_rewrite? Most of our proxy behavior overrides are in terms of envvars. They are much more flexible to being tuned per-browser, per-backend etc. Directive, envvar, I don't think Niklas cares much. Can we make up our mind please? I have no clue on the envvar-stuff, so I don't think I'm qualified to have an opinion. CacheIgnoreCacheControl et al are config directives currently and I have the gut feeling that they should all either be envvar-thingies or config directives, and that starting to mix stuff will only end in confusion and despair ;) I prefer a config-option that I can set serverwide without too much fuss since we want this behaviour on all files. If this can also be accomplished with envvar-stuff then sure. One way might be to do a config directive for now, and deal with the envvar-stuff separately. Related, this config option might also be of interest for mod_disk_cache to enable similar optimizations. What would the good way be to accomplish this? /Nikke -- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Niklas Edmundsson, Admin @ {acc,hpc2n}.umu.se | [EMAIL PROTECTED] --- * - Tribble þ oð oð - Tribbles and Rock! =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Re: Completely transform a request
-BEGIN PGP SIGNED MESSAGE- Hash: SHA512 [EMAIL PROTECTED] wrote: People can get kinda short and blunt over here but be advised that the only bad discussion about technology is not having one at all and, in general, the constructive criticism is all well-intentioned. Well, then we might just have to continue discussing this technology. I'd repost my original question, and I kindly ask everyone just to forget all the OpenPGP stuff. I want to Completely Transform a Request. 100% transformation. Based on a certain logic, If an incoming request matches one of my action triggers, then I want to apply a transformation to the 100% of the incoming request. I know I can do that when I just want to modify brigade-by-brigade. But I need to read the WHOLE request before doing so. Even the METHOD line. Even the headers. Even the body. All of it. Then, completely transform that into another request, and have Apache process it. With the current input filtering framework, at the connection level, I should be able to do it. But I can't. If you NEED an example of what I'd like to transform, and into WHAT i want to transform it, see this post: What I'd like to transform: http://www.mail-archive.com/dev@httpd.apache.org/msg37206.html Into WHAT I want to transform it: a completely different request (i.e different method line, different headers and different body, and I can't do that in stages, I have to read the whole request first). Sincerely, - -- Arturo Buanzo Busleiman - Consultor Independiente en Seguridad Informatica SHOW DE FUTURABANDA - Sabado 18 de Agosto 2007 (Speed King, Capital Federal) Entradas anticipadas a traves de www.futurabanda.com.ar - Punk Rock Melodico -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.7 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGry75AlpOsGhXcE0RChjtAJ4kXkrjZKyJ5iG1Qtbtge2HEXFySQCdHej3 52H1qN3dNLZa7fL8/Bre8BI= =ooIU -END PGP SIGNATURE-
Re: TR Procedure for 1.3?
http://httpd.apache.org/dev/how-to-release.html is kind of dated and yes is in need of an update, but I've never bothered doing so (except for the last 1.3 release, I've been RM for 1.3 for the last several years) The svn copy location however is https://svn.apache.org/repos/asf/httpd/httpd/tags/1.3/APACHE_1_3_MM On Jul 25, 2007, at 10:30 PM, Sander Temme wrote: Folks, Before I perform my first Tag Roll, I'm trying to familiarize myself with the exact process. Maybe I'm not looking in the right places, or is the documentation actually a bit thin on the nuts and bolts of the process? Here's what I think should happen, gleaned from the various pages and scripts: branches/1.3.x to tag version 1.3.MM: 1) Edit STATUS and src/include/httpd.h: In STATUS, change version number 1.3.MM line to say Tagged mm/ dd/ In httpd,h, remove -dev from SERVER_BASEREVISION define Commit as revision rXX 2) svn copy -rXX https://svn.apache.org/repos/asf/httpd/httpd/ branches/1.3.x \ https://svn.apache.org/repos/asf/httpd/httpd/tags/1.3.MM This will be committed as rYY (likely rXX + 1 but that is not certain) 3) Edit STATUS and src/include/httpd.h: In STATUS, add line 1.3.(MM + 1): In development In httpd.h, change SERVER_BASEREVISION define to say 1.3.(MM + 1)-dev Also bump the APACHE_RELEASE define Commit The previous I've inferred from the svn logs. Now I'm going by http://httpd.apache.org/dev/how-to-release.html which points to release.sh, but it looks like that only works for 2.x. What of the below still applies? 4) Export the source: umask 022 svn export http://svn.apache.org/repos/asf/httpd/httpd/tags/ 1.3.MM \ apache_1.3.MM 5) curl http://httpd.apache.org/docs/1.3/misc/FAQ.html \ htdocs/manual/misc/FAQ.html 6) cp src/Configuration.tmpl src/Configuration 7) Remove various dev-only files: rm -f STATUS RULES.CVS src/INDENT htdocs/manual/misc./FAQ-*.html find . -name .cvsignore -exec rm {} \; find . -type d -name test -exec rm -Rf {} \; find . -type d -name .svn -exec rm -Rf {} \; 8) Expand the Server-Side-Include directives in the manual: cd htdocs/manual ./expand.pl 9) Roll the tarballs: tar -czf apache_1.3.MM.tar.gz apache_1.3.MM tar -cf apache_1.3.MM.tar apache_1.3.MM compress apache_1.3.MM.tar 10) Test the tarballs for untarrability tar -tzf apache_1.3.MM.tar.gz unzompress apache_1.3.MM.tar.Z | tar -tf - 12) PGP sign the tarballs gpg -sba apache_1.3.MM.tar.gz gpg -sba apache_1.3.MM.tar.Z 13) Test the signatures gpg --verify apache_1.3.MM.tar.gz.asc gpg --verify apache_1.3.MM.tar.Z.asc 14) Pull out the CHANGES file for upload to the web cp apache_1.3.MM/src/CHANGES ./CHANGES_1.3 15) Upload the tarballs to the website scp apache_1.3.MM.tar.gz apache_1.3.MM.tar.Z \ apache_1.3.MM.tar.gz.asc apache_1.3.MM.tar.Z.asc \ CHANGES_1.3 people.apache.org: 16) Move in place: ssh people.apache.org umask 002 mv apache_1.3.MM.tar.gz apache_1.3.MM.tar.Z \ apache_1.3.MM.tar.gz.asc apache_1.3.MM.tar.Z.asc \ CHANGES_1.3 /www/httpd.apache.org/dev/dist They should show up group-writable. If not, you umask was off, do correct. If the mv doesn't work, you're not in the right unix group. Have infra correct. 17) Wait patiently for rsync, avoid bitching to infra at all costs. 18) Mail [EMAIL PROTECTED], [EMAIL PROTECTED] with a [VOTE] e-mail copied from an earlier release effort lovingly archived on mail-archives.a.o/ mod_mbox. NOTE it'd be highly desirable if all branches' tarballs were announced for testing in one such e-mail 19) Sit back and watch the votes roll in Comments? Critique? I'll be happy to update how-to-release.html accordingly. S. -- [EMAIL PROTECTED] http://www.temme.net/sander/ PGP FP: 51B4 8727 466A 0BC3 69F4 B7B8 B2BE BC40 1529 24AF
Re: Completely transform a request
I'm doing some testing here on the latest build from trunk. Will let you know ASAP whether this is going to be possible from solely within a connection input filter or whether you will need other hooks to pull it off. In the meantime... if someone else is more familiar with connection input filters and already knows there is no way to do this given the current design and implementation it would cut some corners to hear it can't be done. You MAY have found a bug in connection input filtering. Maybe not. It's worth a look to see if that's the case. Kevin Kiley In a message dated 7/31/2007 5:53:10 AM Pacific Standard Time, [EMAIL PROTECTED] writes: -BEGIN PGP SIGNED MESSAGE- Hash: SHA512 [EMAIL PROTECTED] wrote: People can get kinda short and blunt over here but be advised that the only bad discussion about technology is not having one at all and, in general, the constructive criticism is all well-intentioned. Well, then we might just have to continue discussing this technology. I'd repost my original question, and I kindly ask everyone just to forget all the OpenPGP stuff. I want to Completely Transform a Request. 100% transformation. Based on a certain logic, If an incoming request matches one of my action triggers, then I want to apply a transformation to the 100% of the incoming request. I know I can do that when I just want to modify brigade-by-brigade. But I need to read the WHOLE request before doing so. Even the METHOD line. Even the headers. Even the body. All of it. Then, completely transform that into another request, and have Apache process it. With the current input filtering framework, at the connection level, I should be able to do it. But I can't. If you NEED an example of what I'd like to transform, and into WHAT i want to transform it, see this post: What I'd like to transform: http://www.mail-archive.com/dev@httpd.apache.org/msg37206.html Into WHAT I want to transform it: a completely different request (i.e different method line, different headers and different body, and I can't do that in stages, I have to read the whole request first). Sincerely, - -- Arturo Buanzo Busleiman - Consultor Independiente en Seguridad Informatica SHOW DE FUTURABANDA - Sabado 18 de Agosto 2007 (Speed King, Capital Federal) Entradas anticipadas a traves de www.futurabanda.com.ar - Punk Rock Melodico -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.7 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGry75AlpOsGhXcE0RChjtAJ4kXkrjZKyJ5iG1Qtbtge2HEXFySQCdHej3 52H1qN3dNLZa7fL8/Bre8BI= =ooIU -END PGP SIGNATURE- ** Get a sneak peek of the all-new AOL at http://discover.aol.com/memed/aolcom30tour
Need immediate help regarding Signal handler for Apache
Hi All, First of all I am new to apache so please escuse me in case of any inappropriate questions. I want to enhance the code to handle a new signal (SIGUSR2) , On getting the signal i should be able to do some specific processing ( This signal will work as a behaviour change routine ) . So i made a new signal handler in prefork.c and set that signal handler function in set_signal function in prefork.c . Now when we catch the signal the signal handler routine executes but after it the control goes to my hook set in ap_hook_post_config , I was excepting the control to continue in ap_mpm_run (in prefork.c) inside the while loop while (!restart_pending !shutdown_pending). Can anybody suggest me what i am doing or assuming wrong or if anybody had some some related coding ,Please share the same Please share whatever information you can related to adding a new signal and doing some processing on the basis of that signal Please reply asap -- Thanks Saurabh Agarwal
Re: svn commit: r561352 - /httpd/httpd/trunk/modules/http/http_protocol.c
On 07/31/2007 04:54 PM, wrote: Author: gregames Date: Tue Jul 31 07:54:46 2007 New Revision: 561352 URL: http://svn.apache.org/viewvc?view=revrev=561352 Log: this appears to be a mv rather than a swap, so we should be able to simplify shave off a couple of cycles. Modified: httpd/httpd/trunk/modules/http/http_protocol.c Modified: httpd/httpd/trunk/modules/http/http_protocol.c URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http/http_protocol.c?view=diffrev=561352r1=561351r2=561352 == --- httpd/httpd/trunk/modules/http/http_protocol.c (original) +++ httpd/httpd/trunk/modules/http/http_protocol.c Tue Jul 31 07:54:46 2007 @@ -1138,7 +1138,6 @@ } if (!r-assbackwards) { -apr_table_t *tmp = r-headers_out; /* For all HTTP/1.x responses for which we generate the message, * we need to avoid inheriting the normal status header fields @@ -1146,7 +1145,6 @@ * error or redirect, except for Location on external redirects. */ r-headers_out = r-err_headers_out; -r-err_headers_out = tmp; apr_table_clear(r-err_headers_out); if (ap_is_HTTP_REDIRECT(status) || (status == HTTP_CREATED)) { IMHO this is wrong. Lets take the following example: r-headers_out points to a table T1 containing the key value pairs ((A1,a1), (B1,b1)). r-err_headers_out points to a table T2 containing the key value pairs ((A2,a2), (B2,b2)). After running thru the old code (until after the apr_table_clear) the the result is: r-headers_out points to table T2 containing the key value pairs ((A2,a2), (B2,b2)). r-err_headers_out points to table T1 which is empty. Using the new code the result is r-headers_out points to table T2. r-err_headers_out points to table T2. T2 is empty. So r-headers_out and r-err_headers_out point to the *same* table and this table is *empty*. So we loose *all* output headers for further processing. Regards Rüdiger
Re: svn commit: r561477 - in /httpd/httpd/trunk/docs/manual/mod: mod_proxy.html.en mod_proxy.xml
On 01/08/07, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: Author: slive Date: Tue Jul 31 13:13:50 2007 New Revision: 561477 URL: http://svn.apache.org/viewvc?view=revrev=561477 Log: Docuemnt the x- headers added by mod_proxy_http. PR: 41097 Modified: httpd/httpd/trunk/docs/manual/mod/mod_proxy.html.en httpd/httpd/trunk/docs/manual/mod/mod_proxy.xml Modified: httpd/httpd/trunk/docs/manual/mod/mod_proxy.xml + ddThe original host requested by the client in the codeHost/code + HTTP request ehader./dd s/ehader/header/ Also, for consistency, should the argument to RewriteOptions in your earlier patch regarding vhosts be capitalised like RewriteOptions Inherit rather than RewriteOptions inherit? It's a small matter, but these things get cargo-culted and lead to the current belief that 'require' should always be lowercase :( -- noodl
Re: svn commit: r561477 - in /httpd/httpd/trunk/docs/manual/mod: mod_proxy.html.en mod_proxy.xml
On 01/08/07, Vincent Bray [EMAIL PROTECTED] wrote: s/ehader/header/ D'oh! Wrong. List. Sorry. -- noodl