modcplusplus-devel Mailing List for mod_cplusplus (Page 13)
Brought to you by:
gr84b8,
johnksterling
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
(14) |
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
|
Feb
(44) |
Mar
(8) |
Apr
(33) |
May
(5) |
Jun
(5) |
Jul
(2) |
Aug
(4) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(26) |
Sep
(9) |
Oct
|
Nov
(5) |
Dec
|
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(11) |
Jun
(7) |
Jul
(2) |
Aug
(11) |
Sep
|
Oct
|
Nov
(7) |
Dec
(4) |
2005 |
Jan
(13) |
Feb
(7) |
Mar
(10) |
Apr
(11) |
May
(2) |
Jun
|
Jul
(8) |
Aug
(9) |
Sep
|
Oct
(4) |
Nov
|
Dec
|
2006 |
Jan
(12) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
(6) |
2007 |
Jan
(4) |
Feb
(13) |
Mar
(10) |
Apr
(56) |
May
(69) |
Jun
(93) |
Jul
(116) |
Aug
(62) |
Sep
(15) |
Oct
(14) |
Nov
(18) |
Dec
(11) |
2008 |
Jan
(8) |
Feb
(13) |
Mar
(32) |
Apr
(22) |
May
(15) |
Jun
(10) |
Jul
(18) |
Aug
(10) |
Sep
(16) |
Oct
(12) |
Nov
(41) |
Dec
(40) |
2009 |
Jan
(33) |
Feb
(14) |
Mar
(32) |
Apr
(47) |
May
(103) |
Jun
(100) |
Jul
(72) |
Aug
(21) |
Sep
(22) |
Oct
(30) |
Nov
(7) |
Dec
(19) |
2010 |
Jan
(8) |
Feb
(7) |
Mar
(40) |
Apr
(53) |
May
(67) |
Jun
(62) |
Jul
(26) |
Aug
(37) |
Sep
(13) |
Oct
(3) |
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Mod C. C. L. <mod...@so...> - 2005-08-07 20:25:27
|
Mod Cplusplus CVS committal Author : johnksterling Project : mod_cplusplus Module : example Dir : mod_cplusplus/example/handler Modified Files: test_auth.cpp Log Message: commit patch to fix a couple of problems: a) portability, b) uninitialized variables, and c) properly dealing with the fact that exceptions can be raised (autoptrs etc). Submitted by Jonathan Wakely <co...@co...> =================================================================== RCS file: /cvsroot/modcplusplus/mod_cplusplus/example/handler/test_auth.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- test_auth.cpp 26 Jan 2005 09:09:59 -0000 1.6 +++ test_auth.cpp 7 Aug 2005 20:24:46 -0000 1.7 @@ -11,18 +11,19 @@ int AuthHandler::check_user_id(ApacheRequestRec *pRequest) { - char *require_user; + char *require_user=0; int result = OK; - const char *sent_pw; + const char *sent_pw=0; result = pRequest->get_basic_auth_pw(&sent_pw); - ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, NULL, - "got pw: %s", sent_pw); if( !result ) { + ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, NULL, + "got pw: %s", sent_pw); + require_user = get_cpp_var(pRequest, "user"); ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, NULL, - "got pw: %s", require_user); + "got require_user: %s", require_user); if( require_user ) { const char *sent_user = pRequest->user(); |
From: John S. <jo...@st...> - 2005-08-07 15:36:11
|
Hi Jon - Just getting back from vacation, sorry for the delay. I have a queue of patches (some from before I left), I'll be reviewing them in order. This patch, at a glance, looks very good. I'll see if I can commit fixes tonight. We are due for a release (other fixes have been committed, but not released) - so hopefully I can get everything applied and released early this week. Thanks for all the great input, it really helps out. Definitely let me know of any other suggestions you have, even if they may imply API changes. The user base is pretty flexible (or at least HAS been in the past), so API changes are not out of the question. John On Jul 31, 2005, at 7:41 AM, Jonathan Wakely wrote: > Hi, > > This patch against the latest CVS version corrects a few things I found > that look wrong or dangerous. > > Firstly, in src/apache_handler.cpp if any handler thows an exception > then > the object pointed to be pRequest will not be destroyed, resulting in a > memory (and possibly other resource) leak. This can be avoided by > using > std::auto_ptr to ensure the object is destroyed. Alternatively, > couldn't the object be created on the stack instead of on the heap? > > Secondly, in src/env_value.cpp env_value::operator[] is defined to take > a (signed) int, but vector::operator[] takes unsigned. If a negative > value is passed to the function then it results in undefined behaviour. > The parameter should be unsigned, or to avoid an interface change it > should be converted to unsigned before use. > > Thirdly, example/input_filter/test_input.cpp uses a printf format > specifier of %d to print a variable of type apr_size_t, which on my > system is a size_t, which is an unsigned 64-bit type, whereas int is a > signed 32-bit type. This will truncate the value and only print part > of > it. To be portable the length should be cast to unsigned long and the > format specifier changed accordingly. > > Finally, example/handler/test_auth.cpp does not initialise the sent_pw > variable, but then uses it without checking whether it was set or not. > This can result in ap_log_error reading uninitialised memory. > > jon > > -- > "Most people would sooner die than think; in fact, they do so." > - Bertrand Russell > <mod_cplusplus-fixes.patch> |
From: Jonathan W. <co...@co...> - 2005-08-02 11:58:15
|
Jean-Fran?ois Adam wrote: > thanks for the reply. I haven't use c++ for a long time (and i > realize i've lost a lot of it!). Before C++ was standardised 'new' did return NULL, but it was changed when exceptions were added to the language. > If it's not null and ApacheRequestRec has no virtual function, > I think it would be more natural to have the function call to pass a > reference of pRequest. N.B. it makes no differencee whether ApacheRequestRec has virtual functions, passing by reference still allows the class to behave polymorphically. I agree, in principle. I have a few changes I would like to propose to mod_cplusplus, but I wasn't going to suggest this, since it would be an API change and would break existing code. I prefer to use pointers rather than references when you might want to pass NULL, but since that doesn't apply here I see no reason to prefer a pointer to a reference (except for backward-compatibility). jon -- "The future is here. It's just not evenly distributed yet." - William Gibson |
From: <jfa...@la...> - 2005-08-02 11:39:03
|
thanks for the reply. I haven't use c++ for a long time (and i =20 realize i've lost a lot of it!). If it's not null and ApacheRequestRec has no virtual function, I think it would be more natural to have the function call to pass a =20 reference of pRequest. } else { \ result =3D handler->function_name(pRequest); \ } \ IMHO i'd prefer to have a reference rather than a pointer to =20 ApacheRequestRec: class MODCPP_API ApacheHandler : public ApacheBase { public: virtual int handler(ApacheRequestRec& r) { I can use r here;} virtual int handler(ApacheRequestRec* r) { is r 0 or not ? can i =20= delete it ?;} ... } jfa Le 31 juil. 05 =E0 13:03, Jonathan Wakely a =E9crit : > Jean-Fran?ois Adam wrote: > > >> in file apache_handler.cpp line 12. Is it done intentionaly ? >> >> #define CALL_REQ_FUNCTION(function_name) \ >> int result =3D DECLINED; \ >> ApacheRequestRec *pRequest =3D new ApacheRequestRec(r); \ >> cpp_config_rec *dir_rec =3D (cpp_config_rec *) \ >> pRequest->get_dir_config(&cplusplus_module); \ >> > > I assume it's intentional, 'new' should not return NULL. > > http://parashift.com/c++-faq-lite/freestore-mgmt.html#faq-16.6 > > jon > > > |
From: Jonathan W. <co...@co...> - 2005-07-31 11:41:34
|
Hi, This patch against the latest CVS version corrects a few things I found that look wrong or dangerous. Firstly, in src/apache_handler.cpp if any handler thows an exception then the object pointed to be pRequest will not be destroyed, resulting in a memory (and possibly other resource) leak. This can be avoided by using std::auto_ptr to ensure the object is destroyed. Alternatively, couldn't the object be created on the stack instead of on the heap? Secondly, in src/env_value.cpp env_value::operator[] is defined to take a (signed) int, but vector::operator[] takes unsigned. If a negative value is passed to the function then it results in undefined behaviour. The parameter should be unsigned, or to avoid an interface change it should be converted to unsigned before use. Thirdly, example/input_filter/test_input.cpp uses a printf format specifier of %d to print a variable of type apr_size_t, which on my system is a size_t, which is an unsigned 64-bit type, whereas int is a signed 32-bit type. This will truncate the value and only print part of it. To be portable the length should be cast to unsigned long and the format specifier changed accordingly. Finally, example/handler/test_auth.cpp does not initialise the sent_pw variable, but then uses it without checking whether it was set or not. This can result in ap_log_error reading uninitialised memory. jon -- "Most people would sooner die than think; in fact, they do so." - Bertrand Russell |
From: Jonathan W. <co...@co...> - 2005-07-31 11:04:32
|
Jean-Fran?ois Adam wrote: > in file apache_handler.cpp line 12. Is it done intentionaly ? > > #define CALL_REQ_FUNCTION(function_name) \ > int result = DECLINED; \ > ApacheRequestRec *pRequest = new ApacheRequestRec(r); \ > cpp_config_rec *dir_rec = (cpp_config_rec *) \ > pRequest->get_dir_config(&cplusplus_module); \ I assume it's intentional, 'new' should not return NULL. http://parashift.com/c++-faq-lite/freestore-mgmt.html#faq-16.6 jon |
From: <jfa...@la...> - 2005-07-30 03:18:24
|
in file apache_handler.cpp line 12. Is it done intentionaly ? #define CALL_REQ_FUNCTION(function_name) \ int result = DECLINED; \ ApacheRequestRec *pRequest = new ApacheRequestRec(r); \ cpp_config_rec *dir_rec = (cpp_config_rec *) \ pRequest->get_dir_config(&cplusplus_module); \ |
From: John S. <jo...@st...> - 2005-07-29 11:31:13
|
Thanks Mike! John On Jul 29, 2005, at 6:29 AM, Michael Steinmann wrote: > Mod Cplusplus CVS List wrote: >> Mod Cplusplus CVS committal >> Author : johnksterling >> Module : mod_cplusplus >> Dir : mod_cplusplus >> Modified Files: >> configure.in Log Message: >> fix configure to properly include all directories if apr/apu are in >> different places. patch submitted by Jean-Francois Adam <jfadam> >> =================================================================== >> RCS file: /cvsroot/modcplusplus/mod_cplusplus/configure.in,v >> retrieving revision 1.26 >> retrieving revision 1.27 >> diff -u -3 -r1.26 -r1.27 >> --- configure.in 26 Mar 2005 13:24:26 -0000 1.26 >> +++ configure.in 29 Jul 2005 01:49:42 -0000 1.27 >> @@ -27,7 +27,7 @@ >> cxxflags=`$withval -q CXXFLAGS` >> extra_cppflags=`$withval -q EXTRA_CPPFLAGS` >> extra_cflags=`$withval -q EXTRA_CFLAGS` >> - INCLUDES="-I$apache_inc -I$apr_inc -I$apu_inc" >> + INCLUDES="-I$apache_inc -I$apr_inc -I$apu_inc -I$apr_inc >> -I$apu_inc" >> HTTPD_DIR=`$withval -q PREFIX` >> CONF_DIR=`$withval -q SYSCONFDIR` >> MODULES_DIR=`$withval -q LIBEXECDIR` > > > I have created a Gentoo mod_cplusplus-1.6_pre20050729.ebuild using a > snapshot from current CVS. With the change above mod_cplusplus now > builds fine on Gentoo. > > The ebuild, including earlier versions, can be found here: > http://sipx-wiki.calivia.com/svn/sipx-ebuilds/www-apache/mod_cplusplus/ > > I've posted the ebuild here as well: > http://bugs.gentoo.org/show_bug.cgi?id=100684 > > Mike > > > ------------------------------------------------------- > SF.Net email is Sponsored by the Better Software Conference & EXPO > September > 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices > Agile & Plan-Driven Development * Managing Projects & Teams * Testing > & QA > Security * Process Improvement & Measurement * > http://www.sqe.com/bsce5sf > _______________________________________________ > Modcplusplus-devel mailing list > Mod...@li... > https://lists.sourceforge.net/lists/listinfo/modcplusplus-devel > |
From: Michael S. <ms...@ca...> - 2005-07-29 10:31:36
|
Mod Cplusplus CVS List wrote: > Mod Cplusplus CVS committal > > Author : johnksterling > Module : mod_cplusplus > Dir : mod_cplusplus > > > > Modified Files: > configure.in > > > Log Message: > fix configure to properly include all directories if apr/apu are in different places. patch submitted by Jean-Francois Adam <jfadam> > =================================================================== > RCS file: /cvsroot/modcplusplus/mod_cplusplus/configure.in,v > retrieving revision 1.26 > retrieving revision 1.27 > diff -u -3 -r1.26 -r1.27 > --- configure.in 26 Mar 2005 13:24:26 -0000 1.26 > +++ configure.in 29 Jul 2005 01:49:42 -0000 1.27 > @@ -27,7 +27,7 @@ > cxxflags=`$withval -q CXXFLAGS` > extra_cppflags=`$withval -q EXTRA_CPPFLAGS` > extra_cflags=`$withval -q EXTRA_CFLAGS` > - INCLUDES="-I$apache_inc -I$apr_inc -I$apu_inc" > + INCLUDES="-I$apache_inc -I$apr_inc -I$apu_inc -I$apr_inc -I$apu_inc" > HTTPD_DIR=`$withval -q PREFIX` > CONF_DIR=`$withval -q SYSCONFDIR` > MODULES_DIR=`$withval -q LIBEXECDIR` I have created a Gentoo mod_cplusplus-1.6_pre20050729.ebuild using a snapshot from current CVS. With the change above mod_cplusplus now builds fine on Gentoo. The ebuild, including earlier versions, can be found here: http://sipx-wiki.calivia.com/svn/sipx-ebuilds/www-apache/mod_cplusplus/ I've posted the ebuild here as well: http://bugs.gentoo.org/show_bug.cgi?id=100684 Mike |
From: Mod C. C. L. <mod...@so...> - 2005-07-29 01:49:50
|
Mod Cplusplus CVS committal Author : johnksterling Module : mod_cplusplus Dir : mod_cplusplus Modified Files: configure.in Log Message: fix configure to properly include all directories if apr/apu are in different places. patch submitted by Jean-Francois Adam <jfadam> =================================================================== RCS file: /cvsroot/modcplusplus/mod_cplusplus/configure.in,v retrieving revision 1.26 retrieving revision 1.27 diff -u -3 -r1.26 -r1.27 --- configure.in 26 Mar 2005 13:24:26 -0000 1.26 +++ configure.in 29 Jul 2005 01:49:42 -0000 1.27 @@ -27,7 +27,7 @@ cxxflags=`$withval -q CXXFLAGS` extra_cppflags=`$withval -q EXTRA_CPPFLAGS` extra_cflags=`$withval -q EXTRA_CFLAGS` - INCLUDES="-I$apache_inc -I$apr_inc -I$apu_inc" + INCLUDES="-I$apache_inc -I$apr_inc -I$apu_inc -I$apr_inc -I$apu_inc" HTTPD_DIR=`$withval -q PREFIX` CONF_DIR=`$withval -q SYSCONFDIR` MODULES_DIR=`$withval -q LIBEXECDIR` |
From: Mod C. C. L. <mod...@so...> - 2005-07-16 01:22:18
|
Mod Cplusplus CVS committal Author : johnksterling Project : mod_cplusplus Module : example Dir : mod_cplusplus/example/output_filter Modified Files: test_output.cpp Log Message: fix debian compile error =================================================================== RCS file: /cvsroot/modcplusplus/mod_cplusplus/example/output_filter/test_output.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- test_output.cpp 26 Jan 2005 08:56:20 -0000 1.5 +++ test_output.cpp 16 Jul 2005 01:22:10 -0000 1.6 @@ -26,23 +26,25 @@ new_brigade = apr_brigade_create(f->r->pool, f->c->bucket_alloc); - APR_BRIGADE_FOREACH(input_bucket,bb) { - const char *data; - apr_size_t len; - char *buf = NULL; - apr_size_t n; - apr_bucket *new_bucket; + for( input_bucket = APR_BRIGADE_FIRST(bb); + input_bucket != APR_BRIGADE_SENTINEL(bb); + input_bucket = APR_BUCKET_NEXT(input_bucket) ) { + const char *data; + apr_size_t len; + char *buf = NULL; + apr_size_t n; + apr_bucket *new_bucket; - if(APR_BUCKET_IS_EOS(input_bucket)) { - apr_bucket *eos_bucket = apr_bucket_eos_create(f->c->bucket_alloc); - APR_BRIGADE_INSERT_TAIL(new_brigade, eos_bucket); - break; + if(APR_BUCKET_IS_EOS(input_bucket)) { + apr_bucket *eos_bucket = apr_bucket_eos_create(f->c->bucket_alloc); + APR_BRIGADE_INSERT_TAIL(new_brigade, eos_bucket); + break; } - apr_bucket_read(input_bucket, &data, &len, APR_BLOCK_READ); + apr_bucket_read(input_bucket, &data, &len, APR_BLOCK_READ); - buf = (char *)apr_pcalloc(f->r->pool, len); - for(n = 0; n < len ; ++n) { + buf = (char *)apr_pcalloc(f->r->pool, len); + for(n = 0; n < len ; ++n) { buf[n] = data[len - n -1]; } |
From: Mod C. C. L. <mod...@so...> - 2005-07-16 01:22:18
|
Mod Cplusplus CVS committal Author : johnksterling Project : mod_cplusplus Module : src Dir : mod_cplusplus/src Modified Files: env_hash.cpp Log Message: fix debian compile error =================================================================== RCS file: /cvsroot/modcplusplus/mod_cplusplus/src/env_hash.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- env_hash.cpp 26 Sep 2003 01:25:15 -0000 1.1 +++ env_hash.cpp 16 Jul 2005 01:22:11 -0000 1.2 @@ -10,8 +10,9 @@ unsigned long hash = 5381; int c; - while (c = *str++) + while( (c = *str++) ) { hash = ((hash << 5) + hash) + c; /* hash * 33 + c */ + } return hash; } |
From: John S. <jo...@st...> - 2005-05-25 11:30:19
|
Hi - Interesting... I'll look into it and apply a fix asap. John On May 25, 2005, at 7:15 AM, Michael Steinmann wrote: > for some reason the local 'include' does not get included on Gentoo and > the build fails. > > I've added the following patch to my ebuild to make it work: > > --- configure.in.orig 2005-05-25 12:16:13.000000000 +0200 > +++ configure.in 2005-05-25 12:14:27.000000000 +0200 > @@ -27,7 +27,7 @@ > cxxflags=`$withval -q CXXFLAGS` > extra_cppflags=`$withval -q > EXTRA_CPPFLAGS` > extra_cflags=`$withval -q EXTRA_CFLAGS` > - INCLUDES="-I$apache_inc -I$apr_inc -I$apu_inc" > + INCLUDES="-I../include -I$apache_inc -I$apr_inc > -I$apu_inc" > HTTPD_DIR=`$withval -q PREFIX` > CONF_DIR=`$withval -q SYSCONFDIR` > MODULES_DIR=`$withval -q LIBEXECDIR` > > The ebuild can be checked-out here: > http://sipx-wiki.calivia.com/svn/sipx-ebuilds/www-apache/mod_cplusplus/ > > Mike > > > ------------------------------------------------------- > This SF.Net email is sponsored by Yahoo. > Introducing Yahoo! Search Developer Network - Create apps using Yahoo! > Search APIs Find out how you can build Yahoo! directly into your own > Applications - visit > http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005 > _______________________________________________ > Modcplusplus-devel mailing list > Mod...@li... > https://lists.sourceforge.net/lists/listinfo/modcplusplus-devel > |
From: Michael S. <ms...@ca...> - 2005-05-25 11:16:00
|
for some reason the local 'include' does not get included on Gentoo and the build fails. I've added the following patch to my ebuild to make it work: --- configure.in.orig 2005-05-25 12:16:13.000000000 +0200 +++ configure.in 2005-05-25 12:14:27.000000000 +0200 @@ -27,7 +27,7 @@ cxxflags=`$withval -q CXXFLAGS` extra_cppflags=`$withval -q EXTRA_CPPFLAGS` extra_cflags=`$withval -q EXTRA_CFLAGS` - INCLUDES="-I$apache_inc -I$apr_inc -I$apu_inc" + INCLUDES="-I../include -I$apache_inc -I$apr_inc -I$apu_inc" HTTPD_DIR=`$withval -q PREFIX` CONF_DIR=`$withval -q SYSCONFDIR` MODULES_DIR=`$withval -q LIBEXECDIR` The ebuild can be checked-out here: http://sipx-wiki.calivia.com/svn/sipx-ebuilds/www-apache/mod_cplusplus/ Mike |
From: Mod C. C. L. <mod...@so...> - 2005-04-23 12:03:21
|
Mod Cplusplus CVS committal Author : johnksterling Project : mod_cplusplus Module : include Dir : mod_cplusplus/include Modified Files: cpp_request.h Log Message: more documentation fixes =================================================================== RCS file: /cvsroot/modcplusplus/mod_cplusplus/include/cpp_request.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- cpp_request.h 3 Apr 2005 19:38:24 -0000 1.13 +++ cpp_request.h 23 Apr 2005 12:03:14 -0000 1.14 @@ -189,44 +189,153 @@ /** \return Array of strings representing content languages **/ const apr_array_header_t *content_languages() const { return mRequest->content_languages; } - + + /** \return variant list validator (if negotiated) **/ const char *vlist_validator() const { return mRequest->vlist_validator; } + + /** \return If an authentication check was made, this gets set to the user name. */ const char *user() const { return mRequest->user; } + + /** \return If an authentication check was made, this gets set to the auth type. */ const char *ap_auth_type() const { return mRequest->ap_auth_type; } + + /** \return The URI without any parsing performed */ const char *unparsed_uri() const { return mRequest->unparsed_uri; } + + /** \return Just the path portion of the URI */ const char *uri() const { return mRequest->uri; } + + /** \return The filename on disk corresponding to this response */ const char *filename() const { return mRequest->filename; } + + /** \return The PATH_INFO extracted from this request */ const char *path_info() const { return mRequest->path_info; } + + /** \return The QUERY_ARGS extracted from this request */ const char *args() const { return mRequest->args; } + /** \return true if this response can not be cached */ int no_cache() const { return mRequest->no_cache; } + + /** \return true if there is no local copy of this response */ int no_local_copy() const { return mRequest->no_local_copy; } + /** \return finfo.protection (st_mode) set to zero if no such file */ apr_finfo_t finfo() const { return mRequest->finfo; } + + /** \return a struct containing the components of URI */ apr_uri_t parsed_uri() const { return mRequest->parsed_uri; } + /** + * \brief pass in a module and this method will returrn you its per-dir config + * \param m a pointer to the static module definition + * \return a void pointer to the config structure that was set for module m + **/ void *get_dir_config(module *m); + + /** + * \brief pass in a module and this method will returrn you its per-server config + * \param m a pointer to the static module definition + * \return a void pointer to the config structure that was set for module m + **/ void *get_server_config(module *m); + /** + * \brief gives you access to the encoded password sent by the client + * \param sent_pw a reference to a string pointer into the request where the password is + * \return 0 (OK) if it set the 'pw' argument (and assured + * a correct value in r->user); otherwise it returns + * an error code, either HTTP_INTERNAL_SERVER_ERROR if things are + * really confused, HTTP_UNAUTHORIZED if no authentication at all + * seemed to be in use, or DECLINED if there was authentication but + * it wasn't Basic (in which case, the caller should presumably + * decline as well). + **/ int get_basic_auth_pw(const char **sent_pw); + + /** + * \brief this method writes a character for this request + * \param c the character to write + * \return the number of bytes sent + **/ int rputc(int c); + + /** + * \brief this method writes a string for this request + * \param c the character to write + * \return the number of bytes sent + **/ int rputs(const char *str) const; + + /** + * \brief writes a buffer for this request + * \param buf the content to write + * \param nbyte the number of bytes to send from buf + * \return the number of bytes sent + **/ int rwrite(const void *buf, int nbyte); + + /** + * \brief a printf style way to write data to the request + * \param fmt The format string + * \param ... Thee arguments used to fill the format string + * \return the number of bytes sent + **/ int rprintf(const char *fmt, ...); + + /** + * \brief Flushn all the data for this request to the client + * \return number of bytes sent + **/ int rflush(); + /** + * \brief the allow options tell you what options are set for this request: + * indexes, includes, sym links, execcgi + * \return a bitmap of the options set + **/ int allow_options() { return ap_allow_options(mRequest); } + + /** \return bitmask of the allowoverrides for this request **/ int allow_overrides(){ return ap_allow_overrides(mRequest); } + + /** \return default type from the configuration, or text/plain if not set **/ const char *default_type() { return ap_default_type(mRequest); } + + /** + * \brief WARNING: This is in to be backward compatible, but is not always + * acurate (e.g. if mod_userdir is enabled). This should not be used + * \return the document root from the configuration (not necessarily the active one for this request) + **/ const char *document_root() { return ap_document_root(mRequest); } + + /** \return Lookup the login name of the remote user. Undefined if it cannot be determined **/ const char *get_remote_logname() { return ap_get_remote_logname(mRequest); } + + /** \return the server name from the reuqest **/ const char *get_server_name() { return ap_get_server_name(mRequest); } + + /** + * \brief Install a custom response handler for a given status) + * \param status the status to hook into + * \param str the custom response - it can be a static string, the full path to a file, or a URL + **/ void custom_response(int status, const char *str) { ap_custom_response(mRequest, status, (char *)str); } + /** + * \brief run an internal redirect to another URI in this server + * \param new_uri the new uri to fire + **/ void internal_redirect(const char *new_uri) { ap_internal_redirect(new_uri, mRequest); } + /** + * \brief This function is designed for things like actions or CGI scripts, when + * using AddHandler, and you want to preserve the content type across + * an internal redirect. + * \param new_uri the URI to replace the current request with + **/ void internal_redirect_handler(const char *new_uri) { ap_internal_redirect(new_uri, mRequest); } |
From: John S. <jo...@st...> - 2005-04-23 11:59:14
|
I'm having second thoughts about depending on boost like this. Seems like an unnecessary dependency. If there are memory leaks I can fix them by properly owning and cleaning up the objects. I like the other pieces of your patches, though. Is there any way you can remove the dependency but include some of your other fixes (e.g. apache 2.1 compilation fixes and win32 compilation fixes)? Thanks - John On Apr 23, 2005, at 7:50 AM, John Sterling wrote: > I Pawel - > > I'm just catching up on some patches. I'm thinking of redistributing > the boost software as part of mod_cplusplus (i hate to have > dependencies, makes it harder for peops to build the software). It > appears they have a very flexible license, so I'm working on that. > > Just wanted to give you an update. > > John > > On Mar 28, 2005, at 9:08 AM, Pawel Niewiadomski wrote: > >> >> On Sat, 26 Mar 2005 09:19:28 -0500, John Sterling <jo...@st...> >> wrote : >> >>> By the way, mod_cplusplus 1.5.1 should have a fix for the shrext >>> problem. Also, I applied your other 2 patches - thanks. >> >> Great! >> I'm working on memory leaks right now. I found that there are >> dynamically allocated pointers stored in vectors, but there's >> no code that deletes them. Example: request_rec.cpp, but similar >> problems are in other files. I will send you a patch when I finish. >> I'm going to use smart pointers from boost (http://www.boost.org). >> >> -- >> **Pawel Niewiadomski**, new()foo-baz.com, http://new.foo-baz.com/ >> Virtual Qmail (http://v-q.foo-baz.com), qmail-patches >> (http://q-p.foo-baz.com) >> >> >> >> ------------------------------------------------------- >> SF email is sponsored by - The IT Product Guide >> Read honest & candid reviews on hundreds of IT Products from real >> users. >> Discover which products truly live up to the hype. Start reading now. >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click >> _______________________________________________ >> Modcplusplus-devel mailing list >> Mod...@li... >> https://lists.sourceforge.net/lists/listinfo/modcplusplus-devel >> > > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real > users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Modcplusplus-devel mailing list > Mod...@li... > https://lists.sourceforge.net/lists/listinfo/modcplusplus-devel > |
From: John S. <jo...@st...> - 2005-04-23 11:51:15
|
I Pawel - I'm just catching up on some patches. I'm thinking of redistributing the boost software as part of mod_cplusplus (i hate to have dependencies, makes it harder for peops to build the software). It appears they have a very flexible license, so I'm working on that. Just wanted to give you an update. John On Mar 28, 2005, at 9:08 AM, Pawel Niewiadomski wrote: > > On Sat, 26 Mar 2005 09:19:28 -0500, John Sterling <jo...@st...> > wrote : > >> By the way, mod_cplusplus 1.5.1 should have a fix for the shrext >> problem. Also, I applied your other 2 patches - thanks. > > Great! > I'm working on memory leaks right now. I found that there are > dynamically allocated pointers stored in vectors, but there's > no code that deletes them. Example: request_rec.cpp, but similar > problems are in other files. I will send you a patch when I finish. > I'm going to use smart pointers from boost (http://www.boost.org). > > -- > **Pawel Niewiadomski**, new()foo-baz.com, http://new.foo-baz.com/ > Virtual Qmail (http://v-q.foo-baz.com), qmail-patches > (http://q-p.foo-baz.com) > > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real > users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Modcplusplus-devel mailing list > Mod...@li... > https://lists.sourceforge.net/lists/listinfo/modcplusplus-devel > |
From: John K. S. <jo...@st...> - 2005-04-07 13:48:36
|
Great, Thanks for the contribution! I'll be reviewing this and your othe= r patch this weekend. John > is available here > https://sourceforge.net/tracker/index.php?func=3Ddetail&aid=3D1178482&g= roup_id=3D26896&atid=3D388563 > > there's also a description why is it needed and when. > > > -- > **Pawel Niewiadomski**, new()foo-baz.com, http://new.foo-baz.com/ > Podr=EAcznik Administratora Systemu Linux: http://sag.foo-baz.com/ > Podr=EAcznik Programisty Systemu Linux: http://lpg.foo-baz.com/ > Virtual Qmail (http://v-q.foo-baz.com), qmail-patches > (http://q-p.foo-baz.com) > > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=3D6595&alloc_id=3D14396&op=3Dclick > _______________________________________________ > Modcplusplus-devel mailing list > Mod...@li... > https://lists.sourceforge.net/lists/listinfo/modcplusplus-devel |
From: Pawel N. <new...@fo...> - 2005-04-07 12:33:41
|
is available here https://sourceforge.net/tracker/index.php?func=detail&aid=1178482&group_id=26896&atid=388563 there's also a description why is it needed and when. -- **Pawel Niewiadomski**, new()foo-baz.com, http://new.foo-baz.com/ Podręcznik Administratora Systemu Linux: http://sag.foo-baz.com/ Podręcznik Programisty Systemu Linux: http://lpg.foo-baz.com/ Virtual Qmail (http://v-q.foo-baz.com), qmail-patches (http://q-p.foo-baz.com) |
From: John S. <jo...@st...> - 2005-04-06 10:51:44
|
Yeah - Patch looks good. I'll commit sometime this week- thanks John On Apr 6, 2005, at 3:02 AM, Pawel Niewiadomski wrote: > > On Sun, 03 Apr 2005 12:38:24 -0700, Mod Cplusplus CVS List > <mod...@so...> wrote : > > Great idea about introducing doxygen into sources! > Did you look at the patch I sent you? > > PS > BTW reply address is broken - it's mod...@so..., > should be @lists.sourceforge.net. > > --=20 > **Pawe=A9=A9 Niewiadomski**, new()foo-baz.com, http://new.foo-baz.com/ > > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real=20 > users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=3D6595&alloc_id=3D14396&op=3Dclick > _______________________________________________ > Modcplusplus-devel mailing list > Mod...@li... > https://lists.sourceforge.net/lists/listinfo/modcplusplus-devel > |
From: Pawel N. <new...@fo...> - 2005-04-06 07:02:36
|
On Sun, 03 Apr 2005 12:38:24 -0700, Mod Cplusplus CVS List <mod...@so...> wrote : Great idea about introducing doxygen into sources! Did you look at the patch I sent you? PS BTW reply address is broken - it's mod...@so..., should be @lists.sourceforge.net. -- **Paweł Niewiadomski**, new()foo-baz.com, http://new.foo-baz.com/ |
From: Mod C. C. L. <mod...@so...> - 2005-04-03 19:38:30
|
Mod Cplusplus CVS committal Author : johnksterling Project : mod_cplusplus Module : include Dir : mod_cplusplus/include Modified Files: apache_filters.h cpp_request.h Log Message: more documentation =================================================================== RCS file: /cvsroot/modcplusplus/mod_cplusplus/include/apache_filters.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- apache_filters.h 3 Apr 2005 18:58:44 -0000 1.8 +++ apache_filters.h 3 Apr 2005 19:38:24 -0000 1.9 @@ -50,7 +50,7 @@ * \param b the bucket brigade of data * \param eMode input filtering node (e.g. AP_MODE_GETLINE) * \param eBlock tells the filter wether or not it should block - * \param readbytes if the eMode is AP_MODE_READBYTESÊthis tells the module how many bytes + * \param readbytes if the eMode is AP_MODE_READBYTES this tells the module how many bytes **/ virtual apr_status_t request_input_filter(ap_filter_t *f, =================================================================== RCS file: /cvsroot/modcplusplus/mod_cplusplus/include/cpp_request.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- cpp_request.h 27 Aug 2004 13:19:36 -0000 1.12 +++ cpp_request.h 3 Apr 2005 19:38:24 -0000 1.13 @@ -33,64 +33,160 @@ /** utility functions for formatting **/ string istring(int value, const char* format = "%d") const; string mstring(const char *cp) const; + public: ApacheRequestRec(request_rec *r, ApacheRequestRec *pPrev = NULL, ApacheRequestRec *pNext = NULL); ~ApacheRequestRec(); + /** \return The pool associated with the request **/ apr_pool_t *pool() { return mRequest->pool; } + /** \return The connection associated with the request **/ conn_rec *connection() { return mRequest->connection; } + /** \return The server associated with the request **/ ApacheServerRec *server() { return mServer; } + + /** \return Pointer to the redirected request if this is an external redirect **/ ApacheRequestRec *next() { return mNext; } + + /** \return Pointer to the previous request if this is an internal redirect **/ ApacheRequestRec *prev() { return mPrev; } + + /** \return Pointer to the main request if this is a sub-request **/ ApacheRequestRec *main() { return mMain; } + + /** \return the first line of actual http request content **/ const char *the_request() const { return mRequest->the_request; } + + /** \return HTTP/0.9, "simple" request (e.g. GET /foo w/no headers) **/ int assbackwards() const { return mRequest->assbackwards; } + + /** \return A proxy request (calculated during post_read_request/translate_name) possible values PROXYREQ_NONE, PROXYREQ_PROXY, PROXYREQ_REVERSE, PROXYREQ_RESPONSE **/ int proxyreq() const { return mRequest->proxyreq; } + + /** \return HEAD request, as opposed to GET **/ int header_only() const { return mRequest->header_only; } + + /** \return Protocol string, as given to us, or HTTP/0.9 **/ const char *protocol() const {return mRequest->protocol; } + + /** \return Protocol version number of protocol; 1.1 = 1001 **/ int proto_num() const { return mRequest->proto_num; } + + /** \return Host, as set by full URI or Host: **/ const char *hostname() const { return mRequest->hostname; } + + /** \return Time when the request started **/ apr_time_t request_time() const { return mRequest->request_time; } + + /** \return Time when the request started **/ const char *status_line() const { return mRequest->status_line; } + + /** \return Status line **/ int status() const {return mRequest->status; } + + /** \return Request method (eg. GET, HEAD, POST, etc.) **/ const char *method() const { return mRequest->method; } + + /** \return M_GET, M_POST, etc. **/ int method_number() const { return mRequest->method_number; } + + /** + * \brief 'allowed' is a bitvector of the allowed methods. + * + * A handler must ensure that the request method is one that it is capable of handling. + * Generally modules should DECLINE any request methods they do not handle. + * Prior to aborting the handler like this the handler should set r->allowed + * to the list of methods that it is willing to handle. + * This bitvector is used to construct the "Allow:" header required for OPTIONS requests, + * and HTTP_METHOD_NOT_ALLOWED and HTTP_NOT_IMPLEMENTED status codes. + * + * Since the default_handler deals with OPTIONS, all modules can usually decline to deal with OPTIONS. + * TRACE is always allowed, modules don't need to set it explicitly. + * + * Since the default_handler will always handle a GET, a module which does *not* implement GET + * should probably return HTTP_METHOD_NOT_ALLOWED. Unfortunately this means that a Script GET + * handler can't be installed by mod_actions. + * + * \return A bit vector of allowed methods + **/ apr_int64_t allowed() const { return mRequest->allowed; } + + /** \return Array of extension methods **/ const apr_array_header_t *allowed_xmethods() const {return mRequest->allowed_xmethods; } + + /** \return List of allowed methods **/ const ap_method_list_t *allowed_methods() const {return mRequest->allowed_methods; } + + /** \return byte count in stream is for body **/ apr_off_t sent_bodyct() const {return mRequest->sent_bodyct; } + + /** \return byte count of the body **/ apr_off_t bytes_sent() const { return mRequest->bytes_sent; } + + /** \return Last modified time of the requested resource **/ apr_time_t mtime() const { return mRequest->mtime; } + + /** \return sending chunked transfer-coding **/ int chunked() const { return mRequest->chunked; } + + /** \return The HTTP range header value **/ const char *range() const {return mRequest->range; } + + /** \return The so-called 'real' content length **/ apr_off_t clength() const {return mRequest->clength; } + + /** \return Remaining bytes to be read from the request **/ apr_off_t remaining() const {return mRequest->remaining; } + + /** \return Number of bytes already read from the request **/ apr_off_t read_length() const { return mRequest->read_length; } + + /** \return Method for reading the request body (e.g. REQUEST_CHUNKED_ERROR) **/ int read_body() const { return mRequest->read_body; } + + /** \return Reading chunked encoding **/ int read_chunked() const { return mRequest->read_chunked; } + /** \return MIME headers from the request **/ apr_table_t *headers_in() const { return mRequest->headers_in; } + + /** \return MIME headers from the response **/ apr_table_t *headers_out() const { return mRequest->headers_out; } + + /** \return MIME headers from the response printed even on error **/ apr_table_t *err_headers_out() const { return mRequest->err_headers_out; } + + /** \return An array of environment variables passed to the subprocess **/ apr_table_t *subprocess_env() const { return mRequest->subprocess_env; } + + /** \return Notes to pass from one module to another **/ apr_table_t *notes() const { return mRequest->notes; } + /** \return The content type of the request **/ const char *content_type(char *type = NULL) const { return type ? (mRequest->content_type = apr_pstrdup(mRequest->pool, type)) : mRequest->content_type; } + + /** \return the name of the handler assigned this request **/ const char *handler() { return mRequest->handler; } + + /** \return How to encode the data **/ const char *content_encoding() { return mRequest->content_encoding; } + + /** \return Whether the request body will be discarded **/ int discard_request_body() { return ap_discard_request_body(mRequest); } + /** \return Send blocking data to the client **/ int get_client_block(char *buf, apr_size_t bufsiz) { return ap_get_client_block(mRequest, buf, bufsiz); } + /** \return Array of strings representing content languages **/ const apr_array_header_t *content_languages() const { return mRequest->content_languages; } |
From: Mod C. C. L. <mod...@so...> - 2005-04-03 18:58:50
|
Mod Cplusplus CVS committal Author : johnksterling Project : mod_cplusplus Module : include Dir : mod_cplusplus/include Modified Files: apache_filters.h Log Message: add docs to filter api =================================================================== RCS file: /cvsroot/modcplusplus/mod_cplusplus/include/apache_filters.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- apache_filters.h 19 Jun 2002 14:11:07 -0000 1.7 +++ apache_filters.h 3 Apr 2005 18:58:44 -0000 1.8 @@ -16,14 +16,43 @@ class MODCPP_API ApacheInputFilter : public ApacheBase { public: + /** + * \brief Constructor for your input filter - called when the child thread/process is initiated + **/ ApacheInputFilter() { } + + /** + * \brief Constructor for your input filter - called when the child thread/process is cleaned up + **/ virtual ~ApacheInputFilter() { } + + /** + * \brief connection_input_filter is called to process data. This is calleed once per brigade of data + * + * \param f the filter context + * \param b the bucket brigade of data + * \param eMode input filtering node (e.g. AP_MODE_GETLINE) + * \param eBlock tells the filter wether or not it should block + * \param readbytes if the eMode is AP_MODE_READBYTESÊthis tells the module how many bytes + **/ virtual apr_status_t connection_input_filter(ap_filter_t *f, apr_bucket_brigade *b, ap_input_mode_t eMode, apr_read_type_e eBlock, apr_off_t readbytes) { return DECLINED; } + + /** + * \brief request_input_filter is called to process data. This is calleed once per brigade of data + * for a request + * + * \param f the filter context + * \param b the bucket brigade of data + * \param eMode input filtering node (e.g. AP_MODE_GETLINE) + * \param eBlock tells the filter wether or not it should block + * \param readbytes if the eMode is AP_MODE_READBYTESÊthis tells the module how many bytes + **/ + virtual apr_status_t request_input_filter(ap_filter_t *f, apr_bucket_brigade *b, ap_input_mode_t eMode, @@ -35,12 +64,32 @@ class MODCPP_API ApacheOutputFilter : public ApacheBase { public: + /** + * \brief Constructor for your output filter - called when the child thread/process is initiated + **/ ApacheOutputFilter() { } + + /** + * \brief Destructor for your output filter - called when the child thread/process is cleaned up + **/ virtual ~ApacheOutputFilter() { } + + /** + * \brief connection_output_filter is the method thats called for you to handle data + * + * \param f the filter context + * \param b the brigade to filter + **/ virtual int connection_output_filter(ap_filter_t *f, apr_bucket_brigade *b) { return DECLINED; } + /** + * \brief request_output_filter is the method thats called for you to handle data + * + * \param f the filter context + * \param b the brigade to filter + **/ virtual int request_output_filter(ap_filter_t *f, apr_bucket_brigade *b) { return DECLINED; } }; |
From: Mod C. C. L. <mod...@so...> - 2005-04-03 18:32:27
|
Mod Cplusplus CVS committal Author : johnksterling Project : mod_cplusplus Module : include Dir : mod_cplusplus/include Modified Files: apache_handler.h Log Message: start adding doxygen tags to code =================================================================== RCS file: /cvsroot/modcplusplus/mod_cplusplus/include/apache_handler.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- apache_handler.h 14 Dec 2004 13:17:04 -0000 1.11 +++ apache_handler.h 3 Apr 2005 18:32:03 -0000 1.12 @@ -21,7 +21,27 @@ class MODCPP_API ApacheBase { protected: + /** + * \brief This method allows your module to query the core for a parameter + * passed via the PassCPPVar directive in a directory block of the + * httpd.conf file. + * + * \param r An ApacheRequestRec argument + * \param name The name of the parameter you are looking for + * \return The value of the parameter + * \sa get_server_var() + **/ char *get_cpp_var(ApacheRequestRec *r, const char *name); + /** + * \brief This method allows your module to query the core for a parameter + * passed via the PassCPPVar directive in a server block of the + * httpd.conf file. + * + * \param r An ApacheRequestRec argument + * \param name The name of the parameter you are looking for + * \return The value of the parameter + * \sa get_cpp_var() + **/ char *get_server_var(ApacheServerRec *r, const char *name); }; @@ -29,17 +49,94 @@ class MODCPP_API ApacheHandler : public ApacheBase { public: + /** + * \brief Default Constructor. This is called when a child process/thread is created + **/ ApacheHandler() { } + + /** + * \brief Default destructor. This is called when a child process/thread is destroyed + **/ virtual ~ApacheHandler(void) { } + + /** + * \brief The handler method is called whenever a location mapped to your module is hit + * during the handler phase of the request cycle. + * + * \param r ApacheRequestRec containing the current request + **/ virtual int handler(ApacheRequestRec *r) {return DECLINED;} + + /** + * \brief The fixups method is called whenever a location mapped to your module is hit + * during the fixups phase of the request cycle. + * + * \param r ApacheRequestRec containing the current request + **/ virtual int fixups(ApacheRequestRec *r) {return DECLINED;} + + /** + * \brief The post_read_request method is called whenever a location mapped to your module is hit + * immediately after the request is created. + * + * \param r ApacheRequestRec containing the current request + **/ virtual int post_read_request(ApacheRequestRec *r) {return DECLINED;} + + /** + * \brief The translate_name method is called whenever a location mapped to your module is hit + * during the name translation phase. + * + * \param r ApacheRequestRec containing the current request + **/ virtual int translate_name(ApacheRequestRec *r) {return DECLINED;} + + /** + * \brief The header_parser method is called whenever a location mapped to your module is hit + * during the header parsing phase. + * + * \param r ApacheRequestRec containing the current request + **/ virtual int header_parser(ApacheRequestRec *r) {return DECLINED;} + + /** + * \brief The access_checker method is called whenever a location mapped to your module is hit + * during the access phase. + * + * \param r ApacheRequestRec containing the current request + **/ virtual int access_checker(ApacheRequestRec *r) {return DECLINED;} + + /** + * \brief The check_user_id method is called whenever a location mapped to your module is hit + * during the authentication phase. + * + * \param r ApacheRequestRec containing the current request + **/ virtual int check_user_id(ApacheRequestRec *r) {return DECLINED;} + + /** + * \brief The auth_checker method is called whenever a location mapped to your module is hit + * during the authorization phase. + * + * \param r ApacheRequestRec containing the current request + **/ virtual int auth_checker(ApacheRequestRec *r) {return DECLINED;} + + /** + * \brief The type_checker method is called whenever a location mapped to your module is hit + * during the type checking phase. + * + * \param r ApacheRequestRec containing the current request + **/ virtual int type_checker(ApacheRequestRec *r) {return DECLINED;} + + /** + * \brief The logger method is called whenever a location mapped to your module is hit + * during the logging phase. + * + * \param r ApacheRequestRec containing the current request + **/ virtual int logger(ApacheRequestRec *r) {return DECLINED;} }; @@ -48,6 +145,9 @@ typedef ApacheOutputFilter *(*output_filter_factory)(); typedef ApacheProtocol *(*protocol_factory)(); +/** + * \brief cpp_factory_t is the callback structure that allows a module to hook a type of handler. + **/ typedef struct { handler_factory handler_func; input_filter_factory input_filter_func; |
From: Mod C. C. L. <mod...@so...> - 2005-04-03 18:30:36
|
Mod Cplusplus CVS committal Author : johnksterling Module : mod_cplusplus Dir : mod_cplusplus Added Files: Doxyfile Log Message: adding doc generator |