From 6fe457dcd6d48ad4f3640071e24dcb20b0fbb15a Mon Sep 17 00:00:00 2001 From: Paul Schneider 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 + 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 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 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