summaryrefslogtreecommitdiffstats
path: root/mod_perl-httpd24.patch
blob: 5b54460b6055ec5a67c974bf6a447b22b320de25 (plain)
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
From 8b8b824e0b549c1ff8a2aea65f3f0621efd1a10a Mon Sep 17 00:00:00 2001
From: Stefan Fritsch <sf@sfritsch.de>
Date: Sun, 22 Apr 2012 21:26:01 +0200
Subject: [PATCH 01/22] fix compile with httpd trunk and AP_DEBUG

some palloc debugging feature doesn't work within XS
---
 src/modules/perl/modperl_apache_includes.h |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/modules/perl/modperl_apache_includes.h b/src/modules/perl/modperl_apache_includes.h
index c93decc..dd39bf6 100644
--- a/src/modules/perl/modperl_apache_includes.h
+++ b/src/modules/perl/modperl_apache_includes.h
@@ -23,6 +23,10 @@
 #define CORE_PRIVATE
 #endif
 
+#ifdef MP_IN_XS
+#define AP_DEBUG_NO_ALLOC_POISON
+#endif
+
 #include "ap_mmn.h"
 #include "httpd.h"
 #include "http_config.h"
-- 
1.7.10.2


From c79300b3da6889231a39f7b8d1c5a453c08d3034 Mon Sep 17 00:00:00 2001
From: Stefan Fritsch <sf@sfritsch.de>
Date: Sun, 22 Apr 2012 21:48:57 +0200
Subject: [PATCH 02/22] per-module loglevel config

tell httpd that we are logging for mod_perl
---
 src/modules/perl/modperl_apache_includes.h |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/modules/perl/modperl_apache_includes.h b/src/modules/perl/modperl_apache_includes.h
index dd39bf6..a4209c5 100644
--- a/src/modules/perl/modperl_apache_includes.h
+++ b/src/modules/perl/modperl_apache_includes.h
@@ -43,4 +43,8 @@
 
 #include "util_script.h"
 
+#ifndef MP_IN_XS
+APLOG_USE_MODULE(perl);
+#endif
+
 #endif /* MODPERL_APACHE_INCLUDES_H */
-- 
1.7.10.2


From 301f912a993802feac2fb167f6cca1ed050e6213 Mon Sep 17 00:00:00 2001
From: Stefan Fritsch <sf@sfritsch.de>
Date: Sun, 22 Apr 2012 21:57:28 +0200
Subject: [PATCH 03/22] adjust test to new error log format

---
 t/response/TestAPI/aplog.pm |   18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/t/response/TestAPI/aplog.pm b/t/response/TestAPI/aplog.pm
index f2a4e19..1357311 100644
--- a/t/response/TestAPI/aplog.pm
+++ b/t/response/TestAPI/aplog.pm
@@ -93,7 +93,7 @@ sub handler {
                    APR::Const::ENOTIME, "log_rerror test");
     # can't match against the error string, since a locale may kick in
     ok t_cmp $logdiff->diff,
-        qr/\[crit\] .*?: log_rerror test/,
+        qr/\[\w*:crit\] \[pid[^]]+\] .*?: \[[^]]+\] log_rerror test/,
         '$r->log_rerror(LOG_MARK, LOG_CRIT, APR::Const::ENOTIME...)';
 
     # log_error
@@ -101,13 +101,13 @@ sub handler {
         t_server_log_error_is_expected();
         $r->log_error('$r->log_error test');
         ok t_cmp $logdiff->diff,
-            qr/\[error\] \$r->log_error test/,
+            qr/\[\w*:error\] \[pid[^]]+\] \$r->log_error test/,
             '$r->log_error(...)';
 
         t_server_log_error_is_expected();
         $s->log_error('$s->log_error test');
         ok t_cmp $logdiff->diff,
-            qr/\[error\] \$s->log_error test/,
+            qr/\[\w*:error\] \[pid[^]]+\] \$s->log_error test/,
             '$s->log_error(...)';
     }
 
