[mod_limitipconn] update for 2.4 (patch from Jan Kaluza, #809730)

jorton jorton at fedoraproject.org
Tue Apr 17 12:22:54 UTC 2012


commit f43b499a414491d4c1b42be63fd515a198eec591
Author: Joe Orton <jorton at redhat.com>
Date:   Tue Apr 17 13:22:16 2012 +0100

    update for 2.4 (patch from Jan Kaluza, #809730)
    
    Resolves: rhbz#809730

 mod_limitipconn-0.23-httpd24.patch |   46 ++++++++++++++++++++++++++++++++++++
 mod_limitipconn.spec               |   30 +++++++++++++++++------
 2 files changed, 68 insertions(+), 8 deletions(-)
---
diff --git a/mod_limitipconn-0.23-httpd24.patch b/mod_limitipconn-0.23-httpd24.patch
new file mode 100644
index 0000000..951dbdc
--- /dev/null
+++ b/mod_limitipconn-0.23-httpd24.patch
@@ -0,0 +1,46 @@
+
+https://bugzilla.redhat.com/show_bug.cgi?id=809730
+
+diff --git a/mod_limitipconn.c b/mod_limitipconn.c
+index d8d2f9a..6262797 100644
+--- mod_limitipconn-0.23/mod_limitipconn.c.httpd24
++++ mod_limitipconn-0.23/mod_limitipconn.c
+@@ -104,7 +104,11 @@ static int check_limit(request_rec *r, l
+         return DECLINED;
+     }
+ 
++#if AP_MODULE_MAGIC_AT_LEAST(20111130,0)
++    address = r->useragent_ip;
++#else
+     address = r->connection->remote_ip;
++#endif
+ 
+     /* Only check the MIME-type if we have MIME-type stuff in our config.
+        The extra subreq can be quite expensive. */
+@@ -116,7 +120,14 @@ static int check_limit(request_rec *r, l
+ 
+         /* If there's no Content-type, use the default. */
+         if (!content_type) {
++#if !AP_MODULE_MAGIC_AT_LEAST(20090131, 0)
+             content_type = ap_default_type(r);
++#else
++            /* With 2.4, there no default type => this must be exempt. */
++            ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
++                          "mod_limitipconn: OK: no content-type configured");
++            return DECLINED;
++#endif
+         }
+ 
+         ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
+@@ -160,7 +171,11 @@ static int check_limit(request_rec *r, l
+      * this IP address */
+     for (i = 0; i < server_limit; ++i) {
+       for (j = 0; j < thread_limit; ++j) {
++#if AP_MODULE_MAGIC_AT_LEAST(20071023, 0)
++        ws_record = ap_get_scoreboard_worker_from_indexes(i, j);
++#else
+         ws_record = ap_get_scoreboard_worker(i, j);
++#endif
+         switch (ws_record->status) {
+             case SERVER_BUSY_READ:
+             case SERVER_BUSY_WRITE:
diff --git a/mod_limitipconn.spec b/mod_limitipconn.spec
index f92f266..da962be 100644
--- a/mod_limitipconn.spec
+++ b/mod_limitipconn.spec
@@ -1,19 +1,21 @@
-%{!?_httpd_apxs:    %global _httpd_apxs    apxs}
-%{!?_httpd_moddir:  %global _httpd_moddir  %{_libdir}/httpd/modules}
-%{!?_httpd_confdir: %global _httpd_confdir %{_sysconfdir}/httpd/conf.d}
+%{!?_httpd_apxs:       %{expand: %%global _httpd_apxs       %%{_sbindir}/apxs}}
+%{!?_httpd_mmn:        %{expand: %%global _httpd_mmn        %%(cat %{_includedir}/httpd/.mmn || echo missing-httpd-devel)}}
+%{!?_httpd_confdir:    %{expand: %%global _httpd_confdir    %%{_sysconfdir}/httpd/conf.d}}
+# /etc/httpd/conf.d with httpd < 2.4 and defined as /etc/httpd/conf.modules.d with httpd >= 2.4
+%{!?_httpd_modconfdir: %{expand: %%global _httpd_modconfdir %%{_sysconfdir}/httpd/conf.d}}
 
 Summary: Simultaneous connection limiting module for Apache
 Name: mod_limitipconn
 Version: 0.23
-Release: 6%{?dist}
+Release: 7%{?dist}
 Group: System Environment/Daemons
 License: ASL 2.0
 URL: http://dominia.org/djao/limitipconn2.html
 Source0: http://dominia.org/djao/limit/mod_limitipconn-%{version}.tar.bz2
 Source1: mod_limitipconn.conf
+Patch0: mod_limitipconn-0.23-httpd24.patch
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
-Requires: httpd
-Requires: httpd-mmn = %([ -a %{_includedir}/httpd/.mmn ] && cat %{_includedir}/httpd/.mmn || echo missing)
+Requires: httpd-mmn = %{_httpd_mmn}
 BuildRequires: httpd-devel
 
 %description
@@ -23,6 +25,7 @@ simultaneous downloads permitted from a single IP address.
 %prep
 %setup -q
 
+%patch0 -p1 -b .httpd24
 
 %build
 %{_httpd_apxs} -Wc,"%{optflags}" -c mod_limitipconn.c
@@ -30,8 +33,16 @@ simultaneous downloads permitted from a single IP address.
 
 %install
 rm -rf %{buildroot}
+
+%if "%{_httpd_modconfdir}" == "%{_httpd_confdir}"
+# httpd <= 2.2.x
+install -D -p -m 0644 %{SOURCE1} \
+    %{buildroot}%{_httpd_modconfdir}/limitipconn.conf
+%else
+# httpd >= 2.4.x
 install -D -p -m 0644 %{SOURCE1} \
-    %{buildroot}%{_httpd_confdir}/limitipconn.conf
+    %{buildroot}%{_httpd_modconfdir}/10-limitipconn.conf
+%endif
 install -D -p -m 0755 .libs/mod_limitipconn.so \
     %{buildroot}%{_httpd_moddir}/mod_limitipconn.so
 
@@ -43,11 +54,14 @@ rm -rf %{buildroot}
 %files
 %defattr(-,root,root,-)
 %doc README INSTALL LICENSE
-%config(noreplace) %{_httpd_confdir}/limitipconn.conf
+%config(noreplace) %{_httpd_modconfdir}/*.conf
 %{_httpd_moddir}/mod_limitipconn.so
 
 
 %changelog
+* Tue Apr 17 2012 Joe Orton <jorton at redhat.com> - 0.23-7
+- update for 2.4 (patch from Jan Kaluza, #809730)
+
 * Thu Mar 29 2012 Matthias Saou <http://freshrpms.net/> 0.23-6
 - Rebuild for new apache httpd... not, we will require patching.
 - Use rpm macros provided by the httpd-devel package, with sane fallbacks.


More information about the scm-commits mailing list