gozer 2004/10/04 12:27:38
Modified: . Changes
t/response/TestAPI request_util.pm
todo release
xs/Apache/RequestUtil Apache__RequestUtil.h
xs/maps apache_functions.map modperl_functions.map
xs/tables/current/ModPerl FunctionTable.pm
Log:
$r->document_root can now be changed when safe to do so
Revision Changes Path
1.508 +2 -0 modperl-2.0/Changes
Index: Changes
===================================================================
RCS file: /home/cvs/modperl-2.0/Changes,v
retrieving revision 1.507
retrieving revision 1.508
diff -u -r1.507 -r1.508
--- Changes 4 Oct 2004 02:29:26 -0000 1.507
+++ Changes 4 Oct 2004 19:27:37 -0000 1.508
@@ -12,6 +12,8 @@
=item 1.99_17-dev
+$r->document_root can now be changed when safe to do so [Gozer]
+
APR::Bucket->new now requires an APR::BucketAlloc as its first argument.
New subs added: APR::Bucket::setaside, APR::Bucket::alloc_create,
APR::Bucket::alloc_destroy, APR::Brigade::bucket_alloc. [joes]
1.2 +16 -2 modperl-2.0/t/response/TestAPI/request_util.pm
Index: request_util.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/t/response/TestAPI/request_util.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- request_util.pm 15 Jul 2004 21:35:48 -0000 1.1
+++ request_util.pm 4 Oct 2004 19:27:37 -0000 1.2
@@ -7,6 +7,7 @@
use Apache::TestUtil;
use Apache::RequestUtil ();
+use Apache::MPM ();
use Apache::Const -compile => 'OK';
@@ -19,12 +20,25 @@
sub handler {
my $r = shift;
- plan $r, tests => (scalar keys %status_lines) + 8;
+ plan $r, tests => (scalar keys %status_lines) + 10;
ok $r->default_type;
- ok $r->document_root;
+ my $document_root = $r->document_root;
+ ok $document_root;
+
+ if (!Apache::MPM->is_threaded) {
+ ok t_cmp($document_root, $r->document_root('/tmp/foo'));
+ ok t_cmp('/tmp/foo', $r->document_root($document_root));
+ }
+ else {
+ eval { $r->document_root('/tmp/foo') };
+ ok t_cmp($@, qr/Can't run.*in the threaded env/,
+ "document_root is read-only under threads");
+ ok 1;
+ }
+
ok $r->get_server_name;
ok $r->get_server_port;
1.66 +0 -7 modperl-2.0/todo/release
Index: release
===================================================================
RCS file: /home/cvs/modperl-2.0/todo/release,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -r1.65 -r1.66
--- release 4 Oct 2004 02:16:42 -0000 1.65
+++ release 4 Oct 2004 19:27:37 -0000 1.66
@@ -9,13 +9,6 @@
will know exactly once libapr is fixed
owner: stas
-* $r->document_root:
- cannot currently be modified. requires locking since it is part of
- the per-server config structure which is shared between threads
- but even w/o locking one thread is not allowed to affect other
- threads with this change, so it's out of question to make this
- method set-able for threaded after the startup item
-
* $r->child_terminate:
- a must to be able to port Apache::SizeLimit, which is a
showstopper for many mp1 users wanting to move to mp2.
1.26 +16 -0 modperl-2.0/xs/Apache/RequestUtil/Apache__RequestUtil.h
Index: Apache__RequestUtil.h
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/Apache/RequestUtil/Apache__RequestUtil.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- Apache__RequestUtil.h 18 Aug 2004 05:52:22 -0000 1.25
+++ Apache__RequestUtil.h 4 Oct 2004 19:27:37 -0000 1.26
@@ -299,3 +299,19 @@
}
}
+static MP_INLINE
+const char *mpxs_Apache__RequestRec_document_root(pTHX_ request_rec *r,
+ SV *new_root)
+{
+ const char *retval = ap_document_root(r);
+
+ if (new_root) {
+ MP_CROAK_IF_THREADS_STARTED("setting $r->document_root");
+ core_server_config *conf =
+ ap_get_module_config(r->server->module_config,
+ &core_module);
+ conf->ap_document_root = SvPV_nolen(new_root);
+ }
+
+ return retval;
+}
1.105 +1 -1 modperl-2.0/xs/maps/apache_functions.map
Index: apache_functions.map
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/maps/apache_functions.map,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -r1.104 -r1.105
--- apache_functions.map 17 Sep 2004 00:07:24 -0000 1.104
+++ apache_functions.map 4 Oct 2004 19:27:37 -0000 1.105
@@ -55,7 +55,7 @@
~ap_set_content_type
#MODULE=Apache::RequestConfig
- ap_document_root
+~ap_document_root
ap_get_limit_req_body
?ap_get_limit_xml_body
>ap_core_translate
1.90 +1 -0 modperl-2.0/xs/maps/modperl_functions.map
Index: modperl_functions.map
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/maps/modperl_functions.map,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -r1.89 -r1.90
--- modperl_functions.map 24 Sep 2004 19:55:35 -0000 1.89
+++ modperl_functions.map 4 Oct 2004 19:27:37 -0000 1.90
@@ -31,6 +31,7 @@
mpxs_Apache__RequestRec_as_string
mpxs_Apache__RequestRec_pnotes | | r, key=Nullsv, val=Nullsv
mpxs_Apache__RequestRec_add_config | | r, lines, override=OR_AUTHCFG
+ mpxs_Apache__RequestRec_document_root | | r, new_root=Nullsv
#protocol module helpers
mpxs_Apache__RequestRec_location_merge
1.187 +20 -2 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm
Index: FunctionTable.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v
retrieving revision 1.186
retrieving revision 1.187
diff -u -r1.186 -r1.187
--- FunctionTable.pm 4 Oct 2004 02:16:43 -0000 1.186
+++ FunctionTable.pm 4 Oct 2004 19:27:37 -0000 1.187
@@ -1,8 +1,8 @@
package ModPerl::FunctionTable;
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-# ! WARNING: generated by ModPerl::ParseSource/0.010
-# ! Wed Sep 22 14:01:12 2004
+# ! WARNING: generated by ModPerl::ParseSource/0.01
+# ! Wed Sep 29 16:02:04 2004
# ! do NOT edit, any changes will be lost !
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -6412,6 +6412,24 @@
{
'type' => 'SV *',
'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'mpxs_Apache__RequestRec_document_root',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'new_root'
}
]
},