@@ -116,13 +116,13 @@ sub handler {
         t_server_log_error_is_expected();
         $r->log_reason('$r->log_reason test');
         ok t_cmp $logdiff->diff,
-            qr/\[error\] access to.*failed.*reason: \$r->log_reason test/,
+            qr/\[\w*:error\] \[pid[^]]+\] access to.*failed.*reason: \$r->log_reason test/,
             '$r->log_reason(msg)';
 
         t_server_log_error_is_expected();
         $r->log_reason('$r->log_reason filename test','filename');
         ok t_cmp $logdiff->diff,
-            qr/\[error\] access to filename failed.*\$r->log_reason filename test/,
+            qr/\[\w*:error\] \[pid[^]]+\] access to filename failed.*\$r->log_reason filename test/,
             '$r->log_reason(msg, filename)';
     }
 
@@ -177,7 +177,7 @@ sub handler {
     t_server_log_warn_is_expected();
     $s->warn('$s->warn test');
     ok t_cmp $logdiff->diff,
-        qr/\[warn\] \$s->warn test/,
+        qr/\[\w*:warn\] \[pid[^]]+\] \$s->warn test/,
         '$s->warn()';
 
     {
@@ -185,7 +185,7 @@ sub handler {
         # this uses global server to get $s internally
         Apache2::ServerRec::warn("Apache2::ServerRec::warn test");
         ok t_cmp $logdiff->diff,
-            qr/\[warn\] Apache2::ServerRec::warn test/,
+            qr/\[\w*:warn\] \[pid[^]]+\] Apache2::ServerRec::warn test/,
             'Apache2::ServerRec::warn() w/o Apache2::RequestUtil->request ';
 
         Apache2::RequestUtil->request($r);
@@ -193,14 +193,14 @@ sub handler {
         # this uses the global $r to get $s internally
         Apache2::ServerRec::warn("Apache2::ServerRec::warn test");
         ok t_cmp $logdiff->diff,
-            qr/\[warn\] Apache2::ServerRec::warn test/,
+            qr/\[\w*:warn\] \[pid[^]]+\] Apache2::ServerRec::warn test/,
             'Apache2::ServerRec::warn() w/ Apache2::RequestUtil->request ';
     }
 
     t_server_log_warn_is_expected();
     warn "warn test";
     ok t_cmp $logdiff->diff,
-        qr/\[warn\] warn test/,
+        qr/\[\w*:warn\] \[pid[^]]+\] warn test/,
         'overriden via export warn()';
 
     Apache2::Const::OK;
-- 
1.7.10.2


From 94befe6a4f247988181993010374ee9d5565f6db Mon Sep 17 00:00:00 2001
From: Stefan Fritsch <sf@sfritsch.de>
Date: Tue, 24 Apr 2012 22:28:57 +0200
Subject: [PATCH 04/22] ignore some new stuff from httpd 2.4 and trunk, and
 newer aprs

these confuse "make source_scan"
---
 lib/Apache2/ParseSource.pm |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/lib/Apache2/ParseSource.pm b/lib/Apache2/ParseSource.pm
index 8027548..f35c2a8 100644
--- a/lib/Apache2/ParseSource.pm
+++ b/lib/Apache2/ParseSource.pm
@@ -139,7 +139,8 @@ sub find_includes {
                                     apr_optional mod_include mod_cgi
                                     mod_proxy mod_ssl ssl_ apr_anylock
                                     apr_rmm ap_config mod_log_config
-                                    mod_perl modperl_ apreq);
+                                    mod_perl modperl_ apreq mod_cache
+                                    mod_serf mod_dav);
         $unwanted = qr|^$unwanted|;
         my $wanted = '';
 
