/
Changes
2432 lines (1707 loc) · 90.2 KB
/
Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
=head1 NAME
Changes - Apache mod_perl changes logfile
=head1 CHANGES
all changes without author attribution are by Doug MacEachern
Also refer to the Apache::Test changes log file, at Apache-Test/Changes
=over 3
=item 2.0.2-dev
t/modules/reload.t would fail if run more than 3 times, breaking
smokes [Gozer]
filter flushing now doesn't croak on connection reset
(ECONNRESET/ECONNABORTED), but just logs the event on the 'info'
level. [Stas]
RPM Friendly builds : [Gozer]
- make dist tarballs can now be built directly into RPMs with rpmbuild
- Added a new target 'make rpm' to directly build rpms from a checkout
=item 2.0.1 - June 17, 2005
B::Terse has problems with XS code, so adjust Apache::Status to eval
{} the code doing Syntax Tree Dump: syntax and execution order options
[Stas]
Fix a broken regexp in Apache2::Build::dir() on win32 that would
incorrectly attempt to fully-qualify paths like c:/some/path
[Nick *** <doink123@abv.bg>]
Fix the "No library found" warnings when building on win32 without
apxs and MP_AP_PREFIX [Nick *** <doink123@abv.bg>]
The pure-perl ModPerl::Util::unload_package implementation was
accidently deleting sub-stashes [Gozer]
If running Makefile.PL unnatended (STDIN isn't a terminal or
MP_PROMPT_DEFAULT=1), break out of potentially infinite prompt
loops [Gozer]
fix ModPerl::TestReport used by t/REPORT and mp2bug to use
ExtUtils::MakeMaker's MM->parse_version to get the interesting
packages version number, w/o trying to load them (which may fail if
the environment is not right) [Stas]
fix a bug in ModPerl::RegistryCooker: now stripping __(END|DATA)__
only at the beginning of the line [Stas]
APR::Base64 : [Torsten Foertsch <torsten.foertsch@gmx.net>]
- fix encode_len() to return the length without accounting for the
terminating '\0' as the C API does.
- fix encode() to create the string of the correct length (previously
was creating one too many)
in mod_perl callbacks merge error-notes entries rather than store just
the newest error [Mark <mark@immermail.com>]
Expose Apache2::Const::EXEC_ON_READ (added to the :override group)
[Stas]
Fix a bug in custom directive implementation, where the code called
from modperl_module_config_merge() was setting the global context
after selecting the new interpreter which was leading to a segfault in
any handler called thereafter, whose context was different
beforehand. [Stas]
=item 2.0.0 - May 20, 2005
fix global anon_cnt double-initialization bug that was causing
startup segfaults on OSX. [Gozer]
fix the ap_install target in the top-level Makefile (used for static
build) [Stas]
Reintroduce a pure-Perl version of ModPerl::Util::unload_package()
The problematic XS version is now called unload_package_xs() and
not used by default [Gozer]
More APR::Status wrappers: [Stas, Randy Kobes]
- is_EOF
- is_ECONNABORTED
- is_ECONNRESET
- is_TIMEUP
make sure that the build picks up the include directories based on the
apxs queries and only search the httpd source if $self->{MP_AP_PREFIX}
was set. Earlier it was always picking the headers from the httpd
source if it was available, which was resulting in the wrong headers
if the installed httpd was different than the source that was found
[Stas]
introduce ModPerl::RegistryPrefork and ModPerl::PerlRunPrefork, which
behave the same as ModPerl::Registry and ModPerl::PerlRun,
respectively, but chdir to the script's directory like mod_cgi
does. These two new handlers will refuse to load under threaded MPMs
where chdir can't be used as it will affect all running threads [Stas]
ModPerl::RegistryCooker::chdir_file_normal() now chdirs to the current
script's directory or the specified directory as an argument, as it
was planned in first place. Therefore switch ModPerl::Registry and
ModPerl::PerlRun to us NOP for this method call. If chdir_file is
mapped to chdir_file_normal(), then run() and
convert_script_to_compiled_handler() now call chdir to the script's
directory and at before returning go back to the server root. [Stas]
prevent undef warnings in catfile() calls in Apache2::Build when
called from the ModPerl-Registry tree [Stas]
fix modperl_brigade_dump to use apr_file_printf() instead of
fprintf(), which doesn't work everywhere [Stas]
Fix a warning triggered by `ln` on Cygwin, when running perl
Makefile.PL for a second time without previously running make
clean. [Nick *** <doink123@abv.bg>]
When compiling a static mod_perl and
MP_AP_CONFIGURE="--with-apr=/some/path" argument is given, Apache will
use the apr-config at the given path, but mod_perl was using the
default at "srclib/apr/.libs". Fix that [Nick *** <doink123@abv.bg>]
Show MP_APU_CONFIG as an argument to Makefile.PL in the Usage
menu. [Nick *** <doink123@abv.bg>]
Makefile.PL: fix the pre-rename mp2 install diagnostics code, to use
the mp version of 1.999xx and not 1.999_xx, as the latter is
unsuitable for numerical comparison, also fix the name of the reported
conflicting directory [Stas].
add APR::Status::is_(EACCES|ENOENT), and use in ModPerl::RegistryCooker
to return, as appropriate, Apache2::Const::(FORBIDDEN|NOT_FOUND),
based on $@. Also remove a check in modperl_slurp_filename
of src/modules/perl/modperl_util.c to enable $@ to be set when
opening or reading a file fails. This fixes a bug on Win32, revealed
in 404.t and redirect.t of the ModPerl-Registry tests, as reported
by Steve Hay and Markus Wichitill [Stas, Randy Kobes]
link Apache2::* and ModPerl::* to mod_perl.a and DynaLoader.a, but
-lmod_perl and -lDynaLoader don't work, and we can't supply the full
paths, because MakeMaker doesn't allow this. I workaround this by
making a symlink to mod_perl.a (called libmod_perl.a) and copy
DynaLoader.a to libDynaLoader.a (I don't create a symlink, because,
when running make clean, the real DynaLoader.a may get deleted). The
APR::* extensions are not affected, because in both cases we link them
against aprext. Also other small fixes are added. [Nick ***
<doink123@abv.bg>]
=item 1.999_23 - May 3, 2005
fix Apache2::Build::dynamic_link_MSWin32 to generate a new line after
dynamic_link code in Makefile [Nick *** <doink123@abv.bg>]
fix a warning in Apache2::Build::build_config() when building
with MP_STATIC_EXTS=1 [Nick *** <doink123@abv.bg>]
improving DSO support on cygwin. The problem with cygwin is that it
behaves like windows (it's a posix layer over windows after
all). That's why we need to supply all symbols during linking time
just like on win32, by adding -lapr-0 -laprutil-0 and -lhttpd. On
windows, Apache supplies all the three libraries and it's easy to
link, but on cygwin apache doesn't play nice and doesn't supply
libhttpd. This change adds libapr and libaprutil. [Nick ***
<doink123@abv.bg>]
improve the diagnostics when detecting mp2 < 1.999022, tell the user
which files and/or dirs need to be removed [Stas]
restore the DESTDIR support partially nuked by the apache2 rename
branch [Torsten Förtsch <torsten.foertsch gmx.net>]
add APR::Status to provide functions corresponding to the
APR_STATUS_IS_* macros of apr_errno.h, especially those composites
like APR_STATUS_IS_EAGAIN(s) which are satisfied by more than one
specific error condition. Presently only APR_STATUS_IS_EAGAIN is
provided [Randy Kobes]
fix the generation of the manpages for .pm files from sub-projects
like ModPerl-Registry (previously was creating manpage files like
.::ModPerl::PerlRun.3) [Stas]
fix the pod2man'ification part of 'make install' (using POD2MAN_EXE
instead of POD2MAN Makefile macro) [Stas]
=item 1.999_22 - April 14, 2005
******************** IMPORTANT ********************
this version of mod_perl is completely incompatible
with prior versions of mod_perl, both 1.XX and
1.99_XX. Please read the below changes carefully.
***************************************************
remove MP_INST_APACHE2 installation option and Apache2.pm - all
mod_perl related files will now be installed so they are visible
via standard @INC. also, refuse to install over mod_perl 2 versions
less than 1.999_22. [Geoffrey Young]
s/Apache::/Apache2::/g and s/mod_perl/mod_perl2/g in all module
APIs. so, Apache::RequestRec is now Apache2::RequestRec,
Apache::compat is now Apache2::compat, and so on. [joes]
move all Apache:: constants to Apache2::Const and all APR:: constants
to APR::Const. for example, Apache:OK is now Apache2::Const::OK and
APR::SUCCESS is now APR::Const::SUCCESS. [Geoffrey Young]
add $ENV{MOD_PERL_API_VERSION} as something that clearly distinguishes
which mod_perl version is being used at request time. [Geoffrey Young]
rename Apache->request() to Apache2::RequestUtil->request(), and
Apache->server() to Apache2::ServerUtil->server()
[Geoffrey Young]
fix Apache2::Status which was bailing out on trying to load modules
with dev versions like 2.121_02 [Stas]
When parsing Makefile.PL MP_* options, handle correctly the MP_FOO=0
entries [Philip M. Gollucci <pgollucci@p6m7g8.com>]
init the anonsub hash for base perl and each vhost +Parent (previously
was init'ed only for the base perl) [Stas]
fix a bug when a non-threaded perl is used and anonymous sub is pushed
at the server startup (the CV wasn't surviving) [Stas]
Make sure that CPAN shell doesn't triple over usage of
$ExtUtils::MakeMaker::VERSION [Randy Kobes]
Apache2::RequestRec->new now sets $r->request_time [Stas]
remove CGI.pm and Apache::Request dependencies from Apache2::Status
since they weren't used at all [Geoffrey Young]
Fixes for Apache2::Reload's touchfile feature (return Apache2::Const::OK
instead of 1) [Chris Warren <chwarren@cisco.com>]
cygwin fixes: [Nick *** <doink123@abv.bg>]
- doesn't like XS wrapper starting with 'static'
- need to compile everything with -DCYGWIN
ModPerl::RegistryCooker API change: s/rewrite_shebang/shebang_to_perl/
the new API now returns the string to prepend before the rest of the
script, instead of rewriting the content, which is both faster and
doesn't mislead the perl debugger [Dominique Quatravaux
<dom@idealx.com>]
Starting from ExtUtils::MakeMaker 6.26 went back to pm_to_blib target
from pm_to_blib.ts introduced in 6.22, so needed to fix the glue_pod
target, so install will work correctly [Stas]
Syntax errors in <Perl> sections were not correctly caught and
reported. [Gozer]
when building mp2 EU::MM looks into Apache-Test/MANIFEST and complains
about the missing Apache-Test/META.yml (which is indeed not included
in the modperl package due to the PAUSE problems of dealing with more
than one META.yml. Solution: Exclude Apache-Test/MANIFEST from
mod_perl distribution package. [Stas]
ModPerl::Registry no longer checks for -x bit (we don't executed
scripts anyway), and thus works on acl-based filesystems. Also
replaced the -r check with a proper error handling when the file is
read in. [Damon Buckwalter <buckwad@gmail.com>]
Apache2::RequestUtil::slurp_filename now throws an APR::Error exception
object (before it was just croaking). [Stas]
fix APR::Error's overload of '==' (it was always returning true
before), and add the corresponding '!=' [Stas]
if $r->document_root was modified, restore it at the end of request
[joes]
Apache2::ServerRec method which set the non-integer fields in the
server_rec, now copy the value from the perl scalar, so if it changes
or goes out of scope the C struct is not affected. Using internal perl
variables to preserve the value, since using the server pool to
allocate the memory will mean a memory leak [Stas]
add the escape_url entry in the ModPerl::MethodLookup knowledgebase
[Stas]
Apache2::SubProcess::spawn_proc_prog now can be called in a void
context, in which case all the communication std pipes will be closed
[Stas]
fix a bug in $r->document_root, which previously weren't copying the
new string away [Stas]
introduce a new build option MP_AP_DESTDIR to aid package builders
direct the Apache-specific files to the right place. [Cory Omand
<Cory.Omand@Sun.COM>]
Fix bug in modperl_package_clear_stash() segfaulting when
encountering declared but not yet defined subroutines.
[Steve Hay <steve.hay@uk.radan.com>, Gozer]
win32 needs PERL_SYS_INIT3/PERL_SYS_TERM calls [Steve Hay
<steve.hay@uk.radan.com>]
Fix broken MP_STATIC_EXTS=1 build. [Gozer]
Perl -Duse64bit fix. Pointers can't just be generically
casted from/to IVs. Use PTR2IV/INT2PTR instead. [Gozer]
Perl -Duse64bit fix. apr_size_t pointers can't just be generically
casted from/to UVs. Use PTR2UV/INT2PTR instead. [Gozer]
fix a bug in Apache2::Build::dir: If the right directory isn't found in
the for loop $dir still contains a > value, so the ||= has no
effect. [Nick Wellnhofer <wellnhofer@aevum.de>]
=item 1.999_21 - January 22, 2005
PerlPostConfigRequire was trying to detect missing files early on,
but without searching thru @INC, causing false negatives. Better off
skipping that check and leave it to modperl_require_file() to report
problems with finding the file. [Patrick LeBoutillier
<patrick.leboutillier@gmail.com>, Gozer]
add a perl bug workaround: with USE_ITHREADS perl leaks pthread_key_t
on every reload of libperl.{a,so} (it's allocated on the very first
perl_alloc() and never freed). This becomes a problem on apache
restart: if the OS limit is 1024, 1024 restarts later things will
start crashing [Gisle Aas <gisle@ActiveState.com>, Stas]
on Irix mod_perl.so needs to see the libperl.so symbols, which
requires the -exports option immediately before -lperl. [Gordon Lack
<gml4410@ggr.co.uk>]
pool arguments to startup and connection callbacks must be blessed
into APR::Pool and not Apache::Pool class [joes]
Make PerlSetEnv, PerlPassEnv and %ENV in PerlRequre, PerlModule,
PerlConfigRequire and PerlPostConfigRequire affect each other, so a
change in one of these is immediately seen in the others. [Pratik
<pratiknaik gmail.com>, Stas]
=item 1.999_20 - January 5, 2005
the autogenerated modules (and some implemented in xs/ modules) are
now getting the same version number as $mod_perl::VERSION (the
exception are APR modules which get 0.009_000 for now). [Stas]
until we figure out how to tell PAUSE index about versions of the
autogenerated modules, create a fake module which lists all the
autogenerated modules and their versions and include that in the
distro. [Stas]
moving to the triplet version notation, which requires us to bump 1.99
=> 1.999 so 1.999020 (mp2) > 1.29 (mp1). [Stas]
Now we are gong to have:
$mod_perl::VERSION : "1.099020"
int $mod_perl::VERSION : 1.09902
$mod_perl::VERSION_TRIPLET: 1.99.20
<Perl> and PerlPostConfigRequires were leaking some memory at
startup. Use parms->temp_pool instead of parms->pool for temporary
memory allocations. [Gozer]
deal with a situation where an object is used to construct another
object, but it's then auto-DESTROYed by perl rendering the object that
used it corrupted. the solution is to make the newly created objects
refer to the underlying object via magic attachment. only objects
using objects that have DESTROY are effected. This concerns some of
the methods accepting the custom APR::Pool object (not native pools
like $r->pool). [Stas]
Adjusted:
- APR::Brigade: new
- APR::Finfo: stat
- APR::IpSubnet: new
- APR::Table: copy, overlay, make
- APR::ThreadMutex: new
- APR::URI: parse
- Apache::RequestUtil: new
- APR::Pool: new
- APR::BucketAlloc: new
APR::Bucket::alloc_create moved to APR::BucketAlloc::new
APR::Bucket::alloc_destroy moved to APR::BucketAlloc::destroy [Stas]
prefork handlers optimisation: don't dup the handler struct unless
this is a threaded-mpm [Stas]
speed up the 'perl Makefile.PL' stage [Randy Kobes]:
- reduce the number of calls to build_config() of
Apache::Build within ModPerl::BuildMM
- cache the results of the calls to apxs_cflags, apxs_extra_cflags,
and apxs_extra_cppflags in Apache::Build
- in apxs of Apache::Build, return a cached result only when defined
move ModPerl::Util::exit() into mod_perl.so, since it needs to work,
even if ModPerl::Util wasn't loaded [Stas]
=item 1.99_19 - December 23, 2004
$r->hostname is now writable [Gozer]
Static build with a Perl without ithreads and a non-threaded MPM
would segfault on startup. Caused by a bug in perl's perl_shutdown()
code. Fixed in Perl 5.8.2, so it's now a build requirement [Gozer]
replace the added in 1.99_17 code on resetting/restoring PL_tainted,
with explicit reset before and after each each callback. This solves a
complicated tainting issues caused when perl exception object is
thrown. rgs suggested that it should be safe, similar to perl's own
pp_nextstate which says: /* Each statement is presumed innocent */
[Stas]
New configuration directives: [Gozer]
- PerlConfigRequire
Just like PerlRequire, but _always_ triggers an immediate
interpreter startup
- PerlPostConfigRequire
A delayed form of PerlRequire, that waits until the post_config
phase before require'ing files
fix a warning in Apache::Status [John Williams <williams tni.com>]
Ignore Apache-Test/META.yml in distribution tarballs until PAUSE
is capable of handling multiple META.yml files in one distro [Gozer]
modperl_exports.c now wraps all exported functions in a #ifndef
function_name wrapper to help in weeding out functions that only make
sense for certain Perl configurations (perlio, threads) (which also
fixes static build against perlio-disabled perls, like 5.6.x) [Gozer]
for make test, skip configuring fastcgi if it's found in the global
httpd.conf, as it causes crashes in the test suite [Stas]
fix Makefile.PL arguments parser to support more than one MP_foo
option on the same line (including .makepl_args.mod_perl2 file) [Stas]
fix compilation issues in ModPerl::Util::current_perl_id (on some
builds newSVpvf can't be resolved but Perl_newSVpvf works just
fine). [Stas, Markus Wichitill <mawic@gmx.de>]
fix APR::Error::str to return a lexical variable, rather than a
string. This function is called by SvTRUE in modperl_errsv() via
overload and on win32 (and randomly on linux) causes crashes via:
"Attempt to free temp prematurely" warning, where this 'temp' is the
string returned by this function. Making it a lexical variable before
returning it, resolves the problem. [Steve Hay]
fix META.yaml s/private/no_index/ (to hide the bundled Apache-Test
from PAUSE indexer) [Randy Kobes]
=item 1.99_18 - December 12, 2004
Fix x86_64 warnings in modperl_restart_count_*, due to casting between
integers and pointer types [Joe Orton]
open_logs and post_config handlers require the Apache::OK return code
or the server aborts, so we need to log an error in case the handler
didn't fail but returned something different from Apache::OK [Stas]
new function ModPerl::Util::current_perl_id() which returns something
like (.e.g 0x92ac760) (aTHX) under threaded mpm and 0 under
non-threaded perl (0x0). Useful for debugging modperl under threaded
perls. [Stas]
make sure that modperl's internal post_config callback, which amongst
other things, cloning perl interpreters is running as
modperl_hook_post_config_last APR_HOOK_REALLY_LAST, which ensures that
user's post_config callbacks are run before the cloning. now the code
from config phase's startup.pl can be safely moved to the post_config
phase's equivalent. [Stas]
Further sync with libapr constants changes: [Stas]
- the constants
APR::(READ|WRITE|CREATE|APPEND|TRUNCATE|BINARY|EXCL|BUFFERED|DELONCLOSE)
now have a prefix APR::FOPEN_ and moved group s/filemode/fopen/
- constants from the fileprot group moved to the fprot group and the
prefix has changed: from APR::FILEPROT_ to APR::FPROT_
- this also fixes the import of APR_EXCL as an error constant
$r->print() and tied print() now return 0E0 (zero but true) when the
call was successful but for zero bytes. [Geoffrey Young]
a new function Apache::ServerUtil::server_shutdown_cleanup_register to
register cleanups to be run at server shutdown. [Stas]
$bb->cleanup is no more segfaulting (was segfaulting due to a broken
prototype in APR, and consequently invalid XS glue code) [Randy Kobes,
Stas]
make sure that ABSPERLRUN and ABSPERLRUN are defined in
src/modules/perl/Makefile (needed by win32 build) [Stas]
For static builds, mod_perl header files were being installed
into apache's source tree instead of where apache installed it's
own headers [Gozer]
modperl_threads_started() wasn't working under static worker build,
due to MP_threads_started static variable not being reset on
restart. Now resetting it. [Stas]
@INC shrinking efforts: [Stas]
1) when adding $ServerRoot don't add the trailing / (as it ends up
twice when added by A-T w/o trailing /)
2) add $ServerRoot/lib/perl only if it actually exists
For static builds, we now run 'make clean' in httpd's source
tree before running ./configure if the source tree has been
configured before [Gozer]
Apache::SizeLimit ported [Perrin Harkins <perrin elem.com>]
create a new subpool modperl_server_user_pool (from
modperl_server_pool), which is used internally by
Apache::ServerUtil::server_restart_register. This ensures that
user-registered cleanups are run *before* perl's internals cleanups
are run. (previously there was a problem with non-threaded perls which
were segfaulting on user cleanups, since perl was already gone by that
time). [Stas]
Starting from ExtUtils::MakeMaker 6.22 it no longer generates
pm_to_blib target, but pm_to_blib.ts, so needed to fix the glue_pod
target, so install will work correctly [Stas]
Apache::RequestUtil : $r->child_terminate() implemented for
non-threaded MPMs. [Gozer]
new API Apache::ServerUtil::restart_count() which can be used to tell
whether the server is starting/restarting/gracefully
restarting/etc. Based on this feature implement
$Apache::Server::Starting and $Apache::Server::ReStarting in
Apache::compat [Stas]
Apache::Resource ported to mp2 [Stas]
If none of MP_APXS, MP_AP_PREFIX and MP_USE_STATIC were specified when
configuring Makefile.PL, we now prompt for APXS path first and only if
that fails ask for MP_AP_PREFIX. This is a requirement to get 'make
test' find httpd. [Stas]
Dynamically prompt and add MP_INST_APACHE2=1 when installing on
systems with mod_perl 1 preinstalled. [Stas]
fix the logging call in RegistryCooker [Lars Eggert <lars.eggert
netlab.nec.de>]
fix $r->filename in Apache::compat to update the finfo struct (which
is how it worked in mp1) [Stas]
enclose all occurences of eval_* with ENTER;SAVETMPS;
... FREETMPS;LEAVE; previously things just happened to work, due to
external scopes which was not very reliable and some change could
introduce obsure bugs. [Stas]
in case a native apache response filter is configured outside the
<Location> block with PerlSet*Filter directive, make sure that
mod_perl doesn't try to add it as connection filter (previously was
logging an error like: [error] a content filter was added without a
request: includes) [Stas]
replace the slow implementation of anon handlers using B::Deparse,
with per-interpreter cache of compiled CODE refs (sort of emulating
named subroutines for anonymous handlers) [Stas].
avoid segfaults when a bogus $r object is used [Stas]
Remove magicness of PerlLoadModule and implement Apache::Module::add()
for modules that implement their own configuration directives [Gozer]
Apache::Connection::remote_ip is now settable (needed to set the
remote_ip record based on proxy's X-Forwarded-For header) [Stas]
Fix Modperl::Util::unload_package() [Gozer]
- Mistakenly skipping small entries of size 2 and less
- Leave entries from other packages alone
$filter->remove now works with native (non-modperl) filters + test
[Torsten Förtsch <torsten.foertsch gmx.net>]
=item 1.99_17 - October 22, 2004
Implement Apache->unescape_url_info in Apache::compat and drop it
from the official API for CGI::Util::unescape() as a suggested
replacement [Gozer]
fix xs_generate to croak on duplicate entries in xs/maps files
[Christian Krause <chkr plauener.de>]
Workaround a possible bug in Perl_load_module() [Gozer]
Fix a problem building with non-GNU make (can't make target dynamic
in xs/APR/aprext) [Gozer]
escape HTML in dumped variables by Apache::Status [Markus Wichitill
<mawic@gmx.de>]
$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]
reimplement APR::Pool life-scope handling, (the previous
implementation had problems) [joes]
make sure that Apache::Filter::read, APR::Socket::recv,
Apache::RequestIO::read, APR::Brigade::flatten, and APR::Bucket::read
all return tainted data under -T [Stas]
tag the custom pools created by mod_perl for easier pools debug [Joe
Orton]
fix a bug in non-ithreaded-perl implementation where the cached
compiled CODE refs of httpd.conf-inlined one-liner handlers like:
PerlFixupHandler 'sub { use Apache::Const qw(DECLINED); DECLINED }'
didn't have the reference count right. [Stas]
per-server PerlSetEnv and PerlPassEnv values are properly added
to %ENV when only a per-directory handler is configured.
[Geoffrey Young]
resolve several 'Use of uninitialized value in...' warnings in
Apache::Status [Stas].
make install and static build now correctly installs mod_perl as
well as the statically built apache [Gozer]
if some code changes the current interpreter's tainted state to on,
the return value from the handler callback will be tainted, and we
fail to deal with that. So revert to coercing any return value, but
undef (a special case for exit()). to IV, so that tainted values are
handled correctly as well. [Stas]
make sure that each handler callback starts with a pristine
tainted-ness state, so that previous callback calls won't affect the
consequent ones. Without this change any handler triggering eval or
another function call, that checks TAINT_PROPER, will crash mod_perl
with: "Insecure dependency in eval while running setgid. Callback
called exit." farewell message [Stas]
make sure that 'make distclean' cleans all the autogenerated files
[Stas]
$r->log_reason has been ported and moved out of Apache::compat
[Gozer]
APR::OS::thread_current renamed APR::OS::current_thread_id and
now returns the actual thread_id instead of an object that
needed to be dereferenced to get at the thread_id [Gozer]
change a bunch of the APR:: constants to have a better prefix
(APR::FILETYPE_* and APR::FILEPROT_). libapr will be changed soon too
[Stas]
Generate modperl_exports.c for static builds to prevent the
linker from stripping needed but unused symbols [Gozer]
Add .libs/ as part of the library search path when building
against httpd's source tree [Gozer]
In the static build, run make in httpd's srclib/ early to have
generated files present at mod_perl configure time [Gozer]
When searching for ap(r|u)-config in httpd's source tree, search
into srclib/apr-util as well as srclib/apr [Gozer]
Remove APR::Finfo::pool as it has no use to us [Stas]
get PerlSetVar and PerlAddVar multi-level merges to (finally) work
properly. [Rici Lake <rici ricilake.net>]
MP_AP_BUILD configure option removed. Now implicit when MP_USE_STATIC
is specified [Gozer]
Apache::Module $mod->version() and $mod->minor_version() renamed
to $mod->ap_api_major_version() and $mod->ap_api_minor_version
for clarity [Gozer]
Apache::Log changes: [Stas]
- moved to compat: Apache::warn, Apache->warn, Apache::Server->warn,
Apache::Server::warn
- re-enabled $r->warn
- removed support for Apache::ServerRec->warn
(Apache::ServerRec::warn is still there)
Apache::Directive conftree() changed from class method to
regular subroutine [Gozer]
Apache::Module top_module() and get_config() as class methods
added to Apache::compat for backwards compatibility [Gozer]
Apache::Module top_module() and get_config() changed from class
methods to regular subroutines [Gozer]
Added Apache::CmdParms::add_config() to work around a memory
leak discovered with <Perl> sections in .htaccess files [Gozer]
Added ModPerl::Util::unload_package() to remove a loaded package
as thoroughly as possible by clearing it's stash. [Gozer]
fix Apache->request($r) to be set-able even w/: PerlOptions
-GlobalRequest [Stas]
Add Apache::Reload->unregister_module() to explicitely remove a
module from Apache::Reload's monitoring list [Gozer]
introduce a custom modperl error message for failing filter handlers
(previously 'unknown error' coming from rc=500 was logged) [Stas]
Fix Apache::Log methods/functions to log into the vhost's error_log
file (if there is one). ( $s->log->*, $s->log_error, $s->log_serror,
Apache::ServerRec::warn, etc.). Apache::ServerRec can now export its
warn function to override CORE::warn [Stas]
Fix $s->log->*, $s->log_error and $s->log_serror to again log into the
vhost's error_log file (if there is one). [Stas]
$s->log->warn and other $s->log->foo are now logging to the right
vhost server and not the global one. modperl_sv2server_rec was
broken. [Stas]
Fix a glue_pod make target bug, when .pm file doesn't exist,
e.g. ThreadMutex.pm is not created on unless
$apr_config->{HAS_THREADS} [Stas]
Introduce APR::Socket::poll to poll a non-blocking socket [Ken Simpson
<ksimpson@larch.mailchannels.com>]
Fix the error message when the minimal required httpd version is not
satisfied [Pratik <pratiknaik@gmail.com>]
Fix interactive prompting at perl Makefile.PL, when no APXS or
MP_AP_PREFIX were provided. now asking for an alternative location if
the suggested choices weren't selected. [Stas]
Added APR::URI->rpath method. Returns the path of an uri minus
path_info, if any. [Gozer]
moved Apache::current_callback() to ModPerl::Util::current_callback
where it belongs [Gozer]
modperl_perl_module_loaded() fixed to use %INC to determine if a module
is loaded instead of checking for the existence of a stash [Gozer]
fix the modperl build, where httpd has been built against separate
installations of apr-util and apr, where apr-util has been installed
with a different includedir to apr. [Joe Orton]
$Apache::Server::SaveConfig is now $Apache::PerlSections::Save
[Geoffrey Young]
=item 1.99_16 - Aug 22, 2004
Fix a compilation problem breaking 1.99_15 (sv_copypv was added in
perl 5.7.3) [Jason Woodward <woodwardj@jaos.org>]
Added $r->content_languages in Apache::RequestRec [Gozer]
APR::Bucket: add delete() and destroy() methods [Stas]
=item 1.99_15 - Aug 20, 2004
replace the memory allocation for modperl filter handlers to use a
temporary subpool of the ap_filter_t object. previously using perl's
safemalloc had problems on win32 (randomly my_perl == NULL) [Stas]
Disable Apache::HookRun::run_create_request -- it's already run
internally by Apache::RequestRec->new [Stas]
Update Apache::RequestRec->new() to initialize members of request_rec
which were added some time ago (without it we were getting segfaults
in the new pseudo_http test. [Stas]
Apache::CmdParms->limited member replaced by is_method_limited()
method [Gozer]
Apache::Module changes [Gozer]
- readwrite => readonly:
cmds, next, name, module_index, minor_version, version
- removed: remove_module
ensure that a sub-dir Apache-Test exists in the source distro (this is
a requirement, since the test suite relies on the particular
Apache-Test version distributed with the mod_perl source) [Stas]
combine handler resolving failure error with the actual error, so
there is only one logged entry [Stas]
pod manpages are now glued to all .pm files for which .pod exists at
'make install' phase [Stas]
Apache::RequestIO::sendfile() now indicates which file it has failed
to open on failure. [Stas]
fix Apache::SubRequest's methods: lookup_file, lookup_uri,
lookup_method_uri to default the last argument to
r->proto_output_filters (no request filters for the subrequest) and
not r->output_filters->next as it was before (one filter was getting
skipped and the rest of the filters were applied *twice*). [Stas]
Apache::CmdParms changes [Gozer]
- readwrite => readonly:
override, limited, directive, pool, temp_pool, server, path,
cmd, context, err_directive
- removed: limited_xmethods, xlimited, config_file, err_directive
Fix a bug in APR::Bucket->new when a passed argument was of type
PADTMP [Stas]
Apache::Connection changes [Stas, "Fred Moyer" <fred /about/
taperfriendlymusic.org>]
- readwrite => readonly:
pool, base_server, local_addr, remote_addr, remote_ip, remote_host,
aborted, local_ip, local_host, id, conn_config, sbh, bucket_alloc
- removed: logname
Move check_cmd_context from Apache::Command to Apache::CmdParms.
[Gozer]
Add :context group of constants for check_cmd_context().
NOT_IN_VIRTUALHOST, NOT_IN_LIMIT, NOT_IN_DIRECTORY, NOT_IN_LOCATION,
NOT_IN_FILES, NOT_IN_DIR_LOC_FILE & GLOBAL_ONLY [Gozer]
Removed Apache::Command method soak_end_container [Gozer]
Removed Apache::Module methods (dynamic_load_handle and
find_module_name) [Gozer]
All Apache::Command methods are now read-only [Gozer]
Removed Apache::Command methods (func and cmd_data) [Gozer]
Removed Apache::Directive methods (data & walk_config) [Gozer]
All Apache::Directive methods are now read-only [Gozer]
Filters should not reset $@ if it was already set before
invocation [Gozer]
Apache::compat server_root_relative now correctly handles absolute
paths like ap_server_root_relative does [Gozer]
Fix a bug in <Perl> sections with multiple aliases in a
virtualhost container. [Gozer]
PerlModule, PerlRequire, Perl and <Perl> is now supported in
.htaccess. They will run for each request. [Gozer]
removed support for httpd 2.0.46. httpd 2.0.47 is now the minimum
supported version. [Geoffrey Young]
Static builds for httpd >= 2.0.51 available. With the new MP_AP_BUILD
option, configure and compile an httpd with mod_perl statically linked
in [Gozer]
Apache::RequestRec methods changes [Stas]
- readwrite => readonly:
connection, canonical_filename, header_only, main, next, prev,
pool, per_dir_config, request_config, proto_num, protocol,
request_time, server, the_request, unparsed_uri
- removed:
remaining - this method is not needed if the deprecated
$r->client_block methods aren't used, (use $r->read
$r->instead)
canonical_filename - it's a private member
The func Apache::SubProcess::spawn_proc_prog is now a method:
$r->spawn_proc_prog [Stas]
Apache::Process methods (pool, pconf and short_name) are now read-only
[Stas]
($r|$c|$s)->server_root_relative were removed. Now only an explicit
and somewhat deprecated function API remains:
Apache::ServerUtil::server_root_relative($pool, $path); it's too easy
to cause memory leak with this method, and it's inefficient as it
duplicates the return value, to avoid potential segfaults if the pool
it was allocated from gets destroyed and the value is attempted to be
used. Instead of this method use the equivalent:
File::Spec->catfile(Apache::ServerUtil::server_root, $fname); [Stas]
$r->psignature now lives in the package it belongs to:
Apache::RequestUtil (previously lived in Apache::ServerUtil). [Stas]
A few functions moved namespace from Apache:: to Apache::ServerUtil::
(to make it easier to find the container of the function): [Stas]
- exists_config_define
- server_root
- get_server_built
- get_server_version
fix an old outstanding bug in the APR::Table's TIE interface with
each()/values() over tables with multi-values keys. Now the produced
order is correct and consistent with keys(). Though, values() works
correctly only with perl 5.8.x and higher. [Joe Schaefer]
require Perl 5.6.1, 5.6.0 isn't supported for a long time, but we
weren't aborting at the Makefile.PL stage [Stas]
Apache::RequestUtil::method_register($s->process->pconf, 'FOO'); is
now $s->method_register('FOO').
Apache::RequestUtil::add_version_component($s->process->pconf, 'BAR/0.1');
is now $s->add_version_component('BAR/0.1'). [Stas]
Remove $Apache::Server::StrictPerlSections. Now, all <Perl>
sections errors are fatal by default and cause server startup to
abort on error. [Gozer]
Fix ($r|$filter|$bucket)->read() functions to run the set magic logic,
to handle cases when a passed buffer to fill is not a regular
scalar. [Stas]
Apache::ServerRec accessors changes: [Stas]
- readonly accessors:
process, next, is_virtual, module_config, lookup_defaults and
addrs
- readwrite accessors with the exception of threaded mpms, where the
accessors are writable only before the child_init phase (i.e. before
threads are spawned):
server_admin, server_hostname, port, error_fname, error_log,
loglevel, timeout, keep_alive_timeout, keep_alive_max, keep_alive,
names, wild_names, limit_req_line, limit_req_fieldsize,
limit_req_fields, and path
supports a new type of struct accessor, which is just like read/write
one, but doesn't allow write access starting at the ChildInit phase
under threaded mpm (to avoid thread-safely issues) [Stas]
In order to be consistent with Apache::RequestRec, Apache::Server is
now Apache::ServerRec and all methods/functions from Apache::Server
now live in Apache::ServerRec. [Stas]
Use a context-specific Perl_load_module() instead of load_module(), to
avoid the problem with 'load_module' symbol resolution on certain
platforms, where for some reason it doesn't get resolved at compile
time to Perl_load_module_nocontext [Stas]
Make it possible to disable mod_perl for the base server, but enable
it for the virtual hosts [Stas]
Removed the deprecated path argument to $r->add_config() [Gozer]
Created a META.yml for CPAN and friends, including Apache-Test as
a private resource to keep CPAN from installing mod_perl when a
user just wants Apache::Test [Gozer]
Moving HTTP specific functions get_status_line, method_register from
Apache:: to Apache::RequestUtil:: to match their container [Stas]
Adjust the list of mod_perl header files installed into the Apache2
include/ directory, made necessary from the renaming and refactoring
arising from the decoupling of APR and APR::* from mod_perl.so.
Also include modperl_apr_perlio.h under xs/APR/PerlIO/ in
the list of such files installed [Stas, Randy Kobes]
$r->read()/READ now throw exceptions [Stas]
$r->rflush now returns nothing (was always returning APR::SUCCESS
before) [Stas]
bug reports generating code: [Stas]
- add (apr|apu)-config linking info
- show the full path to the config file used to get the data for the
report
The APR and APR::* family of modules can now be used without having
to load mod_perl.so. On *nix, this is done by compiling the needed
functions from the appropriate sources used to build mod_perl.so
into APR.so, and then arranging for APR::* to 'use APR ()'. On Win32,
a static library of needed functions is built, and APR/APR::*
then link into this library [Stas, Joe Schaefer, Randy Kobes]