File apache2-mod_mono-apache24.patch of Package apache2-mod_mono
From 6fe457dcd6d48ad4f3640071e24dcb20b0fbb15a Mon Sep 17 00:00:00 2001
From: Paul Schneider <paul@clogic.homeunix.net>
Date: Tue, 18 Dec 2012 16:21:41 +0100
Subject: [PATCH] Making mod_mono compile for Apache 2.4.3
(Bug id 4908)
---
configure.in | 14 ++++++++++++++
src/mod_mono.c | 39 +++++++++++++++++++++++++++++++++------
2 files changed, 47 insertions(+), 6 deletions(-)
diff --git a/configure.in b/configure.in
index d246273..6fa84b8 100644
--- a/configure.in
+++ b/configure.in
@@ -336,6 +336,16 @@ AC_TRY_RUN([
], [
])
+AC_TRY_RUN([
+ #include <ap_release.h>
+ int main ()
+ {
+ return (AP_SERVER_MAJORVERSION_NUMBER == 2 && AP_SERVER_MINORVERSION_NUMBER == 4) ? 0 : 1;
+ }
+], [
+ APACHE_VER=2.4
+], [
+])
fi
if test ! "$APACHE_VER" = "1.3" -a ! "$APACHE_VER" = "retry" ; then
@@ -385,6 +395,10 @@ if test "$APACHE_VER" = "2.2" ; then
AC_DEFINE([APACHE22],,[Compiling for Apache >= 2.2 ])
fi
+if test "$APACHE_VER" = "2.4" ; then
+ AC_DEFINE([APACHE24],,[Compiling for Apache >= 2.4 ])
+fi
+
# check for --with-mono-default-config-dir
DFLT_MONO_CONFIG_DIR=`$APXS -q SYSCONFDIR`/mod-mono-applications
AC_ARG_WITH(mono-default-config-dir,
diff --git a/src/mod_mono.c b/src/mod_mono.c
index 40e5041..ce57ad8 100644
--- a/src/mod_mono.c
+++ b/src/mod_mono.c
@@ -388,7 +388,11 @@ enum {
apache_get_userid ()
{
#ifdef HAVE_UNIXD
- return unixd_config.user_id;
+#if defined(APACHE24)
+ return ap_unixd_config.user_id;
+#else
+ return unixd_config.user_id;
+#endif
#else
return ap_user_id;
#endif
@@ -398,7 +402,11 @@ enum {
apache_get_groupid ()
{
#ifdef HAVE_UNIXD
- return unixd_config.group_id;
+#if defined(APACHE24)
+ return ap_unixd_config.user_id;
+#else
+ return unixd_config.user_id;
+#endif
#else
return ap_group_id;
#endif
@@ -408,7 +416,11 @@ enum {
apache_get_username ()
{
#ifdef HAVE_UNIXD
+#if defined(APACHE24)
+ return ap_unixd_config.user_name;
+#else
return unixd_config.user_name;
+#endif
#else
return ap_user_name;
#endif
@@ -487,7 +499,7 @@ enum {
#if defined (AP_NEED_SET_MUTEX_PERMS) && defined (HAVE_UNIXD)
DEBUG_PRINT (1, "Setting mutex permissions for %s", xsp->dashboard_lock_file);
- rv = unixd_set_global_mutex_perms (xsp->dashboard_mutex);
+ rv = ap_unixd_set_global_mutex_perms (xsp->dashboard_mutex);
if (rv != APR_SUCCESS) {
ap_log_error (APLOG_MARK, APLOG_CRIT, STATCODE_AND_SERVER (rv),
"Failed to set mutex permissions for %s",
@@ -854,9 +866,13 @@ enum {
#if defined(APACHE22)
return c->remote_addr->port;
#else
+#if defined(APACHE20)
apr_port_t port;
apr_sockaddr_port_get (&port, c->remote_addr);
return port;
+#else
+ return c->client_addr->port;
+#endif
#endif
}
@@ -867,9 +883,13 @@ enum {
#if defined(APACHE22)
return r->connection->local_addr->port;
#else
+#if defined(APACHE20)
apr_port_t port;
apr_sockaddr_port_get (&port, r->connection->local_addr);
return port;
+#else
+ return r->connection->local_addr->port;
+#endif
#endif
}
@@ -1992,9 +2012,12 @@ enum {
size += info.local_ip_len + sizeof (int32_t);
size += sizeof (int32_t);
-
- info.remote_ip_len = strlen (r->connection->remote_ip);
- size += info.remote_ip_len + sizeof (int32_t);
+#if defined(APACHE24)
+ info.remote_ip_len = strlen (r->connection->client_ip);
+#else
+ info.remote_ip_len = strlen (r->connection->remote_ip);
+#endif
+ size += info.remote_ip_len + sizeof (int32_t);
size += sizeof (int32_t);
@@ -2041,7 +2064,11 @@ enum {
i = LE_FROM_INT (i);
memcpy (ptr, &i, sizeof (i));
ptr += sizeof (int32_t);
+#if defined(APACHE24)
+ ptr += write_string_to_buffer (ptr, 0, r->connection->client_ip, info.remote_ip_len);
+#else
ptr += write_string_to_buffer (ptr, 0, r->connection->remote_ip, info.remote_ip_len);
+#endif
i = connection_get_remote_port (r->connection);
i = LE_FROM_INT (i);
memcpy (ptr, &i, sizeof (i));
--
1.7.10
From ce87d27104cf87215edfc0d8cf05d0b76606b956 Mon Sep 17 00:00:00 2001
From: Paul Schneider <paul@clogic.homeunix.net>
Date: Tue, 18 Dec 2012 16:33:08 +0100
Subject: [PATCH] Last commit introducted a compilation error for Apache
version < 2.4
---
src/mod_mono.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/mod_mono.c b/src/mod_mono.c
index ce57ad8..4f03273 100644
--- a/src/mod_mono.c
+++ b/src/mod_mono.c
@@ -499,8 +499,12 @@ enum {
#if defined (AP_NEED_SET_MUTEX_PERMS) && defined (HAVE_UNIXD)
DEBUG_PRINT (1, "Setting mutex permissions for %s", xsp->dashboard_lock_file);
+#if defined(APACHE24)
rv = ap_unixd_set_global_mutex_perms (xsp->dashboard_mutex);
- if (rv != APR_SUCCESS) {
+#else
+ rv = unixd_set_global_mutex_perms (xsp->dashboard_mutex);
+#endif
+ if (rv != APR_SUCCESS) {
ap_log_error (APLOG_MARK, APLOG_CRIT, STATCODE_AND_SERVER (rv),
"Failed to set mutex permissions for %s",
xsp->dashboard_lock_file);
--
1.7.10
From 2c7386122fbbccfe549d9028dd01dd612d90322b Mon Sep 17 00:00:00 2001
From: Paul Schneider <paul@clogic.homeunix.net>
Date: Tue, 18 Dec 2012 17:18:59 +0100
Subject: [PATCH] Fix an introduced compilation error for Apache versions <
2.0
---
src/mod_mono.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/mod_mono.c b/src/mod_mono.c
index 4f03273..31bccc9 100644
--- a/src/mod_mono.c
+++ b/src/mod_mono.c
@@ -870,12 +870,12 @@ enum {
#if defined(APACHE22)
return c->remote_addr->port;
#else
-#if defined(APACHE20)
+#if defined(APACHE24)
+ return c->client_addr->port;
+#else
apr_port_t port;
apr_sockaddr_port_get (&port, c->remote_addr);
return port;
-#else
- return c->client_addr->port;
#endif
#endif
@@ -887,12 +887,12 @@ enum {
#if defined(APACHE22)
return r->connection->local_addr->port;
#else
-#if defined(APACHE20)
+#if defined(APACHE24)
+ return r->connection->local_addr->port;
+#else
apr_port_t port;
apr_sockaddr_port_get (&port, r->connection->local_addr);
return port;
-#else
- return r->connection->local_addr->port;
#endif
#endif
}
--
1.7.10