@@ -280,6 +281,9 @@ my %enums_wanted = (
 
 my $defines_unwanted = join '|', qw{
 HTTP_VERSION APR_EOL_STR APLOG_MARK APLOG_NOERRNO APR_SO_TIMEOUT
+APR_HOOK_PROBES_ENABLED APR_HOOK_INT_DCL_UD
+APLOG_MAX_LOGLEVEL
+APR_BEGIN_DECLS APR_END_DECLS
 };
 
 sub get_constants {
-- 
1.7.10.2


From fa4c3ba115a8a34fcc9067330d6e0a9442ba9970 Mon Sep 17 00:00:00 2001
From: Stefan Fritsch <sf@sfritsch.de>
Date: Tue, 24 Apr 2012 22:31:18 +0200
Subject: [PATCH 05/22] workaround CScan choking on glibc's headers

CScan gets rather confused if cpp's line number markers appear in the middle
of a function declaration
---
 lib/ModPerl/CScan.pm |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/ModPerl/CScan.pm b/lib/ModPerl/CScan.pm
index 6789af3..a7314c9 100644
--- a/lib/ModPerl/CScan.pm
+++ b/lib/ModPerl/CScan.pm
@@ -943,7 +943,7 @@ sub new {
     my ($sym) = gensym;
     my $cmd = WIN32 ?
         "$Cpp->{cppstdin} $Defines $addincludes $Cpp->{cppflags} $filename |" :
-        "echo '\#include \"$filename\"' | $Cpp->{cppstdin} $Defines $addincludes $Cpp->{cppflags} $Cpp->{cppminus} |";
+        "echo '\#include \"$filename\"' | $Cpp->{cppstdin} $Defines $addincludes $Cpp->{cppflags} $Cpp->{cppminus} | grep -v '^#' |";
     #my $cmd = "echo '\#include <$filename>' | $Cpp->{cppstdin} $Defines $addincludes $Cpp->{cppflags} $Cpp->{cppminus} |";
 
     (open($sym, $cmd) or die "Cannot open pipe from `$cmd': $!")
-- 
1.7.10.2


From fcb18aaa4eb48c8e213e2d23eb9e7b41f3d01e7d Mon Sep 17 00:00:00 2001
From: Stefan Fritsch <sf@sfritsch.de>
Date: Sun, 22 Apr 2012 22:39:33 +0200
Subject: [PATCH 06/22] Add U16 type to make 'make xs_generate' happy

---
 xs/maps/modperl_types.map |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/xs/maps/modperl_types.map b/xs/maps/modperl_types.map
index 3b02f02..8c6d541 100644
--- a/xs/maps/modperl_types.map
+++ b/xs/maps/modperl_types.map
@@ -7,6 +7,8 @@ struct modperl_filter_t | Apache2::OutputFilter
 SV *  | SV
 I32   | IV
 I32 * | IV
+U16   | UV
+U16 * | UV
 U32   | UV
 U32 * | UV
 
-- 
1.7.10.2


From 670cf74e6949630b9fef02d9e0b0c10d00728521 Mon Sep 17 00:00:00 2001
From: Stefan Fritsch <sf@sfritsch.de>
Date: Sun, 22 Apr 2012 22:48:31 +0200
Subject: [PATCH 07/22] add new constant CRLF_ASCII

---
 lib/ModPerl/Code.pm |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/ModPerl/Code.pm b/lib/ModPerl/Code.pm
index e43f77c..98b037d 100644
--- a/lib/ModPerl/Code.pm
+++ b/lib/ModPerl/Code.pm
@@ -889,7 +889,8 @@ EOF
 
             if ($name eq 'DECLINE_CMD' ||
                 $name eq 'DIR_MAGIC_TYPE' ||
-                $name eq 'CRLF') {
+                $name eq 'CRLF' ||
+                $name eq 'CRLF_ASCII') {
                 print $c_fh <<EOF;
               return newSVpv($alias{$name}, 0);
 EOF
-- 
1.7.10.2


From 51ce86b8ac2db8a5d408febe77c36e054fac578d Mon Sep 17 00:00:00 2001
From: Stefan Fritsch <sf@sfritsch.de>
Date: Sun, 22 Apr 2012 22:58:48 +0200
Subject: [PATCH 08/22] workaround APR_ENOKEY not found

there should be a better solution...
---
 src/modules/perl/modperl_apache_includes.h |    1 +
 1 file changed, 1 insertion(+)

diff --git a/src/modules/perl/modperl_apache_includes.h b/src/modules/perl/modperl_apache_includes.h
index a4209c5..c2fb6de 100644
--- a/src/modules/perl/modperl_apache_includes.h
+++ b/src/modules/perl/modperl_apache_includes.h
@@ -38,6 +38,7 @@
 #include "http_core.h"
 #include "http_vhost.h"
 #include "ap_mpm.h"
+#include "apu_errno.h"
 
 #include "util_filter.h"
 
-- 
1.7.10.2


From 434a596733eaf6c099e782c4969cb8a985200b78 Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Mon, 4 Jun 2012 12:54:53 +0200
Subject: [PATCH 09/22] Fix WrapXS parameters

---
 lib/ModPerl/WrapXS.pm |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/ModPerl/WrapXS.pm b/lib/ModPerl/WrapXS.pm
index 9114fc6..10a3efe 100644
--- a/lib/ModPerl/WrapXS.pm
+++ b/lib/ModPerl/WrapXS.pm
@@ -140,7 +140,7 @@ EOF
             else {
                 if ($orig_args and @$orig_args == @$args) {
                     #args were reordered
-                    $parms = join ', ', @$orig_args;
+                    $parms = $xs_parms;
                 }
 
                 $dispatch = $func->{name};
-- 
1.7.10.2


From 813a8c0e9cc99c61372effc37891717af182d286 Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Mon, 4 Jun 2012 12:57:18 +0200
Subject: [PATCH 10/22] Remove OPT_INCNOEXEC

---
 src/modules/perl/modperl_apache_compat.h |    1 -
 t/response/TestAPI/add_config.pm         |    1 -
 2 files changed, 2 deletions(-)

diff --git a/src/modules/perl/modperl_apache_compat.h b/src/modules/perl/modperl_apache_compat.h
index 78a9cb3..072ae79 100644
--- a/src/modules/perl/modperl_apache_compat.h
+++ b/src/modules/perl/modperl_apache_compat.h
@@ -68,7 +68,6 @@ AP_DECLARE(const char *) ap_get_server_version(void);
 #define MP_HTTPD_OVERRIDE_OPTS_UNSET (-1)
 #define MP_HTTPD_OVERRIDE_OPTS_DEFAULT (OPT_UNSET | \
                                         OPT_ALL | \
-                                        OPT_INCNOEXEC | \
                                         OPT_SYM_OWNER | \
                                         OPT_MULTI)
 
diff --git a/t/response/TestAPI/add_config.pm b/t/response/TestAPI/add_config.pm
index ff52cbc..c5f2d37 100644
--- a/t/response/TestAPI/add_config.pm
+++ b/t/response/TestAPI/add_config.pm
@@ -100,7 +100,6 @@ sub handler : method {
 
     my $expect =  Apache2::Const::OPT_ALL |
                   Apache2::Const::OPT_UNSET |
-                  Apache2::Const::OPT_INCNOEXEC |
                   Apache2::Const::OPT_MULTI |
                   Apache2::Const::OPT_SYM_OWNER;
 
-- 
1.7.10.2


From ea359ac8f17a9df49807499d70c66f67245bc466 Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Wed, 6 Jun 2012 08:47:21 +0200
Subject: [PATCH 11/22] Fixed logleve

---
 xs/Apache2/Log/Apache2__Log.h |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/xs/Apache2/Log/Apache2__Log.h b/xs/Apache2/Log/Apache2__Log.h
index 1866315..4a3bb4d 100644
--- a/xs/Apache2/Log/Apache2__Log.h
+++ b/xs/Apache2/Log/Apache2__Log.h
@@ -36,6 +36,7 @@ static void mpxs_ap_log_error(pTHX_ int level, SV *sv, SV *msg)
     int lmask = level & APLOG_LEVELMASK;
     server_rec *s;
     request_rec *r = NULL;
+    int loglevel = 0;
 
     if (SvROK(sv) && sv_isa(sv, "Apache2::Log::Request")) {
         r = INT2PTR(request_rec *, SvObjIV(sv));
@@ -48,13 +49,19 @@ static void mpxs_ap_log_error(pTHX_ int level, SV *sv, SV *msg)
         s = modperl_global_get_server_rec();
     }
 
-    if ((lmask == APLOG_DEBUG) && (s->loglevel >= APLOG_DEBUG)) {
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
+	loglevel = s->log.level;
+#else
+	loglevel = s->loglevel;
+#endif
+
+    if ((lmask == APLOG_DEBUG) && (loglevel >= APLOG_DEBUG)) {
         COP *cop = PL_curcop;
         file = CopFILE(cop); /* (caller)[1] */
         line = CopLINE(cop); /* (caller)[2] */
     }
 
-    if ((s->loglevel >= lmask) &&
+    if ((loglevel >= lmask) &&
         SvROK(msg) && (SvTYPE(SvRV(msg)) == SVt_PVCV)) {
         dSP;
         ENTER;SAVETMPS;
-- 
1.7.10.2


From 171af3b2747e95f2d670a34ae2cbf4899e92f941 Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Mon, 4 Jun 2012 13:12:40 +0200
Subject: [PATCH 12/22] Use module name in ap_add_loaded_module

---
 src/modules/perl/modperl_module.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/modules/perl/modperl_module.c b/src/modules/perl/modperl_module.c
index da148ca..aa1a851 100644
--- a/src/modules/perl/modperl_module.c
+++ b/src/modules/perl/modperl_module.c
@@ -832,7 +832,11 @@ const char *modperl_module_add(apr_pool_t *p, server_rec *s,
 
     modperl_module_insert(modp);
 
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
+    ap_add_loaded_module(modp, p, modp->name);
+#else
     ap_add_loaded_module(modp, p);
+#endif
 
     apr_pool_cleanup_register(p, modp, modperl_module_remove,
                               apr_pool_cleanup_null);
-- 
1.7.10.2


From 963dd2b75feff278eda95de353d5d1975304ad13 Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Mon, 4 Jun 2012 13:14:52 +0200
Subject: [PATCH 13/22] unixd_config renamed to ap_unixd_config

---
 xs/Apache2/ServerUtil/Apache2__ServerUtil.h |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/xs/Apache2/ServerUtil/Apache2__ServerUtil.h b/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
index e222c1b..f000502 100644
--- a/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
+++ b/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
@@ -162,8 +162,13 @@ SV *mpxs_Apache2__ServerRec_get_handlers(pTHX_ server_rec *s,
 #define mpxs_Apache2__ServerUtil_server(classname) modperl_global_get_server_rec()
 
 #if !defined(OS2) && !defined(WIN32) && !defined(BEOS)  && !defined(NETWARE)
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
+#define mpxs_Apache2__ServerUtil_user_id(classname)  ap_unixd_config.user_id
+#define mpxs_Apache2__ServerUtil_group_id(classname) ap_unixd_config.group_id
+#else
 #define mpxs_Apache2__ServerUtil_user_id(classname)  unixd_config.user_id
 #define mpxs_Apache2__ServerUtil_group_id(classname) unixd_config.group_id
+#endif
 #else
 #define mpxs_Apache2__ServerUtil_user_id(classname)  0
 #define mpxs_Apache2__ServerUtil_group_id(classname) 0
-- 
1.7.10.2


From 888e80fec78ec7a030b98239858dc6052253eb07 Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Mon, 4 Jun 2012 13:17:03 +0200
Subject: [PATCH 14/22] remote_ip renamed to client_ip

---
 src/modules/perl/modperl_interp.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/modules/perl/modperl_interp.c b/src/modules/perl/modperl_interp.c
index dfff32e..6ec9b56 100644
--- a/src/modules/perl/modperl_interp.c
+++ b/src/modules/perl/modperl_interp.c
@@ -496,11 +496,19 @@ modperl_interp_t *modperl_interp_select(request_rec *r, conn_rec *c,
 
         set_interp(p);
 
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
+        MP_TRACE_i(MP_FUNC,
+                   "set interp 0x%lx in %s 0x%lx (%s request for %s)\n",
+                   (unsigned long)interp, desc, (unsigned long)p,
+                   (r ? (is_subrequest ? "sub" : "main") : "conn"),
+                   (r ? r->uri : c->client_ip));
+#else
         MP_TRACE_i(MP_FUNC,
                    "set interp 0x%lx in %s 0x%lx (%s request for %s)\n",
                    (unsigned long)interp, desc, (unsigned long)p,
                    (r ? (is_subrequest ? "sub" : "main") : "conn"),
                    (r ? r->uri : c->remote_ip));
+#endif
     }
 
     /* set context (THX) for this thread */
-- 
1.7.10.2


From 6bc12830447343c70bf4e2bd10c2eb8b80c0f38c Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Mon, 4 Jun 2012 13:20:07 +0200
Subject: [PATCH 15/22] remove apu_error.h include

---
 src/modules/perl/modperl_apache_includes.h |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/modules/perl/modperl_apache_includes.h b/src/modules/perl/modperl_apache_includes.h
index c2fb6de..6f7bd8b 100644
--- a/src/modules/perl/modperl_apache_includes.h
+++ b/src/modules/perl/modperl_apache_includes.h
@@ -38,7 +38,9 @@
 #include "http_core.h"
 #include "http_vhost.h"
 #include "ap_mpm.h"
+#if !(AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4)
 #include "apu_errno.h"
+#endif
 
 #include "util_filter.h"
 
-- 
1.7.10.2


From ad6b98f6e768032c5ac20bf4d89e8bb895d788fa Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Mon, 4 Jun 2012 13:21:14 +0200
Subject: [PATCH 16/22] Declare modperl::Global methods, otherwise they are
 not parsed and included in the final build

---
 xs/ModPerl/Global/ModPerl__Global.h |   22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/xs/ModPerl/Global/ModPerl__Global.h b/xs/ModPerl/Global/ModPerl__Global.h
index 2ece589..1b38683 100644
--- a/xs/ModPerl/Global/ModPerl__Global.h
+++ b/xs/ModPerl/Global/ModPerl__Global.h
@@ -17,7 +17,11 @@
 typedef void (*mpxs_special_list_do_t)(pTHX_ modperl_modglobal_key_t *,
                                        const char *, I32);
 
-static int mpxs_special_list_do(pTHX_ const char *name,
+int mpxs_special_list_do(pTHX_ const char *name,
+                                SV *package,
+                                mpxs_special_list_do_t func);
+
+int mpxs_special_list_do(pTHX_ const char *name,
                                 SV *package,
                                 mpxs_special_list_do_t func)
 {
@@ -36,7 +40,9 @@ static int mpxs_special_list_do(pTHX_ const char *name,
     return TRUE;
 }
 
-static
+int mpxs_ModPerl__Global_special_list_call(pTHX_ const char *name,
+                                                     SV *package);
+
 MP_INLINE int mpxs_ModPerl__Global_special_list_call(pTHX_ const char *name,
                                                      SV *package)
 {
@@ -44,7 +50,11 @@ MP_INLINE int mpxs_ModPerl__Global_special_list_call(pTHX_ const char *name,
                                 modperl_perl_global_avcv_call);
 }
 
-static
+
+int mpxs_ModPerl__Global_special_list_clear(pTHX_ const char *name,
+                                                      SV *package);
+
+
 MP_INLINE int mpxs_ModPerl__Global_special_list_clear(pTHX_ const char *name,
                                                       SV *package)
 {
@@ -52,7 +62,11 @@ MP_INLINE int mpxs_ModPerl__Global_special_list_clear(pTHX_ const char *name,
                                 modperl_perl_global_avcv_clear);
 }
 
-static
+int mpxs_ModPerl__Global_special_list_register(pTHX_
+                                                         const char *name,
+                                                         SV *package);
+
+
 MP_INLINE int mpxs_ModPerl__Global_special_list_register(pTHX_
                                                          const char *name,
                                                          SV *package)
-- 
1.7.10.2


From 6036d0e2f19f2ff5c851b24d40e36f396d7c24da Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Thu, 7 Jun 2012 12:24:06 +0200
Subject: [PATCH 17/22] Fix ap_log_error and ap_log_rerror calls

---
 xs/Apache2/Log/Apache2__Log.h |   19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/xs/Apache2/Log/Apache2__Log.h b/xs/Apache2/Log/Apache2__Log.h
index 4a3bb4d..deb589f 100644
--- a/xs/Apache2/Log/Apache2__Log.h
+++ b/xs/Apache2/Log/Apache2__Log.h
@@ -77,13 +77,21 @@ static void mpxs_ap_log_error(pTHX_ int level, SV *sv, SV *msg)
     else {
         str = SvPV(msg,n_a);
     }
-
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
+    if (r) {
+        ap_log_rerror(file, line, APLOG_MODULE_INDEX, level, 0, r, "%s", str);
+    }
+    else {
+        ap_log_error(file, line, APLOG_MODULE_INDEX, level, 0, s, "%s", str);
+    }
+#else
     if (r) {
         ap_log_rerror(file, line, level, 0, r, "%s", str);
     }
     else {
         ap_log_error(file, line, level, 0, s, "%s", str);
     }
+#endif
 
     if (svstr) {
         SvREFCNT_dec(svstr);
@@ -264,12 +272,21 @@ MP_STATIC XS(MPXS_Apache2__Log_log_xerror)
 
     msgstr = SvPV(msgsv, n_a);
 
+#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4
+    if (r) {
+        ap_log_rerror(file, line, APLOG_MODULE_INDEX, level, status, r, "%s", msgstr);
+    }
+    else {
+        ap_log_error(file, line, APLOG_MODULE_INDEX, level, status, s, "%s", msgstr);
+    }
+#else
     if (r) {
         ap_log_rerror(file, line, level, status, r, "%s", msgstr);
     }
     else {
         ap_log_error(file, line, level, status, s, "%s", msgstr);
     }
+#endif
 
     SvREFCNT_dec(msgsv);
 
-- 
1.7.10.2


From 3d927e6284d239a3a9b4876752b974d1155b3517 Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Thu, 7 Jun 2012 12:25:37 +0200
Subject: [PATCH 18/22] Fix svav_getstr to return apr_status_t

---
 src/modules/perl/modperl_config.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/modules/perl/modperl_config.c b/src/modules/perl/modperl_config.c
index c4ef81f..e182f2d 100644
--- a/src/modules/perl/modperl_config.c
+++ b/src/modules/perl/modperl_config.c
@@ -479,7 +479,7 @@ typedef struct {
     PerlInterpreter *perl;
 } svav_param_t;
 
-static void *svav_getstr(void *buf, size_t bufsiz, void *param)
+static apr_status_t svav_getstr(void *buf, size_t bufsiz, void *param)
 {
     svav_param_t *svav_param = (svav_param_t *)param;
     dTHXa(svav_param->perl);
@@ -488,7 +488,7 @@ static void *svav_getstr(void *buf, size_t bufsiz, void *param)
     STRLEN n_a;
 
     if (svav_param->ix > AvFILL(av)) {
-        return NULL;
+        return APR_EOF;
     }
 
     sv = AvARRAY(av)[svav_param->ix++];
@@ -496,7 +496,7 @@ static void *svav_getstr(void *buf, size_t bufsiz, void *param)
 
     apr_cpystrn(buf, SvPVX(sv), bufsiz);
 
-    return buf;
+    return APR_SUCCESS;
 }
 
 const char *modperl_config_insert(pTHX_ server_rec *s,
-- 
1.7.10.2


From 302d524a184c19936005df9d237a194829e6bfb1 Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Thu, 7 Jun 2012 12:59:08 +0200
Subject: [PATCH 19/22] Fix undefined reference to perl_module

---
 xs/ModPerl/Const/Const.xs |   11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/xs/ModPerl/Const/Const.xs b/xs/ModPerl/Const/Const.xs
index 33a4c0c..15fa36d 100644
--- a/xs/ModPerl/Const/Const.xs
+++ b/xs/ModPerl/Const/Const.xs
@@ -17,6 +17,17 @@
 #include "mod_perl.h"
 #include "modperl_const.h"
 
+/* To define extern perl_module to something so Const.so can be loaded later */
+module AP_MODULE_DECLARE_DATA perl_module = {
+    STANDARD20_MODULE_STUFF,
+    NULL, /* dir config creater */
+    NULL,  /* dir merger --- default is to override */
+    NULL, /* server config */
+    NULL,  /* merge server config */
+    NULL,              /* table of config file commands       */
+    NULL,    /* register hooks */
+};
+
 MODULE = ModPerl::Const    PACKAGE = ModPerl::Const
 
 PROTOTYPES: disable
-- 
1.7.10.2


From b16f7c43d01db3f4f6123a15d369d5070fcc8ac0 Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Thu, 7 Jun 2012 13:31:57 +0200
Subject: [PATCH 20/22] Find for headers also in APR_INCLUDEDIR

---
 lib/Apache2/ParseSource.pm |    1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/Apache2/ParseSource.pm b/lib/Apache2/ParseSource.pm
index f35c2a8..2f68fa7 100644
--- a/lib/Apache2/ParseSource.pm
+++ b/lib/Apache2/ParseSource.pm
@@ -116,6 +116,7 @@ sub scan {
 sub include_dirs {
     my $self = shift;
     ($self->config->apxs('-q' => 'INCLUDEDIR'),
+     $self->config->apxs('-q' => 'APR_INCLUDEDIR'),
      $self->config->mp_include_dir);
 }
 
-- 
1.7.10.2


From c87aca396f11277c1ef90b13cbd3d583dda86512 Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Thu, 7 Jun 2012 13:35:46 +0200
Subject: [PATCH 21/22] Include apu_errno

---
 src/modules/perl/modperl_apr_includes.h |    1 +
 1 file changed, 1 insertion(+)

diff --git a/src/modules/perl/modperl_apr_includes.h b/src/modules/perl/modperl_apr_includes.h
index f5ae341..8e69776 100644
--- a/src/modules/perl/modperl_apr_includes.h
+++ b/src/modules/perl/modperl_apr_includes.h
@@ -35,5 +35,6 @@
 #include "apr_general.h"
 #include "apr_uuid.h"
 #include "apr_env.h"
+#include "apu_errno.h"
 
 #endif /* MODPERL_APR_INCLUDES_H */
-- 
1.7.10.2


From 454581a726fe637f3d71376b47104edce6cbb195 Mon Sep 17 00:00:00 2001
From: Jan Kaluza <hanzz.k@gmail.com>
Date: Thu, 7 Jun 2012 13:43:40 +0200
Subject: [PATCH 22/22] Add PROXYREQ define

---
 lib/Apache2/ParseSource.pm |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/Apache2/ParseSource.pm b/lib/Apache2/ParseSource.pm
index 2f68fa7..2fda9e2 100644
--- a/lib/Apache2/ParseSource.pm
+++ b/lib/Apache2/ParseSource.pm
@@ -231,7 +231,7 @@ sub generate_cscan_file {
 
 my %defines_wanted = (
     'Apache2::Const' => {
-        common     => [qw{OK DECLINED DONE}],
+        common     => [qw{OK DECLINED DONE PROXYREQ PROXYREQ_REVERSE}],
         config     => [qw{DECLINE_CMD}],
         context    => [qw(NOT_IN_ GLOBAL_ONLY)],
         http       => [qw{HTTP_}],
-- 
1.7.10.2