diff -Nru mod-mono-2.4.3/aclocal.m4 mod-mono-2.10/aclocal.m4 --- mod-mono-2.4.3/aclocal.m4 2009-11-17 18:38:45.000000000 +0000 +++ mod-mono-2.10/aclocal.m4 2011-01-13 22:48:12.000000000 +0000 @@ -7965,162 +7965,6 @@ m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# -# Copyright © 2004 Scott James Remnant . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- -AC_DEFUN([PKG_PROG_PKG_CONFIG], -[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=m4_default([$1], [0.9.0]) - AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - PKG_CONFIG="" - fi - -fi[]dnl -])# PKG_PROG_PKG_CONFIG - -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# -# Similar to PKG_CHECK_MODULES, make sure that the first instance of -# this or PKG_CHECK_MODULES is called, or make sure to call -# PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_EXISTS], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -if test -n "$PKG_CONFIG" && \ - AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then - m4_ifval([$2], [$2], [:]) -m4_ifvaln([$3], [else - $3])dnl -fi]) - - -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- -m4_define([_PKG_CONFIG], -[if test -n "$$1"; then - pkg_cv_[]$1="$$1" - elif test -n "$PKG_CONFIG"; then - PKG_CHECK_EXISTS([$3], - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], - [pkg_failed=yes]) - else - pkg_failed=untried -fi[]dnl -])# _PKG_CONFIG - -# _PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- -AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi[]dnl -])# _PKG_SHORT_ERRORS_SUPPORTED - - -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -# -# -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_MODULES], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl -AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl - -pkg_failed=no -AC_MSG_CHECKING([for $1]) - -_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) -_PKG_CONFIG([$1][_LIBS], [libs], [$2]) - -m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS -and $1[]_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details.]) - -if test $pkg_failed = yes; then - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - ifelse([$4], , [AC_MSG_ERROR(dnl -[Package requirements ($2) were not met: - -$$1_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -_PKG_TEXT -])], - [AC_MSG_RESULT([no]) - $4]) -elif test $pkg_failed = untried; then - ifelse([$4], , [AC_MSG_FAILURE(dnl -[The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -_PKG_TEXT - -To get pkg-config, see .])], - [$4]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - ifelse([$3], , :, [$3]) -fi[]dnl -])# PKG_CHECK_MODULES - # Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation diff -Nru mod-mono-2.4.3/AUTHORS mod-mono-2.10/AUTHORS --- mod-mono-2.4.3/AUTHORS 2009-10-26 20:20:34.000000000 +0000 +++ mod-mono-2.10/AUTHORS 2011-01-13 22:32:35.000000000 +0000 @@ -1,4 +1,6 @@ Daniel Lopez Ridruejo Gonzalo Paniagua Javuer +Joshua Tauberer +Marek Habersack diff -Nru mod-mono-2.4.3/ChangeLog mod-mono-2.10/ChangeLog --- mod-mono-2.4.3/ChangeLog 2009-11-17 18:38:39.000000000 +0000 +++ mod-mono-2.10/ChangeLog 2011-01-13 22:32:35.000000000 +0000 @@ -1,38 +1,17 @@ -2009-11-09 Marek Habersack +2010-02-13 Gonzalo Paniagua Javier - * mod_mono.c: implemented a list of URLs in the control panel, - based on patch from Heiner Wolf , - thanks! + * configure.in: check for strndup(). + * src/glib_compat.c: added g_strndup() from eglib. + Fixes the compilation for systems without strndup(). -2009-11-06 Marek Habersack +2009-08-24 Marek Habersack - * mod_mono.c (fork_mod_mono_server): initialize supplementary - group ids after forking. Patch from Philip Tricca - , thanks! - -2009-09-21 Marek Habersack - - * mod_mono.c: added new directive to disable hidden file/directory - protection in the backend (MonoCheckHiddenFiles). - * mod_mono.8.in: documented MonoCheckHiddenFiles + * configure.in: no longer checks for glib 2009-08-22 Marek Habersack * mod_mono.conf.in: added X-Powered-By header. Fixes bug #400825 -2009-03-16 Marek Habersack - - * mod_mono.c (ensure_dashboard_initialized): do the XXGLOBAL - detection based on the passed alias. Better fix for #476289 - -2009-03-14 Marek Habersack - - * mod_mono.c (ensure_dashboard_initialized): takes an argument - which tells it whether it's called as part of the XXGLOBAL (auto - app) server and, if yes, turns off the dashboard attachment - critical error which in this case is a false alarm. Fixes bug - #476289 - 2009-03-09 Marek Habersack * autogen.sh: added support for detecting libtool on Mac, which @@ -41,19 +20,14 @@ 2009-03-08 Marek Habersack * configure.in: added detection of glib - * mod_mono.8.in: added documentation for the new MonoIOMAP - directive. - * mod_mono.c (send_entire_file): attempts to map file name using - mono_portability_find_file which is able to find files with the - same name but different case if MONO_IOMAP is in effect. - Added a new directive, MonoIOMAP which takes two parameters - the - alias and MONO_IOMAP-style value (all/case/drive). This directive - switches MONO_IOMAP on for that alias within mod_mono as well as - exports the MONO_IOMAP environment variable in the backend's - environment. - * mono-io-portability.c, mono-io-portability.h: added. Copied from - mono runtime and modified for mod_mono purposes. +2009-02-20 Marek Habersack + + * configure.in: added --with-debug-level to set the DEBUG_PRINT + output level. + Removed Apache 1.3 support. + + * AUTHORS, INSTALL, README: updated 2009-02-16 Marek Habersack @@ -64,17 +38,6 @@ those signals being blocked, the forked backend would lock up as soon as GC would start collecting. Thanks to Zoltan Varga for noticing that the signals are blocked. Fixes bug #472732 - (mono_execute_request): When a connection attempt fails, do not - start the backend immediately but first check if another backend - is restarting it. If yes, retry several times to connect to the - new backend pausing between attempts. If all connection attempts - fail and we've been waiting on another copy of mod_mono to start - the backend, make another round (helpful on heavily loaded - servers). When we get to the point where we are about to start the - backend, do NOT remove the socket file. Doing so introduces a race - condition and we can safely assume that the owner of the socket - file hasn't change and therefore creating a new socket on top of - it will succeed. Fixes bug #472732 2009-01-21 Gonzalo Paniagua Javier diff -Nru mod-mono-2.4.3/config.in mod-mono-2.10/config.in --- mod-mono-2.4.3/config.in 2009-11-17 18:38:45.000000000 +0000 +++ mod-mono-2.10/config.in 2011-01-13 22:48:13.000000000 +0000 @@ -69,6 +69,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H +/* Define to 1 if you have the `strndup' function. */ +#undef HAVE_STRNDUP + /* Define to 1 if you have the `strrchr' function. */ #undef HAVE_STRRCHR diff -Nru mod-mono-2.4.3/configure mod-mono-2.10/configure --- mod-mono-2.4.3/configure 2009-11-17 18:38:46.000000000 +0000 +++ mod-mono-2.10/configure 2011-01-13 22:48:14.000000000 +0000 @@ -795,8 +795,6 @@ APUCONFIG APRCONFIG APXS -GLIB_DEPENDENCIES_LIBS -GLIB_DEPENDENCIES_CFLAGS PKG_CONFIG CPP OTOOL64 @@ -913,7 +911,9 @@ with_gnu_ld enable_libtool_lock with_crosspkgdir +enable_quiet_build enable_debug +with_debug_level with_remove_display enable_gcov enable_gprof @@ -931,10 +931,7 @@ LDFLAGS LIBS CPPFLAGS -CPP -PKG_CONFIG -GLIB_DEPENDENCIES_CFLAGS -GLIB_DEPENDENCIES_LIBS' +CPP' # Initialize some variables set by options. @@ -1570,6 +1567,7 @@ --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) + --enable-quiet-build Enable quiet build (on by default) --enable-debug build mod_mono in debug mode --enable-gcov build mod_mono for gcov testing --enable-gprof build mono for gprof profiling @@ -1581,6 +1579,7 @@ both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-crosspkgdir=/path/to/pkg-config/dir + --with-debug-level set the debug messages level to the specified value (0-9, 0 is the most verbose) --with-remove-display remove the DISPLAY variable from environment before starting backends --with-apxs=PATH Path to apxs --with-apr-config=PATH Path to apr-config (apache 2.0). You may use @@ -1612,11 +1611,6 @@ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor - PKG_CONFIG path to pkg-config utility - GLIB_DEPENDENCIES_CFLAGS - C compiler flags for GLIB_DEPENDENCIES, overriding pkg-config - GLIB_DEPENDENCIES_LIBS - linker flags for GLIB_DEPENDENCIES, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -2405,7 +2399,7 @@ # Define the identity of the package. PACKAGE=mod_mono - VERSION=2.4.3 + VERSION=2.10 cat >>confdefs.h <<_ACEOF @@ -4355,13 +4349,13 @@ else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:4358: $ac_compile\"" >&5) + (eval echo "\"\$as_me:4352: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:4361: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:4355: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:4364: output\"" >&5) + (eval echo "\"\$as_me:4358: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -5567,7 +5561,7 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 5570 "configure"' > conftest.$ac_ext + echo '#line 5564 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -7420,11 +7414,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7423: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7417: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7427: \$? = $ac_status" >&5 + echo "$as_me:7421: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -7759,11 +7753,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7762: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7756: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7766: \$? = $ac_status" >&5 + echo "$as_me:7760: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -7864,11 +7858,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7867: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7861: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:7871: \$? = $ac_status" >&5 + echo "$as_me:7865: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -7919,11 +7913,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7922: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7916: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:7926: \$? = $ac_status" >&5 + echo "$as_me:7920: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -10719,7 +10713,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10722 "configure" +#line 10716 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -10815,7 +10809,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10818 "configure" +#line 10812 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11521,6 +11515,13 @@ fi +# Check whether --enable-quiet-build was given. +if test "${enable_quiet_build+set}" = set; then + enableval=$enable_quiet_build; enable_quiet_build=$enableval +else + enable_quiet_build=yes +fi + # Checks for header files. { $as_echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } @@ -13048,7 +13049,8 @@ -for ac_func in memset mkdir unsetenv putenv setenv setrlimit select strcasecmp strerror strrchr dup2 + +for ac_func in memset mkdir unsetenv putenv setenv setrlimit select strcasecmp strerror strrchr dup2 strndup do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -13149,234 +13151,6 @@ done -GLIB_REQUIRED_VERSION=1.3.11 - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_PKG_CONFIG+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:$LINENO: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi - -fi - -pkg_failed=no -{ $as_echo "$as_me:$LINENO: checking for GLIB_DEPENDENCIES" >&5 -$as_echo_n "checking for GLIB_DEPENDENCIES... " >&6; } - -if test -n "$GLIB_DEPENDENCIES_CFLAGS"; then - pkg_cv_GLIB_DEPENDENCIES_CFLAGS="$GLIB_DEPENDENCIES_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_REQUIRED_VERSION\"") >&5 - ($PKG_CONFIG --exists --print-errors "glib-2.0 >= $GLIB_REQUIRED_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_GLIB_DEPENDENCIES_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= $GLIB_REQUIRED_VERSION" 2>/dev/null` -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$GLIB_DEPENDENCIES_LIBS"; then - pkg_cv_GLIB_DEPENDENCIES_LIBS="$GLIB_DEPENDENCIES_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_REQUIRED_VERSION\"") >&5 - ($PKG_CONFIG --exists --print-errors "glib-2.0 >= $GLIB_REQUIRED_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_GLIB_DEPENDENCIES_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= $GLIB_REQUIRED_VERSION" 2>/dev/null` -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - GLIB_DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glib-2.0 >= $GLIB_REQUIRED_VERSION" 2>&1` - else - GLIB_DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --print-errors "glib-2.0 >= $GLIB_REQUIRED_VERSION" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$GLIB_DEPENDENCIES_PKG_ERRORS" >&5 - - { { $as_echo "$as_me:$LINENO: error: Package requirements (glib-2.0 >= $GLIB_REQUIRED_VERSION) were not met: - -$GLIB_DEPENDENCIES_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables GLIB_DEPENDENCIES_CFLAGS -and GLIB_DEPENDENCIES_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&5 -$as_echo "$as_me: error: Package requirements (glib-2.0 >= $GLIB_REQUIRED_VERSION) were not met: - -$GLIB_DEPENDENCIES_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables GLIB_DEPENDENCIES_CFLAGS -and GLIB_DEPENDENCIES_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&2;} - { (exit 1); exit 1; }; } -elif test $pkg_failed = untried; then - { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables GLIB_DEPENDENCIES_CFLAGS -and GLIB_DEPENDENCIES_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables GLIB_DEPENDENCIES_CFLAGS -and GLIB_DEPENDENCIES_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; }; } -else - GLIB_DEPENDENCIES_CFLAGS=$pkg_cv_GLIB_DEPENDENCIES_CFLAGS - GLIB_DEPENDENCIES_LIBS=$pkg_cv_GLIB_DEPENDENCIES_LIBS - { $as_echo "$as_me:$LINENO: result: yes" >&5 -$as_echo "yes" >&6; } - : -fi - # # --enable-debug # @@ -13396,6 +13170,28 @@ fi # +# --with-debug-level +# +{ $as_echo "$as_me:$LINENO: checking What level debug messages should be printed at" >&5 +$as_echo_n "checking What level debug messages should be printed at... " >&6; } + +# Check whether --with-debug-level was given. +if test "${with_debug_level+set}" = set; then + withval=$with_debug_level; debug_level=$withval +else + debug_level=0 +fi + +if test "x$enable_debug" = "xyes" ; then + CFLAGS="$CFLAGS -DDEBUG_LEVEL=$debug_level" + { $as_echo "$as_me:$LINENO: result: $debug_level" >&5 +$as_echo "$debug_level" >&6; } +else + { $as_echo "$as_me:$LINENO: result: debug output disabled" >&5 +$as_echo "debug output disabled" >&6; } +fi + +# # --with-remove-display # { $as_echo "$as_me:$LINENO: checking whether mod_mono should remove the DISPLAY variable from environment" >&5 @@ -13965,58 +13761,11 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# ensure we have apache 1.3 +# We no longer support Apache < 2.0 if test "$APACHE_VER" = "1.3" ; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include - -int -main () -{ - - char *version = SERVER_BASEREVISION; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - - APACHE_VER=1.3 - -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - - APACHE_VER=retry - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + { { $as_echo "$as_me:$LINENO: error: Apache 1.3 is no longer supported. mod_mono now requires at least Apache 2.0" >&5 +$as_echo "$as_me: error: Apache 1.3 is no longer supported. mod_mono now requires at least Apache 2.0" >&2;} + { (exit 1); exit 1; }; } else if test "$cross_compiling" = yes; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 @@ -14148,9 +13897,9 @@ fi if test "$APACHE_VER" = "1.3"; then - CFLAGS="$CFLAGS -DAPACHE13 -DEAPI" - { $as_echo "$as_me:$LINENO: result: $APACHE_VER" >&5 -$as_echo "$APACHE_VER" >&6; } + { { $as_echo "$as_me:$LINENO: error: Apache 1.3 is no longer supported. mod_mono now requires at least Apache 2.0" >&5 +$as_echo "$as_me: error: Apache 1.3 is no longer supported. mod_mono now requires at least Apache 2.0" >&2;} + { (exit 1); exit 1; }; } fi # @@ -14167,7 +13916,7 @@ CFLAGS="$CFLAGS -DGCOV -O0 -fprofile-arcs -ftest-coverage" fi - if test ! "$APACHE_VER" = "1.3"; then + if true; then APACHE2_TRUE= APACHE2_FALSE='#' else @@ -14175,13 +13924,12 @@ APACHE2_FALSE= fi -if test ! "$APACHE_VER" = "1.3" ; then + cat >>confdefs.h <<\_ACEOF #define APACHE2 /**/ _ACEOF -fi if test "$APACHE_VER" = "2.2" ; then @@ -14210,93 +13958,12 @@ fi -if test ! "$APACHE_VER" = "1.3" ; then - found_apr_socket_connect=yes - -cat >>confdefs.h <<\_ACEOF -#define HAVE_APR_SOCKET_CONNECT /**/ -_ACEOF - -else - found_apr_socket_connect=no - { $as_echo "$as_me:$LINENO: checking for apr_socket_connect in -lapr-0" >&5 -$as_echo_n "checking for apr_socket_connect in -lapr-0... " >&6; } -if test "${ac_cv_lib_apr_0_apr_socket_connect+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lapr-0 $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char apr_socket_connect (); -int -main () -{ -return apr_socket_connect (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_lib_apr_0_apr_socket_connect=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_apr_0_apr_socket_connect=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_apr_0_apr_socket_connect" >&5 -$as_echo "$ac_cv_lib_apr_0_apr_socket_connect" >&6; } -if test "x$ac_cv_lib_apr_0_apr_socket_connect" = x""yes; then - found_apr_socket_connect=yes -fi - - if test "x$found_apr_socket_connect" = "xyes" ; then +found_apr_socket_connect=yes cat >>confdefs.h <<\_ACEOF #define HAVE_APR_SOCKET_CONNECT /**/ _ACEOF - fi - -fi MONO_PREFIX=`$PKG_CONFIG --silence-errors --variable=prefix mono` if test x$MONO_PREFIX = "x" ; then @@ -14390,6 +14057,13 @@ +if test x$enable_quiet_build = xyes; then + ac_config_commands="$ac_config_commands quiet" + + ac_config_commands="$ac_config_commands quiet-libtool" + +fi + ac_config_files="$ac_config_files Makefile mod_mono.conf src/Makefile man/mod_mono.8 man/Makefile" cat >confcache <<\_ACEOF @@ -15265,6 +14939,7 @@ +shell=$SHELL _ACEOF @@ -15277,6 +14952,8 @@ "include/mod_mono_config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/mod_mono_config.h:config.in" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "quiet") CONFIG_COMMANDS="$CONFIG_COMMANDS quiet" ;; + "quiet-libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS quiet-libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "mod_mono.conf") CONFIG_FILES="$CONFIG_FILES mod_mono.conf" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; @@ -16695,6 +16372,8 @@ chmod +x "$ofile" ;; + "quiet":C) for i in `find src -name Makefile.in | sed -e 's/Makefile.in/Makefile/g'`; do if test -f $i; then $srcdir/scripts/patch-quiet.sh $i; fi; done ;; + "quiet-libtool":C) sed -e 's/$echo "copying selected/$show "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool; sed -e 's/$ECHO "copying selected/# "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool ;; esac done # for ac_tag @@ -16745,12 +16424,15 @@ echo " * Apache modules directory = $APXS_LIBEXECDIR" test -x "$APXS" && \ echo " * apxs = $APXS" -test ! "$APACHE_VER" = "1.3" -a -x "$APRCONFIG" && \ +test -x "$APRCONFIG" && \ echo " * apr-config = $APRCONFIG" test "$APUCONFIG" && \ echo " * apu-config = $APUCONFIG" echo " * CFLAGS = $CFLAGS" echo " * Verbose logging (debug) = $enable_debug" +if test "x$enable_debug" = "xyes" ; then +echo " * Debug output level = $debug_level" +fi echo " * GCOV options used = $enable_gcov" echo " * Profiling enabled = $enable_gprof" echo " * mono prefix = $MONO_PREFIX" @@ -16760,4 +16442,3 @@ echo "" echo "---" - diff -Nru mod-mono-2.4.3/configure.in mod-mono-2.10/configure.in --- mod-mono-2.4.3/configure.in 2009-11-17 18:38:39.000000000 +0000 +++ mod-mono-2.10/configure.in 2011-01-13 22:32:35.000000000 +0000 @@ -1,5 +1,5 @@ AC_INIT(src/mod_mono.c) -AM_INIT_AUTOMAKE(mod_mono, 2.4.3) +AM_INIT_AUTOMAKE(mod_mono, 2.10) AM_CONFIG_HEADER(include/mod_mono_config.h:config.in) AC_PROG_CC @@ -28,6 +28,7 @@ fi ) +AC_ARG_ENABLE(quiet-build, [ --enable-quiet-build Enable quiet build (on by default)], enable_quiet_build=$enableval, enable_quiet_build=yes) # Checks for header files. AC_HEADER_SYS_WAIT AC_CHECK_HEADERS([netdb.h unistd.h]) @@ -42,11 +43,7 @@ AC_FUNC_FORK AC_HEADER_STDC AC_FUNC_SELECT_ARGTYPES -AC_CHECK_FUNCS([memset mkdir unsetenv putenv setenv setrlimit select strcasecmp strerror strrchr dup2]) - -GLIB_REQUIRED_VERSION=1.3.11 - -PKG_CHECK_MODULES(GLIB_DEPENDENCIES, glib-2.0 >= $GLIB_REQUIRED_VERSION) +AC_CHECK_FUNCS([memset mkdir unsetenv putenv setenv setrlimit select strcasecmp strerror strrchr dup2 strndup]) # # --enable-debug @@ -61,6 +58,20 @@ fi # +# --with-debug-level +# +AC_MSG_CHECKING([What level debug messages should be printed at]) +AC_ARG_WITH(debug-level, + [ --with-debug-level set the debug messages level to the specified value (0-9, 0 is the most verbose)], + debug_level=$withval, debug_level=0) +if test "x$enable_debug" = "xyes" ; then + CFLAGS="$CFLAGS -DDEBUG_LEVEL=$debug_level" + AC_MSG_RESULT($debug_level) +else + AC_MSG_RESULT([debug output disabled]) +fi + +# # --with-remove-display # AC_MSG_CHECKING([whether mod_mono should remove the DISPLAY variable from environment]) @@ -310,17 +321,9 @@ APACHE_VER=1.3 ]) -# ensure we have apache 1.3 +# We no longer support Apache < 2.0 if test "$APACHE_VER" = "1.3" ; then - AC_TRY_COMPILE([ - #include - ], [ - char *version = SERVER_BASEREVISION; - ], [ - APACHE_VER=1.3 - ], [ - APACHE_VER=retry - ]) + AC_MSG_ERROR([Apache 1.3 is no longer supported. mod_mono now requires at least Apache 2.0]) else AC_TRY_RUN([ #include @@ -356,8 +359,7 @@ fi if test "$APACHE_VER" = "1.3"; then - CFLAGS="$CFLAGS -DAPACHE13 -DEAPI" - AC_MSG_RESULT($APACHE_VER) + AC_MSG_ERROR([Apache 1.3 is no longer supported. mod_mono now requires at least Apache 2.0]) fi # @@ -374,11 +376,10 @@ CFLAGS="$CFLAGS -DGCOV -O0 -fprofile-arcs -ftest-coverage" fi -AM_CONDITIONAL(APACHE2, test ! "$APACHE_VER" = "1.3") -if test ! "$APACHE_VER" = "1.3" ; then +AM_CONDITIONAL(APACHE2, true) + dnl Sources are recompiled if we change the target version - AC_DEFINE([APACHE2],,[Compiling for Apache >= 2.0 ]) -fi +AC_DEFINE([APACHE2],,[Compiling for Apache >= 2.0 ]) if test "$APACHE_VER" = "2.2" ; then AC_DEFINE([APACHE22],,[Compiling for Apache >= 2.2 ]) @@ -398,17 +399,8 @@ fi ],) -if test ! "$APACHE_VER" = "1.3" ; then - found_apr_socket_connect=yes - AC_DEFINE([HAVE_APR_SOCKET_CONNECT],,[apr_socket_connect is present]) -else - found_apr_socket_connect=no - AC_CHECK_LIB(apr-0, apr_socket_connect, found_apr_socket_connect=yes) - if test "x$found_apr_socket_connect" = "xyes" ; then - AC_DEFINE([HAVE_APR_SOCKET_CONNECT],,[apr_socket_connect is present]) - fi - -fi +found_apr_socket_connect=yes +AC_DEFINE([HAVE_APR_SOCKET_CONNECT],,[apr_socket_connect is present]) MONO_PREFIX=`$PKG_CONFIG --silence-errors --variable=prefix mono` if test x$MONO_PREFIX = "x" ; then @@ -448,6 +440,11 @@ AC_SUBST(CPPFLAGS) AC_SUBST(DFLT_MONO_CONFIG_DIR) +if test x$enable_quiet_build = xyes; then + AC_CONFIG_COMMANDS([quiet], [for i in `find src -name Makefile.in | sed -e 's/Makefile.in/Makefile/g'`; do if test -f $i; then $srcdir/scripts/patch-quiet.sh $i; fi; done], [shell=$SHELL]) + AC_CONFIG_COMMANDS([quiet-libtool], [sed -e 's/$echo "copying selected/$show "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool; sed -e 's/$ECHO "copying selected/# "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool]) +fi + AC_OUTPUT( Makefile mod_mono.conf @@ -464,12 +461,15 @@ echo " * Apache modules directory = $APXS_LIBEXECDIR" test -x "$APXS" && \ echo " * apxs = $APXS" -test ! "$APACHE_VER" = "1.3" -a -x "$APRCONFIG" && \ +test -x "$APRCONFIG" && \ echo " * apr-config = $APRCONFIG" test "$APUCONFIG" && \ echo " * apu-config = $APUCONFIG" echo " * CFLAGS = $CFLAGS" echo " * Verbose logging (debug) = $enable_debug" +if test "x$enable_debug" = "xyes" ; then +echo " * Debug output level = $debug_level" +fi echo " * GCOV options used = $enable_gcov" echo " * Profiling enabled = $enable_gprof" echo " * mono prefix = $MONO_PREFIX" @@ -480,4 +480,3 @@ echo "" echo "---" - diff -Nru mod-mono-2.4.3/COPYING mod-mono-2.10/COPYING --- mod-mono-2.4.3/COPYING 2009-10-26 20:20:34.000000000 +0000 +++ mod-mono-2.10/COPYING 2011-01-13 22:32:35.000000000 +0000 @@ -174,4 +174,3 @@ of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS - diff -Nru mod-mono-2.4.3/debian/changelog mod-mono-2.10/debian/changelog --- mod-mono-2.4.3/debian/changelog 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/changelog 2011-09-15 20:20:04.000000000 +0000 @@ -1,3 +1,106 @@ +mod-mono (2.10-1~dhx1~lucid1) lucid; urgency=low + + * Upload to badgerports. + + -- Jo Shields Thu, 15 Sep 2011 21:19:49 +0100 + +mod-mono (2.10-1~dhx1~natty1) natty; urgency=low + + * Upload to Monoxide + + -- Jo Shields Mon, 12 Sep 2011 18:48:52 +0100 + +mod-mono (2.10-1) experimental; urgency=low + + * [416f2fa] Imported Upstream version 2.10 + * [eaf9d4a] Bump package dependencies to look for 4.0 and 2.0 versions + of ASP.NET support, not 2.0 and 1.0 + * [850d4d6] Bump package dependencies in debian/rules to the latest + XSP version + * [8fe987d] Stop repackaging .tar.bz2 sources as .tar.gz - it's 2011 + and we have amazing new archive format powers + * [1ec2fe6] Switch to Debian source format 3.0 + * [9c83896] Convert packaging to Debhelper 7, and clean up + debian/rules significantly + * [70e9b24] Finish changes to debian/control for binary version + requirements + * [37d465f] Update config script to 2.0/4.0 versions of ASP.NET + backend + * [96f7690] Update debconf templates and translations to offer 2.0/4.0 + rather than 1.1/2.0 + * [750d2c3] Ensure we disable both possible versions of mod_mono when + removing the package, otherwise mod_mono_auto might be kept + * [7161553] No longer force a build-depends on Quilt, since it's + handled at the dpkg level with Debian source format 3.0 + * [c2106e0] Bump Standards to 3.9.1 + * [7729138] Don't use Debhelper Quilt rule anymore + * [1ceb779] Version our debhelper requirement, since we use overrides + * [7658daf] Updated German translation. Thanks to Helge Kreutzmann. + (Closes: #620653) + * [f7c5cf8] Updated Russian translation. Thanks to Yuri Kozlov. + (Closes: #620654) + * [d064926] Updated Galician translation. Thanks to Miguel Bouzada. + * [e68dc09] Updated Portugese translation. Thanks to Miguel + Figueiredo. (Closes: #620666) + * [4ccef0a] Updated French translation. Thanks to Christian Perrier. + (Closes: #620688) + * [9ffc341] Updated Finnish translation. Thanks to Esko Arajärvi. + (Closes: #621010) + * [8709926] Updated Basque translation. Thanks to Iñaki Larrañaga + Murgoitio. (Closes: #621669) + * [eeb664d] Updated Czech translation. Thanks to Miroslav Kure. + (Closes: #622099) + * [1916357] Updated Basque translation. Thanks to Iñaki Larrañaga + Murgoitio. (Closes: #621669) + * [c4bf624] Updated Spanish translation. Thanks to Francisco Javier + Cuadrado. (Closes: #622613) + * [9cbfb7d] Updated Swedish translation. Thanks to Martin Bagge. + (Closes: #623405) + + -- Jo Shields Sat, 23 Apr 2011 15:03:08 +0100 + +mod-mono (2.6.3-4) unstable; urgency=low + + * [8b34845] Remove obsolete gbp.conf + * [07a4ab2] As it turns out, the change in 2.0-1 to prevent postinst + failure has an unwanted side effect - it is possible that + mod_mono.conf will be created (via touch) before dpkg handles the + conffiles - meaning it will prompt users about replacing the empty + file. Instead, just exit without an error when the config file is + missing (Closes: #604206) + + -- Jo Shields Thu, 25 Nov 2010 09:13:34 +0000 + +mod-mono (2.6.3-3) unstable; urgency=low + + * Upload to Debian Unstable. + + -- Jo Shields Mon, 13 Sep 2010 09:57:05 +0100 + +mod-mono (2.6.3-2) experimental; urgency=low + + * debian/rules: + + Bump the expected XSP version to 2.6.5 + + -- Jo Shields Fri, 13 Aug 2010 16:34:05 +0100 + +mod-mono (2.6.3-1) experimental; urgency=low + + * New upstream release + * debian/rules: + + Stop using ../tarballs for get-orig-source + * debian/po/gl.po + + Updated slightly by debconf-updatepo + * debian/patches/dont_use_sigpwr_on_kfreebsd.patch: + + Remove (merged upstream) + * debian/rules: + + Hard-code PKG_VERSION and NEXT_PKG_VERSION due to mismatched + upstream versions of xsp and mod-mono + * debian/control: + + Bump mono-runtime dependency to 2.6 + + -- Jo Shields Mon, 07 Jun 2010 10:06:30 +0100 + mod-mono (2.4.3-1) unstable; urgency=low * New upstream release diff -Nru mod-mono-2.4.3/debian/control mod-mono-2.10/debian/control --- mod-mono-2.4.3/debian/control 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/control 2011-04-23 13:59:56.000000000 +0000 @@ -6,13 +6,13 @@ Vcs-Svn: svn://svn.debian.org/pkg-mono/mod-mono/trunk Maintainer: Debian Mono Group Uploaders: Dylan R. E. Moonfire , Mirco Bauer , Jo Shields -Build-Depends: debhelper (>= 7), apache2-threaded-dev (>= 2.2), libmono-dev, po-debconf, quilt (>= 0.46-7~) -Standards-Version: 3.8.3 +Build-Depends: debhelper (>= 7.0.50~), apache2-threaded-dev (>= 2.2), po-debconf, pkg-config +Standards-Version: 3.9.1 Package: libapache2-mod-mono Architecture: any Section: web -Depends: ${misc:Depends}, ${shlibs:Depends}, debconf (>= 1.2.0), apache2.2-common, mono-runtime (>= 2.4), mono-apache-server (>= ${current-version}) | mono-apache-server2 (>= ${current-version}) | mono-apache-server1 (>= ${current-version}), mono-apache-server (<< ${next-version}) | mono-apache-server2 (<< ${next-version}) | mono-apache-server1 (<< ${next-version}) +Depends: ${misc:Depends}, ${shlibs:Depends}, debconf (>= 1.2.0), apache2.2-common, mono-runtime (>= 2.10), mono-apache-server (>= ${current-version}) | mono-apache-server4 (>= ${current-version}) | mono-apache-server2 (>= ${current-version}), mono-apache-server (<< ${next-version}) | mono-apache-server4 (<< ${next-version}) | mono-apache-server2 (<< ${next-version}) Description: Apache module for running ASP.NET applications on Mono The mod_mono module for Apache allows ASP.NET web applications to be run with the Mono .NET implementation. diff -Nru mod-mono-2.4.3/debian/libapache2-mod-mono.conf mod-mono-2.10/debian/libapache2-mod-mono.conf --- mod-mono-2.4.3/debian/libapache2-mod-mono.conf 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/libapache2-mod-mono.conf 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -AddType application/x-asp-net .aspx .ashx .asmx .ascx .asax .config .ascx -DirectoryIndex index.aspx - -# Include the web application definitions generated by mono-server(2)-update. -# -# If want want to use ASP.NET 1.1 (via mono-apache-server), use: -# Include /etc/mono-server/mono-server-hosts.conf -# -# If you want to use ASP.NET 2.0 (via mono-apache-server2), use: -# Include /etc/mono-server2/mono-server2-hosts.conf - -Include /etc/mono-server2/mono-server2-hosts.conf diff -Nru mod-mono-2.4.3/debian/libapache2-mod-mono.conf_auto mod-mono-2.10/debian/libapache2-mod-mono.conf_auto --- mod-mono-2.4.3/debian/libapache2-mod-mono.conf_auto 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/libapache2-mod-mono.conf_auto 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -MonoAutoApplication enabled -AddType application/x-asp-net .aspx -AddType application/x-asp-net .asmx -AddType application/x-asp-net .ashx -AddType application/x-asp-net .asax -AddType application/x-asp-net .ascx -AddType application/x-asp-net .soap -AddType application/x-asp-net .rem -AddType application/x-asp-net .axd -AddType application/x-asp-net .cs -AddType application/x-asp-net .config -AddType application/x-asp-net .dll -DirectoryIndex index.aspx -DirectoryIndex Default.aspx -DirectoryIndex default.aspx diff -Nru mod-mono-2.4.3/debian/libapache2-mod-mono.config mod-mono-2.10/debian/libapache2-mod-mono.config --- mod-mono-2.4.3/debian/libapache2-mod-mono.config 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/libapache2-mod-mono.config 2011-04-01 21:20:15.000000000 +0000 @@ -10,15 +10,15 @@ # Figure out which module we want to connect to USE_MONO_SERVER=none -if [ -x /usr/bin/mod-mono-server ]; then - USE_MONO_SERVER=mod-mono-server1 +if [ -x /usr/bin/mod-mono-server2 ]; then + USE_MONO_SERVER=mod-mono-server2 fi -if [ -x /usr/bin/mod-mono-server2 ]; then - if [ -x /usr/bin/mod-mono-server1 ]; then +if [ -x /usr/bin/mod-mono-server4 ]; then + if [ -x /usr/bin/mod-mono-server2 ]; then USE_MONO_SERVER=ask else - USE_MONO_SERVER=mod-mono-server2 + USE_MONO_SERVER=mod-mono-server4 fi fi @@ -50,29 +50,29 @@ # Change the includes as appropriate MONO_CONF=/etc/apache2/mods-available/mod_mono.conf -# Gracefully deal with users who have deleted their config for some reason -# (i.e. don't bail out in postinst) +# Exit without an error if the user has deleted their config for some reason +# We can't merely create a new config here, as it breaks conffile tracking if [ ! -e "$MONO_CONF" ]; then - touch $MONO_CONF + exit 0 fi case "$USE_MONO_SERVER" in none) # Can't find anything - echo "Either mono-apache-server1 or mono-apache-server2 needs " + echo "Either mono-apache-server2 or mono-apache-server4 needs " echo "to be installed." exit 1 ;; - mod-mono-server) - echo "Using mono-apache-server..." - sed 's@^Include.*$@Include /etc/mono-server/mono-server-hosts.conf@' \ + mod-mono-server2) + echo "Using mono-apache-server2..." + sed 's@^Include.*$@Include /etc/mono-server2/mono-server2-hosts.conf@' \ < $MONO_CONF > $tempfile cp -f $tempfile $MONO_CONF rm -f $tempfile ;; - mod-mono-server2) - echo "Using mono-apache-server2..." - sed 's@^Include.*$@Include /etc/mono-server2/mono-server2-hosts.conf@'\ + mod-mono-server4) + echo "Using mono-apache-server4..." + sed 's@^Include.*$@Include /etc/mono-server4/mono-server4-hosts.conf@'\ < $MONO_CONF > $tempfile cp -f $tempfile $MONO_CONF rm -f $tempfile diff -Nru mod-mono-2.4.3/debian/libapache2-mod-mono.install mod-mono-2.10/debian/libapache2-mod-mono.install --- mod-mono-2.4.3/debian/libapache2-mod-mono.install 1970-01-01 00:00:00.000000000 +0000 +++ mod-mono-2.10/debian/libapache2-mod-mono.install 2011-04-01 21:20:15.000000000 +0000 @@ -0,0 +1,3 @@ +debian/mod_mono.load /etc/apache2/mods-available/ +debian/mod_mono.conf /etc/apache2/mods-available/ +debian/mod_mono_auto.conf /etc/apache2/mods-available/ diff -Nru mod-mono-2.4.3/debian/libapache2-mod-mono.load mod-mono-2.10/debian/libapache2-mod-mono.load --- mod-mono-2.4.3/debian/libapache2-mod-mono.load 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/libapache2-mod-mono.load 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -LoadModule mono_module /usr/lib/apache2/modules/mod_mono.so diff -Nru mod-mono-2.4.3/debian/libapache2-mod-mono.prerm mod-mono-2.10/debian/libapache2-mod-mono.prerm --- mod-mono-2.4.3/debian/libapache2-mod-mono.prerm 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/libapache2-mod-mono.prerm 2011-04-01 21:20:15.000000000 +0000 @@ -10,6 +10,7 @@ if [ -e /etc/apache2/apache2.conf ]; then /usr/sbin/a2dismod mod_mono || true + /usr/sbin/a2dismod mod_mono_auto || true fi exit 0 diff -Nru mod-mono-2.4.3/debian/libapache2-mod-mono.templates mod-mono-2.10/debian/libapache2-mod-mono.templates --- mod-mono-2.4.3/debian/libapache2-mod-mono.templates 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/libapache2-mod-mono.templates 2011-04-01 21:20:15.000000000 +0000 @@ -9,10 +9,10 @@ Template: libapache2-mod-mono/mono-server Type: select -Choices: mod-mono-server1, mod-mono-server2 -Default: mod-mono-server2 +Choices: mod-mono-server2, mod-mono-server4 +Default: mod-mono-server4 _Description: Mono server to use: The libapache2-mod-mono module can be used with one of two different Mono ASP.NET backends: - - mod-mono-server1: implements ASP.NET 1.1 features; - - mod-mono-server2: implements ASP.NET 2.0 features. + - mod-mono-server2: implements ASP.NET 2.0 features; + - mod-mono-server4: implements ASP.NET 4.0 features. diff -Nru mod-mono-2.4.3/debian/mod_mono_auto.conf mod-mono-2.10/debian/mod_mono_auto.conf --- mod-mono-2.4.3/debian/mod_mono_auto.conf 1970-01-01 00:00:00.000000000 +0000 +++ mod-mono-2.10/debian/mod_mono_auto.conf 2011-04-01 21:20:15.000000000 +0000 @@ -0,0 +1,15 @@ +MonoAutoApplication enabled +AddType application/x-asp-net .aspx +AddType application/x-asp-net .asmx +AddType application/x-asp-net .ashx +AddType application/x-asp-net .asax +AddType application/x-asp-net .ascx +AddType application/x-asp-net .soap +AddType application/x-asp-net .rem +AddType application/x-asp-net .axd +AddType application/x-asp-net .cs +AddType application/x-asp-net .config +AddType application/x-asp-net .dll +DirectoryIndex index.aspx +DirectoryIndex Default.aspx +DirectoryIndex default.aspx diff -Nru mod-mono-2.4.3/debian/mod_mono.conf mod-mono-2.10/debian/mod_mono.conf --- mod-mono-2.4.3/debian/mod_mono.conf 1970-01-01 00:00:00.000000000 +0000 +++ mod-mono-2.10/debian/mod_mono.conf 2011-04-01 21:20:15.000000000 +0000 @@ -0,0 +1,12 @@ +AddType application/x-asp-net .aspx .ashx .asmx .ascx .asax .config .ascx +DirectoryIndex index.aspx + +# Include the web application definitions generated by mono-server{2,4}-update. +# +# If you want to use ASP.NET 2.0 (via mono-apache-server2), use: +# Include /etc/mono-server2/mono-server2-hosts.conf +# +# If you want to use ASP.NET 4.0 (via mono-apache-server4), use: +# Include /etc/mono-server4/mono-server4-hosts.conf + +Include /etc/mono-server4/mono-server4-hosts.conf diff -Nru mod-mono-2.4.3/debian/mod_mono.load mod-mono-2.10/debian/mod_mono.load --- mod-mono-2.4.3/debian/mod_mono.load 1970-01-01 00:00:00.000000000 +0000 +++ mod-mono-2.10/debian/mod_mono.load 2011-04-01 21:20:15.000000000 +0000 @@ -0,0 +1 @@ +LoadModule mono_module /usr/lib/apache2/modules/mod_mono.so diff -Nru mod-mono-2.4.3/debian/patches/series mod-mono-2.10/debian/patches/series --- mod-mono-2.4.3/debian/patches/series 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/patches/series 2011-04-01 21:27:42.000000000 +0000 @@ -1 +1 @@ -dont_use_sigpwr_on_kfreebsd.patch +#dont_use_sigpwr_on_kfreebsd.patch diff -Nru mod-mono-2.4.3/debian/po/cs.po mod-mono-2.10/debian/po/cs.po --- mod-mono-2.4.3/debian/po/cs.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/cs.po 2011-04-10 10:45:03.000000000 +0000 @@ -15,10 +15,11 @@ msgstr "" "Project-Id-Version: mod-mono\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" -"PO-Revision-Date: 2009-11-01 17:00+0100\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" +"PO-Revision-Date: 2011-04-09 12:16+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" +"Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -32,12 +33,17 @@ #. Type: select #. Description #: ../libapache2-mod-mono.templates:2001 +#| msgid "" +#| "The libapache2-mod-mono module can be used with one of two different Mono " +#| "ASP.NET backends:\n" +#| " - mod-mono-server1: implements ASP.NET 1.1 features;\n" +#| " - mod-mono-server2: implements ASP.NET 2.0 features." msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "Modul libapache2-mod-mono se dá použít s různými backendy pro Mono ASP.NET:\n" -" - mod-mono-server1: implementuje ASP.NET 1.1;\n" -" - mod-mono-server2: implementuje ASP.NET 2.0." +" - mod-mono-server2: implementuje ASP.NET 2.0;\n" +" - mod-mono-server4: implementuje ASP.NET 4.0." diff -Nru mod-mono-2.4.3/debian/po/de.po mod-mono-2.10/debian/po/de.po --- mod-mono-2.4.3/debian/po/de.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/de.po 2011-04-03 14:40:55.000000000 +0000 @@ -1,16 +1,17 @@ # German translation of mod-mono templates # Alwin Meschede , 2006. -# Helge Kreutzmann , 2007, 2009. +# Helge Kreutzmann , 2007, 2009, 2011. # This file is distributed under the same license as the mod-mono package. # msgid "" msgstr "" -"Project-Id-Version: mod-mono 2.4.2-1\n" +"Project-Id-Version: mod-mono 2.10-1\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" -"PO-Revision-Date: 2009-07-19 09:07+0200\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" +"PO-Revision-Date: 2011-04-03 12:16+0200\n" "Last-Translator: Helge Kreutzmann \n" "Language-Team: german \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -28,13 +29,13 @@ msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "Das Modul libapache2-mod-mono kann mit einem von zwei verschiedenen Mono-ASP." "NET-Backends verwendet werden:\n" -" - mod-mono-server : implementiert ASP.NET 1.1-Funktionen\n" -" - mod-mono-server2: implementiert ASP.NET 2.0-Funktionen" +" - mod-mono-server2: implementiert ASP.NET 2.0-Funktionen\n" +" - mod-mono-server4: implementiert ASP.NET 4.0-Funktionen" #~ msgid "Use mono-server:" #~ msgstr "Verwende Mono-Server:" @@ -44,5 +45,5 @@ #~ msgid "If this is true, then the module will be activated as apache starts." #~ msgstr "" -#~ "Falls Sie hier zustimmen, wird das Modul aktiviert wenn Apache gestartet " +#~ "Falls Sie hier zustimmen, wird das Modul aktiviert, wenn Apache gestartet " #~ "wird." diff -Nru mod-mono-2.4.3/debian/po/es.po mod-mono-2.10/debian/po/es.po --- mod-mono-2.4.3/debian/po/es.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/es.po 2011-04-23 13:36:57.000000000 +0000 @@ -1,5 +1,5 @@ # mod-mono po-debconf translation to Spanish -# Copyright (C) 2007, 2009 Software in the Public Interest, SPI Inc. +# Copyright (C) 2007, 2009, 2011 Software in the Public Interest, SPI Inc. # This file is distributed under the same license as the mod-mono package. # # Changes: @@ -7,7 +7,7 @@ # Steve Lord Flaubert , 2007 # # - Updates -# Francisco Javier Cuadrado , 2009 +# Francisco Javier Cuadrado , 2009, 2011 # # Traductores, si no conocen el formato PO, merece la pena leer la # documentación de gettext, especialmente las secciones dedicadas a este @@ -29,12 +29,13 @@ # msgid "" msgstr "" -"Project-Id-Version: mod-mono 2.4.2-1\n" +"Project-Id-Version: mod-mono 2.10-1\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" -"PO-Revision-Date: 2009-07-25 20:21+0100\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" +"PO-Revision-Date: 2011-04-04 20:46+0100\n" "Last-Translator: Francisco Javier Cuadrado \n" "Language-Team: Debian l10n Spanish \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -48,16 +49,19 @@ #. Type: select #. Description #: ../libapache2-mod-mono.templates:2001 +#| msgid "" +#| "The libapache2-mod-mono module can be used with one of two different Mono " +#| "ASP.NET backends:\n" +#| " - mod-mono-server1: implements ASP.NET 1.1 features;\n" +#| " - mod-mono-server2: implements ASP.NET 2.0 features." msgid "" -"The libapache2-mod-mono module can be used with one of two different Mono " -"ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +"The libapache2-mod-mono module can be used with one of two different Mono ASP.NET backends:\n" +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" -"El módulo «libapache2-mod-mono» se puede utilizar con uno de los dos motores " -"distintos de Mono ASP.NET:\n" -" - «mod-mono-server1»: Implementa las funcionalidades de ASP.NET 1.1;\n" -" - «mod-mono-server2»: Implementa las funcionalidades de ASP.NET 2.0." +"El módulo «libapache2-mod-mono» se puede utilizar con uno de los dos motores distintos de Mono ASP.NET:\n" +" - «mod-mono-server2»: Implementa las funcionalidades de ASP.NET 2.0.\n" +" - «mod-mono-server4»: Implementa las funcionalidades de ASP.NET 4.0." #~ msgid "Activate module?" #~ msgstr "¿Desea activar el módulo?" diff -Nru mod-mono-2.4.3/debian/po/eu.po mod-mono-2.10/debian/po/eu.po --- mod-mono-2.4.3/debian/po/eu.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/eu.po 2011-04-10 10:46:08.000000000 +0000 @@ -1,22 +1,23 @@ +# translation of mod-mono_2.10-1_eu.po to Basque +# Piarres Beobide , 2007, 2009. +# Iñaki Larrañaga Murgoitio , 2009, 2011. # translation of mod-mono_eu.po to # translation of mod-mono to Euskara # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# Piarres Beobide , 2007, 2009. -# Iñaki Larrañaga Murgoitio , 2009. msgid "" msgstr "" -"Project-Id-Version: mod-mono_eu\n" +"Project-Id-Version: mod-mono_2.10-1_eu\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" -"PO-Revision-Date: 2009-10-29 12:35+0100\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" +"PO-Revision-Date: 2011-04-07 15:30+0200\n" "Last-Translator: Iñaki Larrañaga Murgoitio \n" "Language-Team: Basque \n" +"Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: eu\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n\n" "X-Generator: KBabel 1.11.4\n" #. Type: select @@ -28,13 +29,19 @@ #. Type: select #. Description #: ../libapache2-mod-mono.templates:2001 +#| msgid "" +#| "The libapache2-mod-mono module can be used with one of two different Mono " +#| "ASP.NET backends:\n" +#| " - mod-mono-server1: implements ASP.NET 1.1 features;\n" +#| " - mod-mono-server2: implements ASP.NET 2.0 features." msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "'libapache2-mod-mono' modulua Mono ASP.NET motor desberdinetako batekin " "erabili daiteke:\n" -" - mod-mono-server1: ASP.NET 1.1 ezaugarriak inplementatzen ditu;\n" -" - mod-mono-server2: ASP.NET 2.0 ezaugarriak inplementatzen ditu." +" - mod-mono-server2: ASP.NET 2.0 eginbideak inplementatzen ditu;\n" +" - mod-mono-server4: ASP.NET 4.0 eginbideak inplementatzen ditu." + diff -Nru mod-mono-2.4.3/debian/po/fi.po mod-mono-2.10/debian/po/fi.po --- mod-mono-2.4.3/debian/po/fi.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/fi.po 2011-04-10 10:46:08.000000000 +0000 @@ -1,14 +1,18 @@ +# Esko Arajärvi , 2011. msgid "" msgstr "" "Project-Id-Version: mod-mono_1.2.5-2\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" -"PO-Revision-Date: 2007-12-19 23:33+0200\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" +"PO-Revision-Date: 2011-04-05 22:31+0300\n" "Last-Translator: Esko Arajärvi \n" -"Language-Team: Finnish \n" +"Language-Team: debian-10n-finnish@lists.debian.org\n" +"Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.6.1\n" "X-Poedit-Language: Finnish\n" "X-Poedit-Country: Finland\n" @@ -24,10 +28,10 @@ msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" -"Moduulia libapache2-mod-mono voidaan käyttää kahden eri Mono ASP.NET -" -"taustaosan kanssa:\n" -" - mod-mono-server1: toteuttaa ASP.NET 1.1 -ominaisuudet\n" -" - mod-mono-server2: toteuttaa ASP.NET 2.0 -ominaisuudet" +"Moduulia libapache2-mod-mono voidaan käyttää kahden eri Mono ASP.NET " +"-taustaosan kanssa:\n" +" - mod-mono-server2: toteuttaa ASP.NET 2.0 -ominaisuudet\n" +" - mod-mono-server4: toteuttaa ASP.NET 4.0 -ominaisuudet" diff -Nru mod-mono-2.4.3/debian/po/fr.po mod-mono-2.10/debian/po/fr.po --- mod-mono-2.4.3/debian/po/fr.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/fr.po 2011-04-03 14:52:15.000000000 +0000 @@ -2,19 +2,20 @@ # This file is licensed under the same license as the mod-mono package # # Copyright: Christian Perrier , 2006, 2007. -# Christian Perrier , 2009. +# Christian Perrier , 2009, 2011. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" -"PO-Revision-Date: 2009-07-19 16:45+0200\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" +"PO-Revision-Date: 2011-04-03 15:51+0200\n" "Last-Translator: Christian Perrier \n" "Language-Team: French \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 0.3\n" +"X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. Type: select @@ -26,13 +27,19 @@ #. Type: select #. Description #: ../libapache2-mod-mono.templates:2001 +#| msgid "" +#| "The libapache2-mod-mono module can be used with one of two different Mono " +#| "ASP.NET backends:\n" +#| " - mod-mono-server1: implements ASP.NET 1.1 features;\n" +#| " - mod-mono-server2: implements ASP.NET 2.0 features." msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "Le module libapache2-mod-mono peut être utilisé avec deux modes différents " "de gestion de ASP.NET :\n" -" - mod-mono-server1 : compatible avec ASP.NET 1.1 ;\n" -" - mod-mono-server2 : compatible avec ASP.NET 2.0." +" - mod-mono-server2 : compatible avec ASP.NET 2.0 ;\n" +" - mod-mono-server4 : compatible avec ASP.NET 4.0." + diff -Nru mod-mono-2.4.3/debian/po/gl.po mod-mono-2.10/debian/po/gl.po --- mod-mono-2.4.3/debian/po/gl.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/gl.po 2011-04-03 14:50:31.000000000 +0000 @@ -3,14 +3,16 @@ # # Jacobo Tarrio , 2007. # Marce Villarino , 2009. +# Miguel Anxo Bouzada , 2011. msgid "" msgstr "" "Project-Id-Version: mod-mono\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" -"PO-Revision-Date: 2009-11-07 20:09+0100\n" -"Last-Translator: Marce Villarino \n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" +"PO-Revision-Date: 2011-04-03 12:52+0100\n" +"Last-Translator: Miguel Anxo Bouzada \n" "Language-Team: Galician \n" +"Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -26,13 +28,17 @@ #. Type: select #. Description #: ../libapache2-mod-mono.templates:2001 +#| msgid "" +#| "The libapache2-mod-mono module can be used with one of two different Mono " +#| "ASP.NET backends:\n" +#| " - mod-mono-server1: implements ASP.NET 1.1 features;\n" +#| " - mod-mono-server2: implements ASP.NET 2.0 features." msgid "" -"The libapache2-mod-mono module can be used with one of two different Mono " -"ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +"The libapache2-mod-mono module can be used with one of two different Mono ASP.NET backends:\n" +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" -"Pódese empregar o módulo libapache2-mod-mono con calquera destes motores ASP." -"NET de Mono:\n" -" - mod-mono-server1: implementa as características de ASP.NET 1.1;\n" -" - mod-mono-server2: implementa as características de ASP.NET 2.0." +"Pódese empregar o módulo libapache2-mod-mono cun dos dous diferentes motores ASP.NET de Mono:\n" +" - mod-mono-server2: implementa as características de ASP.NET 2.0;\n" +" - mod-mono-server4: implementa as características de ASP.NET 4.0." + diff -Nru mod-mono-2.4.3/debian/po/it.po mod-mono-2.10/debian/po/it.po --- mod-mono-2.4.3/debian/po/it.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/it.po 2011-04-01 21:20:15.000000000 +0000 @@ -7,10 +7,11 @@ msgstr "" "Project-Id-Version: mod-mono 2.4.2 italian debconf templates\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" "PO-Revision-Date: 2009-08-09 10:48+0200\n" "Last-Translator: Luca Monducci \n" "Language-Team: Italian \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -24,13 +25,19 @@ #. Type: select #. Description #: ../libapache2-mod-mono.templates:2001 +#, fuzzy +#| msgid "" +#| "The libapache2-mod-mono module can be used with one of two different Mono " +#| "ASP.NET backends:\n" +#| " - mod-mono-server1: implements ASP.NET 1.1 features;\n" +#| " - mod-mono-server2: implements ASP.NET 2.0 features." msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "Il modulo libapache2-mod-mono può essere usato con uno dei due diversi " "backend di Mono ASP.NET:\n" -" - mod-mono-server1: implementa le funzioni di ASP.NET 1.1;\n" -" - mod-mono-server2: implementa le funzioni di ASP.NET 2.0." +" - mod-mono-server2: implementa le funzioni di ASP.NET 2.0;\n" +" - mod-mono-server4: implementa le funzioni di ASP.NET 4.0." diff -Nru mod-mono-2.4.3/debian/po/ja.po mod-mono-2.10/debian/po/ja.po --- mod-mono-2.4.3/debian/po/ja.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/ja.po 2011-04-01 21:20:15.000000000 +0000 @@ -6,10 +6,11 @@ msgstr "" "Project-Id-Version: mod-mono\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" "PO-Revision-Date: 2009-11-05 22:15+0900\n" "Last-Translator: Kenshi Muto \n" "Language-Team: Japanese \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -23,13 +24,19 @@ #. Type: select #. Description #: ../libapache2-mod-mono.templates:2001 +#, fuzzy +#| msgid "" +#| "The libapache2-mod-mono module can be used with one of two different Mono " +#| "ASP.NET backends:\n" +#| " - mod-mono-server1: implements ASP.NET 1.1 features;\n" +#| " - mod-mono-server2: implements ASP.NET 2.0 features." msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "libapache2-mod-mono モジュールは 1 つまたは 2 つの異なる Mono ASP.NET バック" "エンドと共に利用できます:\n" -" - mod-mono-server1: ASP.NET 1.1 機能の実装。\n" -" - mod-mono-server2: ASP.NET 2.0 機能の実装。" +" - mod-mono-server2: ASP.NET 2.0 機能の実装。\n" +" - mod-mono-server4: ASP.NET 4.0 機能の実装。" diff -Nru mod-mono-2.4.3/debian/po/nl.po mod-mono-2.10/debian/po/nl.po --- mod-mono-2.4.3/debian/po/nl.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/nl.po 2011-04-01 21:20:15.000000000 +0000 @@ -7,10 +7,11 @@ msgstr "" "Project-Id-Version: mod-mono\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" "PO-Revision-Date: 2007-07-31 09:29+0100\n" "Last-Translator: Bart Cornelis \n" "Language-Team: debian-l10n-dutch \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -34,13 +35,13 @@ msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "De module libapache2-mod-mono kan 2 verschillende Mono ASP.Net backends " "gebruiken:\n" -" - mod-mono-server1: implementeert ASP.NET 1.1 features;\n" -" - mod-mono-server2: implementeert ASP.NET 2.0 features." +" - mod-mono-server2: implementeert ASP.NET 2.0 features;\n" +" - mod-mono-server4: implementeert ASP.NET 4.0 features." #~ msgid "Activate module?" #~ msgstr "Wilt u de module activeren?" diff -Nru mod-mono-2.4.3/debian/po/pt.po mod-mono-2.10/debian/po/pt.po --- mod-mono-2.4.3/debian/po/pt.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/pt.po 2011-04-03 14:51:15.000000000 +0000 @@ -1,16 +1,17 @@ # Portuguese translation for mod-mono's debconf messages # Copyright (C) 2007 Miguel Figueiredo # This file is distributed under the same license as the mod-mono package. -# Miguel Figueiredo , 2007-2009. +# Miguel Figueiredo , 2007-2011. # msgid "" msgstr "" "Project-Id-Version: mod-mono\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" -"PO-Revision-Date: 2009-11-02 22:38+0000\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" +"PO-Revision-Date: 2011-04-03 12:27+0100\n" "Last-Translator: Miguel Figueiredo \n" "Language-Team: Portuguese \n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -24,16 +25,21 @@ #. Type: select #. Description #: ../libapache2-mod-mono.templates:2001 +#| msgid "" +#| "The libapache2-mod-mono module can be used with one of two different Mono " +#| "ASP.NET backends:\n" +#| " - mod-mono-server1: implements ASP.NET 1.1 features;\n" +#| " - mod-mono-server2: implements ASP.NET 2.0 features." msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "O módulo libapache2-mod-mono pode ser utilizado com um de dois diferentes " -"backends Mono de ASP.NET.\n" -" - mod-mono-server1: implementa funcionalidades ASP.NET 1.1;\n" -" - mod-mono-server2: implementa funcionalidades ASP.NET 2.0." +"backends Mono de ASP.NET:\n" +" - mod-mono-server2: implementa funcionalidades ASP.NET 2.0;\n" +" - mod-mono-server4: implementa funcionalidades ASP.NET 4.0." #~ msgid "Use mono-server:" #~ msgstr "Usar o mono-server:" diff -Nru mod-mono-2.4.3/debian/po/ru.po mod-mono-2.10/debian/po/ru.po --- mod-mono-2.4.3/debian/po/ru.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/ru.po 2011-04-03 14:45:22.000000000 +0000 @@ -1,23 +1,24 @@ # translation of ru.po to Russian # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the mod-mono package. # # Yuri Kozlov , 2007. -# Yuri Kozlov , 2009. +# Yuri Kozlov , 2009, 2011. msgid "" msgstr "" -"Project-Id-Version: mod-mono 2.4.2-1\n" +"Project-Id-Version: mod-mono 2.10-1\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" -"PO-Revision-Date: 2009-07-19 08:53+0400\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" +"PO-Revision-Date: 2011-04-03 14:38+0400\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #. Type: select #. Description @@ -28,13 +29,19 @@ #. Type: select #. Description #: ../libapache2-mod-mono.templates:2001 +#| msgid "" +#| "The libapache2-mod-mono module can be used with one of two different Mono " +#| "ASP.NET backends:\n" +#| " - mod-mono-server1: implements ASP.NET 1.1 features;\n" +#| " - mod-mono-server2: implements ASP.NET 2.0 features." msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "Модуль libapache2-mod-mono можно использовать с одним из двух различных " "серверов Mono ASP.NET:\n" -" - mod-mono-server1: реализует возможности ASP.NET 1.1;\n" -" - mod-mono-server2: реализует возможности ASP.NET 2.0." +" - mod-mono-server2: реализует возможности ASP.NET 2.0;\n" +" - mod-mono-server4: реализует возможности ASP.NET 4.0." + diff -Nru mod-mono-2.4.3/debian/po/sv.po mod-mono-2.10/debian/po/sv.po --- mod-mono-2.4.3/debian/po/sv.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/sv.po 2011-04-23 13:38:19.000000000 +0000 @@ -1,5 +1,5 @@ -# translation of mod-mono to swedish -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# translation of mod-mono debconf messages to swedish +# Copyright (C) 2008, 2009, 2011 Martin Bagge # This file is distributed under the same license as the mod-mono package. # # Martin Bagge Martin Bagge , 2008, 2009. @@ -7,15 +7,16 @@ msgstr "" "Project-Id-Version: mod-mono_sv\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" -"PO-Revision-Date: 2009-07-28 22:53+0100\n" -"Last-Translator: Martin Bagge \n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" +"PO-Revision-Date: 2011-04-20 00:21+0100\n" +"Last-Translator: Martin Bagge / brother \n" "Language-Team: swedish \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Swedish\n" -"X-Poedit-Country: SWEDEN\n" +"X-Poedit-Country: Sweden\n" #. Type: select #. Description @@ -26,13 +27,18 @@ #. Type: select #. Description #: ../libapache2-mod-mono.templates:2001 +#| msgid "" +#| "The libapache2-mod-mono module can be used with one of two different Mono " +#| "ASP.NET backends:\n" +#| " - mod-mono-server1: implements ASP.NET 1.1 features;\n" +#| " - mod-mono-server2: implements ASP.NET 2.0 features." msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "Modulen libapache2-mod-mono kan användas med en av två olika Mono ASP.NET-" -"motorer:\n" -" - mod-mono-server1: funktioner motsvarande ASP.NET 1.1\n" -" - mod-mono-server2: funktioner motsvarande ASP.NET 2.0" +"bakdelarna:\n" +" - mod-mono-server2: funktioner motsvarande ASP.NET 2.0\n" +" - mod-mono-server4: funktioner motsvarande ASP.NET 4.0" diff -Nru mod-mono-2.4.3/debian/po/ta.po mod-mono-2.10/debian/po/ta.po --- mod-mono-2.4.3/debian/po/ta.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/ta.po 2011-04-01 21:20:15.000000000 +0000 @@ -7,10 +7,11 @@ msgstr "" "Project-Id-Version: modmono\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" "PO-Revision-Date: 2007-07-23 21:34+0530\n" "Last-Translator: Dr.T.Vasudevan \n" "Language-Team: TAMIL \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -34,10 +35,10 @@ msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "libapache2-mod-mono கூறை இரண்டு வெவ்வேறு மோனோ ASP.NET பின்புலத்துடன் " "பயன்படுத்தலாம்:\n" -" - mod-mono-server1: ASP.NET 1.1 சிறப்பு அம்சங்களை செயல்படுத்துகிறது.;\n" -" - mod-mono-server2: ASP.NET 2.0 சிறப்பு அம்சங்களை செயல்படுத்துகிறது.." +" - mod-mono-server2: ASP.NET 2.0 சிறப்பு அம்சங்களை செயல்படுத்துகிறது.;\n" +" - mod-mono-server4: ASP.NET 4.0 சிறப்பு அம்சங்களை செயல்படுத்துகிறது.." diff -Nru mod-mono-2.4.3/debian/po/templates.pot mod-mono-2.10/debian/po/templates.pot --- mod-mono-2.4.3/debian/po/templates.pot 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/templates.pot 2011-04-01 21:20:15.000000000 +0000 @@ -8,10 +8,11 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" @@ -28,6 +29,6 @@ msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" diff -Nru mod-mono-2.4.3/debian/po/tr.po mod-mono-2.10/debian/po/tr.po --- mod-mono-2.4.3/debian/po/tr.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/tr.po 2011-04-01 21:20:15.000000000 +0000 @@ -7,10 +7,11 @@ msgstr "" "Project-Id-Version: mod-mono\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" "PO-Revision-Date: 2008-06-19 14:11+0200\n" "Last-Translator: Mert Dirik \n" "Language-Team: Debian L10n Turkish \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -34,10 +35,10 @@ msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "\"libapache2-mod-mono\" modülü 2 farklı Mono ASP.NET arka ucundan biriyle " "kullanılabilir:\n" -" - mod-mono-server1: ASP.NET 1.1 özelliklerini destekler;\n" -" - mod-mono-server2: ASP.NET 2.0 özelliklerini destekler." +" - mod-mono-server2: ASP.NET 2.0 özelliklerini destekler;\n" +" - mod-mono-server4: ASP.NET 4.0 özelliklerini destekler." diff -Nru mod-mono-2.4.3/debian/po/vi.po mod-mono-2.10/debian/po/vi.po --- mod-mono-2.4.3/debian/po/vi.po 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/po/vi.po 2011-04-01 21:20:15.000000000 +0000 @@ -6,10 +6,11 @@ msgstr "" "Project-Id-Version: mod-mono\n" "Report-Msgid-Bugs-To: mod-mono@packages.debian.org\n" -"POT-Creation-Date: 2009-07-16 15:24+0100\n" +"POT-Creation-Date: 2011-03-20 23:00+0000\n" "PO-Revision-Date: 2007-07-26 23:31+0930\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" +"Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -34,10 +35,10 @@ msgid "" "The libapache2-mod-mono module can be used with one of two different Mono " "ASP.NET backends:\n" -" - mod-mono-server1: implements ASP.NET 1.1 features;\n" -" - mod-mono-server2: implements ASP.NET 2.0 features." +" - mod-mono-server2: implements ASP.NET 2.0 features;\n" +" - mod-mono-server4: implements ASP.NET 4.0 features." msgstr "" "Mô-đun libapache2-mod-mono có thể chạy với một của hai hậu phương ASP.NET " "Mono:\n" -" • mod-mono-server1\t\tthực hiện các tính năng ASP.NET 1.1;\n" -" • mod-mono-server2\t\tthực hiện các tính năng ASP.NET 2.0." +" • mod-mono-server2\t\tthực hiện các tính năng ASP.NET 2.0;\n" +" • mod-mono-server4\t\tthực hiện các tính năng ASP.NET 4.0." diff -Nru mod-mono-2.4.3/debian/rules mod-mono-2.10/debian/rules --- mod-mono-2.4.3/debian/rules 2011-09-15 20:26:35.000000000 +0000 +++ mod-mono-2.10/debian/rules 2011-04-01 21:20:15.000000000 +0000 @@ -1,22 +1,15 @@ #!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# GNU copyright 1997 to 1999 by Joey Hess. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 -#export DH_COMPAT=4 - -# These are used for cross-compiling and for saving the configure script -# from having to guess our platform (since we know it already) -DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) # Perl code to figure out the current version and the next "potential" version DPKG_VERSION ?= $(shell head -n 1 debian/changelog | cut -f 2 -d '(' | cut -f 1 -d ')') PKG_VERSION ?= $(shell echo $(DPKG_VERSION) | cut -f 1 -d '-' | cut -f 1-3 -d '.') NEXT_PKG_VERSION ?= $(shell echo $(PKG_VERSION) | perl -e '$$_=<>;/\.(\d+)$$/;$$a=$$1+1;s/\.(\d+)$$/.$$a/;print;') +# Hard-code some values for the above, as we make an assumption that the +# XSP and mod-mono versions match (which they don't today) +PKG_VERSION = 2.10 +NEXT_PKG_VERSION = 2.10.1 + MAKEFILE = $(firstword $(MAKEFILE_LIST)) DEBIAN_DIR = $(dir $(MAKEFILE)) SOURCE_DIR = $(DEBIAN_DIR)/.. @@ -25,117 +18,31 @@ DEB_SOURCE_NAME = $(shell dpkg-parsechangelog -l$(DEBIAN_DIR)/changelog | grep ^Source | cut -d" " -f2) VERSION = $(shell echo $(DEB_VERSION) | cut -d"-" -f1 | sed 's/+dfsg.*//') -CFLAGS = -Wall -g +override_dh_install: + dh_install -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 -else - CFLAGS += -O2 -endif -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - INSTALL_PROGRAM += -s -endif - -COMMON_CONFIG= --build=$(DEB_BUILD_GNU_TYPE) \ - --host=$(DEB_HOST_GNU_TYPE) \ - --prefix=/usr \ - --mandir=\$${prefix}/share/man \ - --infodir=\$${prefix}/share/info - -configure: configure-apache2-stamp -configure-apache2-stamp: - dh_testdir - dh_quilt_patch - if [ -d apache2-build ]; then rm -rf apache2-build; fi - -mkdir apache2-build - cd apache2-build && \ - ../configure $(COMMON_CONFIG) --with-apxs=/usr/bin/apxs2 - touch $@ - -build: configure build-apache2-stamp -build-apache2-stamp: configure-apache2-stamp - dh_testdir - cd apache2-build && $(MAKE) - touch $@ - -clean: - dh_testdir - dh_quilt_unpatch - dh_testroot - rm -f *-stamp *-stamp-* - rm -rf apache-build apache2-build - debconf-updatepo - dh_clean - -install: build install-prereq install-apache2 -install-prereq: build - dh_testdir - dh_testroot - dh_prep -install-apache2: - dh_installdirs -plibapache2-mod-mono - - # Install into debian/libapache2-mod-mono. - # We need APXS = /bin/true, otherwise mod_mono will install everything - # in /usr instead of debian/libapache2-mod-mono. - cd apache2-build && $(MAKE) install \ - DESTDIR=../debian/libapache2-mod-mono \ - APXS=/bin/true - install -m755 apache2-build/src/.libs/mod_mono.so \ - debian/libapache2-mod-mono/`apxs2 -q LIBEXECDIR` - install -m644 debian/libapache2-mod-mono.load \ - debian/libapache2-mod-mono/etc/apache2/mods-available/mod_mono.load - install -m644 debian/libapache2-mod-mono.conf \ - debian/libapache2-mod-mono/etc/apache2/mods-available/mod_mono.conf - -# Install a Debian version of the AutoConfiguration stuff that fits -# with the apache2 a2{en,dis}mod stuff. We use the existing version -# because of the autoconf substitutions. + # Install a Debian version of the AutoConfiguration stuff that fits + # with the apache2 a2{en,dis}mod stuff. We use the existing version + # because of the autoconf substitutions. grep LoadModule debian/libapache2-mod-mono/etc/apache2/mod_mono.conf \ > debian/libapache2-mod-mono/etc/apache2/mods-available/mod_mono_auto.load chmod 0644 debian/libapache2-mod-mono/etc/apache2/mods-available/mod_mono_auto.load - cp debian/libapache2-mod-mono.conf_auto \ - debian/libapache2-mod-mono/etc/apache2/mods-available/mod_mono_auto.conf - chmod 0644 debian/libapache2-mod-mono/etc/apache2/mods-available/mod_mono_auto.conf rm -f debian/libapache2-mod-mono/etc/apache2/mod_mono.conf -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs ChangeLog - dh_installdocs - dh_installexamples - dh_installdebconf - dh_installman - dh_link - dh_strip - dh_compress - dh_fixperms - dh_installdeb - dh_shlibdeps +override_dh_gencontrol: dh_gencontrol -- \ -Vcurrent-version=$(PKG_VERSION) -Vnext-version=$(NEXT_PKG_VERSION) - dh_md5sums - dh_builddeb get-orig-source: - [ -d ../tarballs ] || mkdir ../tarballs uscan \ --package $(DEB_SOURCE_NAME) \ --watchfile $(DEBIAN_DIR)/watch \ --upstream-version $(VERSION) \ --download-version $(VERSION) \ - --destdir ../tarballs \ + --destdir ./ \ --force-download \ --rename - bzcat ../tarballs/$(DEB_SOURCE_NAME)_$(VERSION).orig.tar.bz2 | \ - gzip -9fn -c - > ../tarballs/$(DEB_SOURCE_NAME)_$(VERSION).orig.tar.gz - rm ../tarballs/$(DEB_SOURCE_NAME)_$(VERSION).orig.tar.bz2 -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install +%: + dh $@ + diff -Nru mod-mono-2.4.3/debian/source/format mod-mono-2.10/debian/source/format --- mod-mono-2.4.3/debian/source/format 1970-01-01 00:00:00.000000000 +0000 +++ mod-mono-2.10/debian/source/format 2011-09-15 20:26:36.000000000 +0000 @@ -0,0 +1 @@ +3.0 (quilt) diff -Nru mod-mono-2.4.3/INSTALL mod-mono-2.10/INSTALL --- mod-mono-2.4.3/INSTALL 2009-10-26 20:20:34.000000000 +0000 +++ mod-mono-2.10/INSTALL 2011-01-13 22:32:35.000000000 +0000 @@ -1,4 +1,4 @@ -Last updated: Jul 25, 2005 +Last updated: Jan 28, 2009 Index ------- @@ -19,21 +19,21 @@ -------------------- The following are instructions on getting mod_mono working with - Apache, either 1.3 or 2. Once you set it up, Apache will be able to - serve ASP.NET pages. + Apache 2. Once you set it up, Apache will be able to serve ASP.NET + pages. * Prerrequisites ----------------- You will need: * mono (http://www.go-mono.com) - * apache 1.3 or 2 and its development package. Usually called - apache2-dev, apache-dev... + * apache 2.0 or later and its development packages. Usually called + apache2-dev, apache2-devel... * Latest xsp and mod_mono tarballs (http://go-mono.com/download.html) * Assumptions ------------- - The next steps assume you have installed mono, xsp and apache in + The next steps assume you have installed mono, XSP and Apache in /usr. Notice that you will need to be root in order to run 'make install'. @@ -54,9 +54,9 @@ ./configure --prefix=/usr --with-apxs=/usr/sbin/apxs - (Apache 2 only) If you get errors while compiling due to apr.h - header not found, you'll need to use the --with-apr-config option - and provide the full path to 'apr-config': + If you get errors while compiling due to apr.h header not found, + you'll need to use the --with-apr-config option and provide the + full path to 'apr-config': ./configure --prefix=/usr --with-apr-config=/usr/bin/apr-config @@ -67,13 +67,12 @@ LoadModule mono_module modules/mod_mono.so - 2. Configure apache. + 2. Configure Apache. - We're going to configure apache so that we can browse the samples + We're going to configure Apache so that we can browse the samples installed by XSP under /usr/lib/xsp/test. - Edit your httpd.conf file, which should be in /etc/httpd, - /etc/apache, /etc/apache2... + Edit your httpd.conf file, which should be in /etc/httpd, /etc/apache2... Add the following lines: @@ -84,7 +83,7 @@ for everything requested as /demo/xxx under /usr/lib/xsp/test/xxx.Don't forget the quotes. - For Apache 1.3 and, optionally, for Apache 2.0, add these lines: + Add these lines: SetHandler mono @@ -93,8 +92,7 @@ - If you are using Apache 2.0, you can use get the same results with - this: + Alternatively, you can use get the same results with this: SetHandler mono @@ -154,8 +152,6 @@ Your configuration should be something like: - LoadModule mono_module /usr/lib/apache/1.3/mod_mono.so - AddModule mod_mono.c Alias /demo "/usr/lib/xsp/test" AddMonoApplications default "/demo:/usr/lib/xsp/test" @@ -176,7 +172,7 @@ If you prefer to .webapp configuration file(s) (see manual page - of xsp), you can change MonoApplications in the above samples by: + of XSP), you can change MonoApplications in the above samples by: MonoApplicationsConfigFile default "/var/www/applications.webapp" @@ -239,3 +235,5 @@ Gonzalo Paniagua Javier Maintainer + Marek Habersack + Maintainer \ No newline at end of file diff -Nru mod-mono-2.4.3/Makefile.in mod-mono-2.10/Makefile.in --- mod-mono-2.4.3/Makefile.in 2009-11-17 18:38:46.000000000 +0000 +++ mod-mono-2.10/Makefile.in 2011-01-13 22:48:14.000000000 +0000 @@ -111,8 +111,6 @@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GLIB_DEPENDENCIES_CFLAGS = @GLIB_DEPENDENCIES_CFLAGS@ -GLIB_DEPENDENCIES_LIBS = @GLIB_DEPENDENCIES_LIBS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ diff -Nru mod-mono-2.4.3/man/ChangeLog mod-mono-2.10/man/ChangeLog --- mod-mono-2.4.3/man/ChangeLog 1970-01-01 00:00:00.000000000 +0000 +++ mod-mono-2.10/man/ChangeLog 2011-01-13 22:32:35.000000000 +0000 @@ -0,0 +1,17 @@ +2009-12-02 Marek Habersack + + * mod_mono.8.in: documented new directive MonoTargetFramework + +2009-09-21 Marek Habersack + + * mod_mono.8.in: documented MonoCheckHiddenFiles + +2009-03-08 Marek Habersack + + * mod_mono.8.in: added documentation for the new MonoIOMAP + directive. + +2009-01-28 Marek Habersack + + * mod_mono.8.in: removed all the traces of Apache 1.3 support + diff -Nru mod-mono-2.4.3/man/Makefile.in mod-mono-2.10/man/Makefile.in --- mod-mono-2.4.3/man/Makefile.in 2009-11-17 18:38:46.000000000 +0000 +++ mod-mono-2.10/man/Makefile.in 2011-01-13 22:48:14.000000000 +0000 @@ -33,7 +33,7 @@ host_triplet = @host@ subdir = man DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/mod_mono.8.in + $(srcdir)/mod_mono.8.in ChangeLog ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -78,8 +78,6 @@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GLIB_DEPENDENCIES_CFLAGS = @GLIB_DEPENDENCIES_CFLAGS@ -GLIB_DEPENDENCIES_LIBS = @GLIB_DEPENDENCIES_LIBS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ diff -Nru mod-mono-2.4.3/man/mod_mono.8.in mod-mono-2.10/man/mod_mono.8.in --- mod-mono-2.4.3/man/mod_mono.8.in 2009-10-26 20:20:34.000000000 +0000 +++ mod-mono-2.10/man/mod_mono.8.in 2011-01-13 22:32:35.000000000 +0000 @@ -1,6 +1,6 @@ .\" .\" mod_mono manual page. -.\" (C) 2004,2007 Novell, Inc. +.\" (C) 2004-2009 Novell, Inc. .\" Author: .\" Gonzalo Paniagua Javier (gonzalo@ximian.com) .\" Marek Habersack (mhabersack@novell.com) @@ -10,12 +10,11 @@ .if n .sp .. -.TH mod_mono "8" "26 Jul 2007" "mod_mono @VERSION@" "ASP.NET Support for Apache" +.TH mod_mono "8" "28 Jan 2009" "mod_mono @VERSION@" "ASP.NET Support for Apache" .SH NAME mod_mono \- apache module that enables ASP.NET pages. Works together with mod-mono-server.exe .SH DESCRIPTION -\fImod_mono\fP is a simple module that works with both 1.3 and 2.0 -versions of apache. +\fImod_mono\fP is a simple module that works with Apache 2.0 or newer. .PP It needs mod-mono-server.exe installed on the system. By default, it will attemp to run mod-mono-server.exe if it doesn't find it's running. @@ -68,7 +67,7 @@ it. Value cannot be lower than 2. Default value: 2 .TP -.I "MonoAutoRestartMode (Apache 2.0+ only)" +.I "MonoAutoRestartMode" Set the auto-restart mode for the backend(s). Three modes are available: None - do not auto-restart, Requests - restart after a configured number of requests served, Time - restart after the backend has been up for the specified @@ -78,12 +77,12 @@ state will be lost. Default value: None .TP -.I "MonoAutoRestartRequests (Apache 2.0+ only)" +.I "MonoAutoRestartRequests" Number of requests for a backend to serve before auto-restarting. The value here is taken into account only when MonoAutoRestartMode is set to Requests. Default value: 10000 .TP -.I "MonoAutoRestartTime (Apache 2.0+ only)" +.I "MonoAutoRestartTime" Time after which the backend should be auto-restarted. The time format is: DD[:HH[:MM[:SS]]]. Default value: 00:12:00:00 .TP @@ -99,6 +98,12 @@ The full path to the mod-mono-server script. Default value: "/usr/bin/mod-mono-server" .TP +.I "MonoTargetFramework" +If MonoRunXSP is True, this option selects the .NET framework version to use. This +affects the backend that is started to service the requests. The MonoServerPath option +takes precedence over this setting. Available values are "2.0", "3.5" and "4.0". +Default value: "2.0" +.TP .I "MonoWapiDir" The directory where mono runtime will create the ".wapi" directory used to emulate windows I/O. It's used to set MONO_SHARED_DIR. @@ -169,13 +174,13 @@ .I "MonoMaxActiveRequests" The maximum number of concurrent requests mod_mono will pass off to the ASP.NET backend. Set to zero to turn off the limit. Default value: -20. +0. .TP .I "MonoMaxWaitingRequests" The maximum number of concurrent requests mod_mono will hold while the ASP.NET backend is busy with the maximum number of requests specified by MonoMaxActiveRequests. Requests that can't be processed -or held are dropped with Service Unavailable. Default value: 20. +or held are dropped with Service Unavailable. Default value: 150. .TP .I "MonoCheckHiddenFiles" Do not protect hidden files/directories from being accessed by clients. Hidden files/directories are those with @@ -185,11 +190,13 @@ per-request cost. Accepts a boolean value - 'true' or 'false' Default value: true. AppSettings key name: MonoServerCheckHiddenFiles. -.SH SAMPLE CONFIGURATION +.SH SAMPLE VIRTUAL HOST CONFIGURATION +Note that the configuration below requires the mod_mono module to be +loaded by Apache. How it is done is distribution-specific - please check +your distribution documentation for details. + This one using : .nf - LoadModule mono_module /usr/lib/apache/1.3/libmod_mono.so - AddModule mod_mono.c Alias /mono "/usr/lib/xsp/test" AddMonoApplications default "/mono:/usr/lib/xsp/test" @@ -202,7 +209,6 @@ .PP This one using : .nf - LoadModule mono_module modules/libmod_mono.so Alias /demo "/usr/lib/xsp/test" AddMonoApplications default "/demo:/usr/lib/xsp/test" @@ -290,7 +296,7 @@ .SH MAILING LISTS See http://mail.ximian.com/mailman/mono-list for details. .SH WEB SITE -Visit http://www.mono-project.com/ for details. +Visit http://mono-project.com/Mod_mono for details. .SH SEE ALSO .BR xsp (1), mod-mono-server (1), mono (1), mcs (1) diff -Nru mod-mono-2.4.3/NEWS mod-mono-2.10/NEWS --- mod-mono-2.4.3/NEWS 2009-10-26 20:20:34.000000000 +0000 +++ mod-mono-2.10/NEWS 2011-01-13 22:32:35.000000000 +0000 @@ -50,3 +50,4 @@ process a request or not. You *MUST* use the AddType directive in your apache configuration file. More info in the INSTALL file. + diff -Nru mod-mono-2.4.3/README mod-mono-2.10/README --- mod-mono-2.4.3/README 2009-10-26 20:20:34.000000000 +0000 +++ mod-mono-2.10/README 2011-01-13 22:32:35.000000000 +0000 @@ -1,6 +1,6 @@ mod_mono --------- -mod_mono is an apache module that provides ASP.NET functionality. +mod_mono is an Apache 2.0+ module that provides ASP.NET functionality. See INSTALL for installation instructions @@ -10,5 +10,6 @@ Questions are usually sent to mono-list (http://lists.ximian.com/mailman/listinfo/mono-list). -More information at http://www.mono-project.com/ +More information at http://mono-project.com/Mod_mono + diff -Nru mod-mono-2.4.3/src/ChangeLog mod-mono-2.10/src/ChangeLog --- mod-mono-2.4.3/src/ChangeLog 1970-01-01 00:00:00.000000000 +0000 +++ mod-mono-2.10/src/ChangeLog 2011-01-13 22:32:35.000000000 +0000 @@ -0,0 +1,102 @@ +2010-01-19 Marek Habersack + + * mod_mono.c (set_process_limits): if RLIMIT_AS is defined, set it + in addition to RLIMIT_DATA. Fixes bug #568843. Patch from Brett + Kiefer , thanks! + +2010-01-18 Marek Habersack + + * mod_mono.c (fork_mod_mono_server): use waitpid to wait for the + 1st child during the double fork. Fixes bug #569789. Patch from + John Lightsey , thanks! + +2010-01-11 Marek Habersack + + * mod_mono.c (increment_active_requests): moved variable + declaration to the top of a block so that code doesn't require a + C99-compliant compiler. Fixes bug #569794. Patch from John + Lightsey , thanks! + +2009-12-07 Gonzalo Paniagua Javier + + * mod_mono.c: fix compilation on systems that don't define SIGPWR. + +2009-12-02 Marek Habersack + + * mod_mono.c: added new directive MonoTargetFramework which allows + one to select which framework backend to start (2.0, 3.5 and 4.0 + with the first two being aliases). + +2009-11-09 Marek Habersack + + * mod_mono.c: implemented a list of URLs in the control panel, + based on patch from Heiner Wolf , + thanks! + +2009-11-06 Marek Habersack + + * mod_mono.c (fork_mod_mono_server): initialize supplementary + group ids after forking. Patch from Philip Tricca + , thanks! + +2009-09-21 Marek Habersack + + * mod_mono.c: added new directive to disable hidden file/directory + protection in the backend (MonoCheckHiddenFiles). + +2009-08-24 Marek Habersack + + * Makefile.am (mod_mono_la_CFLAGS): glib is no longer used + + * glib_compat.c, glib_compat.h: added. Compatibility glib + functions/macros used in mono-io-portability.c + +2009-03-16 Marek Habersack + + * mod_mono.c (ensure_dashboard_initialized): do the XXGLOBAL + detection based on the passed alias. Better fix for #476289 + +2009-03-14 Marek Habersack + + * mod_mono.c (ensure_dashboard_initialized): takes an argument + which tells it whether it's called as part of the XXGLOBAL (auto + app) server and, if yes, turns off the dashboard attachment + critical error which in this case is a false alarm. Fixes bug + #476289 + +2009-03-08 Marek Habersack + + * mod_mono.c (send_entire_file): attempts to map file name using + mono_portability_find_file which is able to find files with the + same name but different case if MONO_IOMAP is in effect. + Added a new directive, MonoIOMAP which takes two parameters - the + alias and MONO_IOMAP-style value (all/case/drive). This directive + switches MONO_IOMAP on for that alias within mod_mono as well as + exports the MONO_IOMAP environment variable in the backend's + environment. + + * mono-io-portability.c, mono-io-portability.h: added. Copied from + mono runtime and modified for mod_mono purposes. + +2009-02-20 Marek Habersack + + * mod_mono.h: removed Apache 1.3 support. + Defined several macros used in mod_mono.c + + * mod_mono.c: removed Apache 1.3 support. + Replaced atoi calls with own function to convert strings to + integers with a fall back to a provided default (string_to_long). + Adjusted levels of several DEBUG_PRINT messages. + Improved dashboard initialization code. + Some refactoring to make code more granular. + Redirecting stdout to /dev/null depends on whether we run with + debugging on or not and whether we were compiled with + --enable-debug or not. + + * Makefile.am: removed Apache 1.3 support + +2009-01-28 Marek Habersack + + * mod_mono.h, mod_mono.c, Makefile.am: removed all the traces of + Apache 1.3 support + diff -Nru mod-mono-2.4.3/src/glib_compat.c mod-mono-2.10/src/glib_compat.c --- mod-mono-2.4.3/src/glib_compat.c 1970-01-01 00:00:00.000000000 +0000 +++ mod-mono-2.10/src/glib_compat.c 2011-01-13 22:32:35.000000000 +0000 @@ -0,0 +1,204 @@ +#ifdef HAVE_CONFIG_H +#include "mod_mono_config.h" +#endif + +#include + +#include "glib_compat.h" + +#define ASCII_TOLOWER(_ch_) (isascii ((int)(_ch_)) && isalpha ((int)(_ch_))) ? tolower ((_ch_)) : (_ch_) + +static gchar * +g_strndup (const char *str, int n) +{ +#ifdef HAVE_STRNDUP + return strndup (str, n); +#else + if (str) { + char *retval = malloc (n + 1); + if (retval) + strncpy (retval, str, n)[n] = 0; + return retval; + } + return NULL; +#endif +} + +static void add_to_vector (gchar ***vector, int size, gchar *token) +{ + *vector = *vector == NULL ? + (gchar **) malloc (2 * sizeof (*vector)) : + (gchar **) realloc (*vector, (size + 1) * sizeof (*vector)); + + (*vector)[size - 1] = token; +} + +static gchar **make_empty_vector () +{ + gchar **vector = (gchar**)malloc (2 * sizeof (vector)); + vector [0] = NULL; + + return vector; +} + +gchar **g_strsplit (const gchar *string, const gchar *delimiter, int max_tokens) +{ + gchar **vector = NULL; + int delimiter_len = strlen (delimiter); + int size = 1; + const gchar *c; + gchar *token; + + if (!string || !*string) + return make_empty_vector (); + + if (!delimiter || !*delimiter) { + add_to_vector (&vector, size, strdup (string)); + return vector; + } + + if (strncmp (string, delimiter, delimiter_len) == 0) { + add_to_vector (&vector, size, strdup ("")); + size++; + string += delimiter_len; + } else + vector = NULL; + + while (*string && !(max_tokens > 0 && size >= max_tokens)) { + c = string; + + if (*string == *delimiter && strncmp (string, delimiter, delimiter_len) == 0) { + token = strdup (""); + string += delimiter_len; + } else { + while (*string && (*string != *delimiter || strncmp (string, delimiter, delimiter_len) != 0)) + string++; + + if (*string) { + size_t toklen = (size_t)(string - c); + token = g_strndup (c, toklen); + + if (strcmp (string, delimiter) != 0) + string += delimiter_len; + } else + token = strdup (c); + } + + add_to_vector (&vector, size, token); + size++; + } + + if (*string) { + add_to_vector (&vector, size, strdup (string)); + size++; + } + + if (!vector) + return make_empty_vector (); + else if (size > 0) + vector [size - 1] = NULL; + + return vector; +} + +gint g_ascii_strcasecmp (const gchar *s1, const gchar *s2) +{ + gchar ch1, ch2; + + if (s1 == s2) + return 0; + + do { + ch1 = ASCII_TOLOWER (*s1); + ch2 = ASCII_TOLOWER (*s2); + + if (ch1 == 0) + break; + + s1++; + s2++; + } while (ch1 == ch2); + + return (ch1 > ch2 ? 1 : ch1 < ch2 ? -1 : 0); +} + +gchar* g_strdelimit (gchar *string, const gchar *delimiters, gchar new_delimiter) +{ + gchar *ptr; + + if (!string) + return NULL; + + if (delimiters == NULL) + delimiters = G_STR_DELIMITERS; + + for (ptr = string; *ptr; ptr++) { + if (strchr (delimiters, *ptr)) + *ptr = new_delimiter; + } + + return string; +} + +gchar* g_strdup (const gchar *str) +{ + if (!str) + return NULL; + + return (gchar*) strdup (str); +} + +void g_free (gpointer mem) +{ + if (!mem) + return; + + free (mem); +} + +gboolean g_ascii_isalpha (gchar c) +{ + return (isascii ((int)c) && isalpha ((int)c)); +} + +void g_strfreev (gchar **str_array) +{ + gchar **orig = str_array; + if (str_array == NULL) + return; + while (*str_array != NULL){ + g_free (*str_array); + str_array++; + } + g_free (orig); +} + +gchar *g_strjoinv (const gchar *separator, gchar **str_array) +{ + char *res; + size_t slen, len, i; + + if (separator != NULL) + slen = strlen (separator); + else + slen = 0; + + len = 0; + for (i = 0; str_array [i] != NULL; i++){ + len += strlen (str_array [i]); + len += slen; + } + if (len == 0) + return g_strdup (""); + if (slen > 0 && len > 0) + len -= slen; + len++; + res = (char*)malloc (len); + strcpy (res, str_array [0]); + for (i = 1; str_array [i] != NULL; i++){ + if (separator != NULL) + strcat (res, separator); + strcat (res, str_array [i]); + } + return res; +} diff -Nru mod-mono-2.4.3/src/glib_compat.h mod-mono-2.10/src/glib_compat.h --- mod-mono-2.4.3/src/glib_compat.h 1970-01-01 00:00:00.000000000 +0000 +++ mod-mono-2.10/src/glib_compat.h 2011-01-13 22:32:35.000000000 +0000 @@ -0,0 +1,48 @@ +#ifndef GLIB_COMPAT_H_ +#define GLIB_COMPAT_H_ + +#include +#include +#include +#include +#include + +typedef char gboolean; +typedef char gchar; +typedef int gint; +typedef void* gpointer; + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef G_STR_DELIMITERS +#define G_STR_DELIMITERS "_-|> <." +#endif + +#ifndef g_memmove +#define g_memmove memmove +#endif + +#ifndef g_new0 +#define g_new0(struct_type, n_structs) ((struct_type*)calloc (sizeof (struct_type), n_structs)) +#endif + +#ifndef g_assert +#define g_assert(expr) +#endif + +gchar **g_strsplit (const gchar *string, const gchar *delimiter, int max_tokens); +gint g_ascii_strcasecmp (const gchar *s1, const gchar *s2); +gchar* g_strdup (const gchar *str); +void g_free (gpointer mem); +gchar* g_strdelimit (gchar *string, const gchar *delimiters, gchar new_delimiter); +gboolean g_ascii_isalpha (gchar c); +void g_strfreev (gchar **str_array); +gchar *g_strjoinv (const gchar *separator, gchar **str_array); + +#endif /* !GLIB_COMPAT_H_ */ diff -Nru mod-mono-2.4.3/src/Makefile.am mod-mono-2.10/src/Makefile.am --- mod-mono-2.4.3/src/Makefile.am 2009-10-26 20:20:34.000000000 +0000 +++ mod-mono-2.10/src/Makefile.am 2011-01-13 22:32:35.000000000 +0000 @@ -1,16 +1,13 @@ CLEANFILES = .libs/libmod_mono.so .libs/libmod_mono_old.so *~ lib_LTLIBRARIES = mod_mono.la -mod_mono_la_SOURCES = mod_mono.c mod_mono.h mono-io-portability.c mono-io-portability.h -mod_mono_la_LDFLAGS = -module $(GLIB_DEPENDENCIES_LIBS) +mod_mono_la_SOURCES = mod_mono.c mod_mono.h mono-io-portability.c mono-io-portability.h glib_compat.h glib_compat.c +mod_mono_la_LDFLAGS = -module +mod_mono_la_DEPENDENCIES = ../include/mod_mono_config.h #/usr/sbin/apxs -c -I../include -I. -D HAVE_CONFIG_H mod_mono.c -mod_mono_la_CFLAGS = -Wall -DDFLT_MONO_CONFIG_DIR=\"$(DFLT_MONO_CONFIG_DIR)\" $(GLIB_DEPENDENCIES_CFLAGS) +mod_mono_la_CFLAGS = -Wall -DDFLT_MONO_CONFIG_DIR=\"$(DFLT_MONO_CONFIG_DIR)\" install: $(lib_LTLIBRARIES) $(mkinstalldirs) "$(DESTDIR)$(APXS_LIBEXECDIR)" -if APACHE2 $(APXS) -S LIBEXECDIR="$(DESTDIR)$(APXS_LIBEXECDIR)" -i -n mono mod_mono.la -else - $(APXS) -S LIBEXECDIR="$(DESTDIR)$(APXS_LIBEXECDIR)" -i -n mono .libs/mod_mono.so -endif diff -Nru mod-mono-2.4.3/src/Makefile.in mod-mono-2.10/src/Makefile.in --- mod-mono-2.4.3/src/Makefile.in 2009-11-17 18:38:46.000000000 +0000 +++ mod-mono-2.10/src/Makefile.in 2011-01-13 22:48:14.000000000 +0000 @@ -33,7 +33,7 @@ build_triplet = @build@ host_triplet = @host@ subdir = src -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,7 +52,7 @@ LTLIBRARIES = $(lib_LTLIBRARIES) mod_mono_la_LIBADD = am_mod_mono_la_OBJECTS = mod_mono_la-mod_mono.lo \ - mod_mono_la-mono-io-portability.lo + mod_mono_la-mono-io-portability.lo mod_mono_la-glib_compat.lo mod_mono_la_OBJECTS = $(am_mod_mono_la_OBJECTS) mod_mono_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(mod_mono_la_CFLAGS) \ @@ -104,8 +104,6 @@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GLIB_DEPENDENCIES_CFLAGS = @GLIB_DEPENDENCIES_CFLAGS@ -GLIB_DEPENDENCIES_LIBS = @GLIB_DEPENDENCIES_LIBS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ @@ -196,10 +194,11 @@ top_srcdir = @top_srcdir@ CLEANFILES = .libs/libmod_mono.so .libs/libmod_mono_old.so *~ lib_LTLIBRARIES = mod_mono.la -mod_mono_la_SOURCES = mod_mono.c mod_mono.h mono-io-portability.c mono-io-portability.h -mod_mono_la_LDFLAGS = -module $(GLIB_DEPENDENCIES_LIBS) +mod_mono_la_SOURCES = mod_mono.c mod_mono.h mono-io-portability.c mono-io-portability.h glib_compat.h glib_compat.c +mod_mono_la_LDFLAGS = -module +mod_mono_la_DEPENDENCIES = ../include/mod_mono_config.h #/usr/sbin/apxs -c -I../include -I. -D HAVE_CONFIG_H mod_mono.c -mod_mono_la_CFLAGS = -Wall -DDFLT_MONO_CONFIG_DIR=\"$(DFLT_MONO_CONFIG_DIR)\" $(GLIB_DEPENDENCIES_CFLAGS) +mod_mono_la_CFLAGS = -Wall -DDFLT_MONO_CONFIG_DIR=\"$(DFLT_MONO_CONFIG_DIR)\" all: all-am .SUFFIXES: @@ -269,6 +268,7 @@ distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_mono_la-glib_compat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_mono_la-mod_mono.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_mono_la-mono-io-portability.Plo@am__quote@ @@ -307,6 +307,13 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mod_mono_la_CFLAGS) $(CFLAGS) -c -o mod_mono_la-mono-io-portability.lo `test -f 'mono-io-portability.c' || echo '$(srcdir)/'`mono-io-portability.c +mod_mono_la-glib_compat.lo: glib_compat.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mod_mono_la_CFLAGS) $(CFLAGS) -MT mod_mono_la-glib_compat.lo -MD -MP -MF $(DEPDIR)/mod_mono_la-glib_compat.Tpo -c -o mod_mono_la-glib_compat.lo `test -f 'glib_compat.c' || echo '$(srcdir)/'`glib_compat.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/mod_mono_la-glib_compat.Tpo $(DEPDIR)/mod_mono_la-glib_compat.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='glib_compat.c' object='mod_mono_la-glib_compat.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mod_mono_la_CFLAGS) $(CFLAGS) -c -o mod_mono_la-glib_compat.lo `test -f 'glib_compat.c' || echo '$(srcdir)/'`glib_compat.c + mostlyclean-libtool: -rm -f *.lo @@ -495,8 +502,7 @@ install: $(lib_LTLIBRARIES) $(mkinstalldirs) "$(DESTDIR)$(APXS_LIBEXECDIR)" -@APACHE2_TRUE@ $(APXS) -S LIBEXECDIR="$(DESTDIR)$(APXS_LIBEXECDIR)" -i -n mono mod_mono.la -@APACHE2_FALSE@ $(APXS) -S LIBEXECDIR="$(DESTDIR)$(APXS_LIBEXECDIR)" -i -n mono .libs/mod_mono.so + $(APXS) -S LIBEXECDIR="$(DESTDIR)$(APXS_LIBEXECDIR)" -i -n mono mod_mono.la # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff -Nru mod-mono-2.4.3/src/mod_mono.c mod-mono-2.10/src/mod_mono.c --- mod-mono-2.4.3/src/mod_mono.c 2009-11-17 18:38:39.000000000 +0000 +++ mod-mono-2.10/src/mod_mono.c 2011-01-13 22:32:35.000000000 +0000 @@ -1,13 +1,13 @@ /* * mod_mono.c - * + * * Authors: * Daniel Lopez Ridruejo * Gonzalo Paniagua Javier * Marek Habersack * * Copyright (c) 2002 Daniel Lopez Ridruejo - * (c) 2002-2006 Novell, Inc. + * (c) 2002-2009 Novell, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,6 +32,13 @@ #define DEBUG_LEVEL 0 #endif +#ifdef DEBUG +#define STDOUT_NULL_DEFAULT 0 +#else +#define STDOUT_NULL_DEFAULT 1 +#endif + +#include #include "mod_mono.h" #include "mono-io-portability.h" @@ -100,12 +107,13 @@ typedef struct xsp_data { char is_default; char *alias; - char *filename; + char *filename; /* Unix socket path */ char *umask_value; char *run_xsp; char *executable_path; char *path; char *server_path; + char *target_framework; char *applications; char *wapidir; char *document_root; @@ -126,7 +134,7 @@ char *start_wait_time; char *max_active_requests; char *max_waiting_requests; - + /* auto-restart stuff */ auto_restart_mode restart_mode; uint32_t restart_requests; @@ -136,14 +144,13 @@ unsigned char no_flush; int portability_level; -#ifndef APACHE13 + /* The dashboard */ apr_shm_t *dashboard_shm; dashboard_data *dashboard; apr_global_mutex_t *dashboard_mutex; char dashboard_mutex_initialized_in_child; char *dashboard_file; char *dashboard_lock_file; -#endif } xsp_data; typedef struct { @@ -158,7 +165,6 @@ char *client_block_buffer; } request_data; -#ifndef APACHE13 typedef struct { char *name; apr_lockmech_e sym; @@ -166,7 +172,7 @@ } lock_mechanism; #define LOCK_MECH(name) {#name, APR_LOCK_ ## name, APR_HAS_ ## name ## _SERIALIZE} - + static lock_mechanism lockMechanisms [] = { LOCK_MECH (FCNTL), LOCK_MECH (FLOCK), @@ -176,20 +182,40 @@ {"DEFAULT", APR_LOCK_DEFAULT, 1}, {NULL, 0, 0} }; -#endif static int send_table (apr_pool_t *pool, apr_table_t *table, apr_socket_t *sock); static void start_xsp (module_cfg *config, int is_restart, char *alias); static apr_status_t terminate_xsp2 (void *data, char *alias, int for_restart, int lock_held); -#ifndef APACHE13 +#define IS_MASTER(__conf__) (!strcmp (GLOBAL_SERVER_NAME, (__conf__)->alias)) + +static long +string_to_long (char *str, char *what, long def) +{ + long retval; + char *endptr; + + if (!str || !*str) + return def; + + retval = strtol (str, &endptr, 0); + if ((retval == LONG_MAX && errno == ERANGE) || (str == endptr) || *endptr) { + ap_log_error (APLOG_MARK, APLOG_WARNING, STATUS_AND_SERVER, + "%s: conversion to integer failed - returning the default value %lu.", + what ? what : "Configuration", def); + return def; + } + + return retval; +} + static apr_lockmech_e get_apr_locking_mechanism () { char *name = getenv ("MOD_MONO_LOCKING_MECHANISM"); int i = 0; - DEBUG_PRINT (0, "Requested locking mechanism name: %s", name); + DEBUG_PRINT (2, "Requested locking mechanism name: %s", name); if (!name) return APR_LOCK_DEFAULT; while (lockMechanisms [i].name) { @@ -212,7 +238,6 @@ name); return APR_LOCK_DEFAULT; } -#endif /* */ static int @@ -222,8 +247,11 @@ int i; xsp_data *xsp; + DEBUG_PRINT (0, "Searching for alias %s", alias); + DEBUG_PRINT (0, "%u servers available", config->nservers); for (i = 0; i < config->nservers; i++) { xsp = &config->servers [i]; + DEBUG_PRINT (0, "Server at index %u is '%s'", i, xsp->alias); if ((alias == NULL || !strcmp (alias, "default")) && xsp->is_default) return i; @@ -384,7 +412,6 @@ #endif } -#ifndef APACHE13 inline static void initialize_uri_list (uri_item* list, int nitems) { @@ -401,12 +428,22 @@ { apr_status_t rv; mode_t old_umask; - int is_global; #if defined (APR_HAS_USER) apr_uid_t cur_uid; apr_gid_t cur_gid; int switch_back_to_root = 0; +#endif + int is_global; + if (IS_MASTER (xsp)) + is_global = 1; + else + is_global = 0; + + if (!xsp->dashboard_mutex || !xsp->dashboard_shm) + xsp->dashboard = NULL; + +#if defined (APR_HAS_USER) if (apache_get_userid () == -1 || apache_get_groupid () == -1) { ap_log_error (APLOG_MARK, APLOG_CRIT, STATUS_AND_SERVER, "The unix daemon module not initialized yet. Please make sure that " @@ -414,14 +451,7 @@ "been parsed. Not initializing the dashboard."); return; } -#endif - if (strcmp ("XXGLOBAL", xsp->alias)) - is_global = 1; - else - is_global = 0; - -#if defined (APR_HAS_USER) if (apr_uid_current (&cur_uid, &cur_gid, p) == APR_SUCCESS && cur_uid == 0) { DEBUG_PRINT (2, "Temporarily switching to target uid/gid"); switch_back_to_root = 1; @@ -429,7 +459,7 @@ ap_log_error (APLOG_MARK, APLOG_ALERT, STATUS_AND_SERVER, "setegid: unable to set effective group id to %u. %s", (unsigned)apache_get_groupid (), strerror (errno)); - + if (seteuid (apache_get_userid ()) == -1) ap_log_error (APLOG_MARK, APLOG_ALERT, STATUS_AND_SERVER, "seteuid: unable to set effective user id to %u. %s", @@ -439,7 +469,7 @@ if (!xsp->dashboard_mutex) { DEBUG_PRINT (1, "creating dashboard mutex = %s", xsp->dashboard_lock_file); - + if (unlink (xsp->dashboard_lock_file) == -1 && errno != ENOENT) { ap_log_error (APLOG_MARK, APLOG_CRIT, STATUS_AND_SERVER, "Failed to remove dashboard mutex file '%s'; will attempt to continue. %s", @@ -465,51 +495,56 @@ #endif } - if (!xsp->dashboard_shm) { + if (!xsp->dashboard_shm) rv = apr_shm_attach (&xsp->dashboard_shm, xsp->dashboard_file, p); - if (rv == APR_SUCCESS) { - xsp->dashboard = apr_shm_baseaddr_get (xsp->dashboard_shm); + else + rv = APR_SUCCESS; + + if (rv == APR_SUCCESS) { + DEBUG_PRINT (1, "Attaching to dashboard (file '%s')", xsp->dashboard_file); + xsp->dashboard = apr_shm_baseaddr_get (xsp->dashboard_shm); + } else { + DEBUG_PRINT (1, "removing dashboard file '%s'", xsp->dashboard_file); + if (unlink (xsp->dashboard_file) == -1 && errno != ENOENT) { + if (!is_global) + ap_log_error (APLOG_MARK, APLOG_CRIT, STATCODE_AND_SERVER (rv), + "Failed to attach to existing dashboard, and removing dashboard file '%s' failed (%s). Further action impossible.", + xsp->dashboard_file, strerror (errno)); + xsp->dashboard = NULL; + goto restore_creds; + } + + DEBUG_PRINT (1, "creating dashboard '%s'", xsp->dashboard_file); + old_umask = umask (0077); + rv = apr_shm_create (&xsp->dashboard_shm, sizeof (dashboard_data), xsp->dashboard_file, p); + umask (old_umask); + if (rv != APR_SUCCESS) { + xsp->dashboard = NULL; + ap_log_error (APLOG_MARK, APLOG_CRIT, STATCODE_AND_SERVER (rv), + "Failed to create shared memory segment for backend '%s' at '%s'.", + xsp->alias, xsp->dashboard_file); } else { - DEBUG_PRINT (1, "removing dashboard file '%s'", xsp->dashboard_file); - if (unlink (xsp->dashboard_file) == -1 && errno != ENOENT) { - if (!is_global) - ap_log_error (APLOG_MARK, APLOG_CRIT, STATCODE_AND_SERVER (rv), - "Failed to attach to existing dashboard, and removing dashboard file '%s' failed (%s). Further action impossible.", - xsp->dashboard_file, strerror (errno)); - goto restore_creds; - } - - DEBUG_PRINT (1, "creating dashboard '%s'", xsp->dashboard_file); - - old_umask = umask (0077); - rv = apr_shm_create (&xsp->dashboard_shm, sizeof (dashboard_data), xsp->dashboard_file, p); - umask (old_umask); + rv = apr_shm_attach (&xsp->dashboard_shm, xsp->dashboard_file, p); if (rv != APR_SUCCESS) { + xsp->dashboard = NULL; ap_log_error (APLOG_MARK, APLOG_CRIT, STATCODE_AND_SERVER (rv), - "Failed to create shared memory segment for backend '%s' at '%s'.", - xsp->alias, xsp->dashboard_file); - } else { - rv = apr_shm_attach (&xsp->dashboard_shm, xsp->dashboard_file, p); - if (rv != APR_SUCCESS) { - ap_log_error (APLOG_MARK, APLOG_CRIT, STATCODE_AND_SERVER (rv), - "Failed to attach to the dashboard '%s'", - xsp->dashboard_file); - goto restore_creds; - } - - xsp->dashboard = apr_shm_baseaddr_get (xsp->dashboard_shm); - xsp->dashboard->start_time = time (NULL); - xsp->dashboard->requests_counter = 0; - xsp->dashboard->handled_requests = 0; - xsp->dashboard->restart_issued = 0; - xsp->dashboard->active_requests = 0; - xsp->dashboard->waiting_requests = 0; - xsp->dashboard->starting = 0; - xsp->dashboard->accepting_requests = 1; - - initialize_uri_list (xsp->dashboard->active_uri_list, ACTIVE_URI_LIST_ITEM_COUNT); - initialize_uri_list (xsp->dashboard->waiting_uri_list, WAITING_URI_LIST_ITEM_COUNT); + "Failed to attach to the dashboard '%s'", + xsp->dashboard_file); + goto restore_creds; } + + xsp->dashboard = apr_shm_baseaddr_get (xsp->dashboard_shm); + xsp->dashboard->start_time = time (NULL); + xsp->dashboard->requests_counter = 0; + xsp->dashboard->handled_requests = 0; + xsp->dashboard->restart_issued = 0; + xsp->dashboard->active_requests = 0; + xsp->dashboard->waiting_requests = 0; + xsp->dashboard->starting = 0; + xsp->dashboard->accepting_requests = 1; + + initialize_uri_list (xsp->dashboard->active_uri_list, ACTIVE_URI_LIST_ITEM_COUNT); + initialize_uri_list (xsp->dashboard->waiting_uri_list, WAITING_URI_LIST_ITEM_COUNT); } } @@ -528,7 +563,6 @@ } #endif } -#endif static int add_xsp_server (apr_pool_t *pool, const char *alias, module_cfg *config, int is_default, int is_virtual) @@ -537,16 +571,17 @@ xsp_data *servers; int nservers; int i; -#ifndef APACHE13 char num [8]; -#endif - + + DEBUG_PRINT (0, "add_xsp_server for alias %s", alias); i = search_for_alias (alias, config); + DEBUG_PRINT (0, "index for this server is %d", i); if (i >= 0) return i; + DEBUG_PRINT (0, "alias not found, continuing"); server = apr_pcalloc (pool, sizeof (xsp_data)); - + server->is_default = is_default; server->alias = apr_pstrdup (pool, alias); server->filename = NULL; @@ -554,7 +589,8 @@ server->run_xsp = "True"; /* (Obsolete) server->executable_path = EXECUTABLE_PATH; */ server->path = NULL; - server->server_path = MODMONO_SERVER_PATH; + server->server_path = NULL; + server->target_framework = NULL; server->applications = NULL; server->wapidir = WAPIDIR; server->document_root = DOCUMENT_ROOT; @@ -572,13 +608,12 @@ server->portability_level = PORTABILITY_UNKNOWN; server->status = FORK_NONE; server->is_virtual = is_virtual; - server->start_attempts = "3"; - server->start_wait_time = "2"; + server->start_attempts = NULL; + server->start_wait_time = NULL; server->no_flush = 1; - server->max_active_requests = "20"; - server->max_waiting_requests = "20"; - -#ifndef APACHE13 + server->max_active_requests = NULL; + server->max_waiting_requests = NULL; + apr_snprintf (num, sizeof (num), "%u", (unsigned)config->nservers + 1); server->dashboard_file = apr_pstrcat (pool, DASHBOARD_FILE, @@ -597,8 +632,10 @@ server->restart_time = 0; ensure_dashboard_initialized (config, server, pool); -#endif - + /* This is needed, because we're being called from the main process and dashboard must NOT */ + /* be set to any value when start_xsp is called from child init or handler init. */ + server->dashboard = NULL; + nservers = config->nservers + 1; servers = config->servers; config->servers = apr_pcalloc (pool, sizeof (xsp_data) * nservers); @@ -607,7 +644,7 @@ memcpy (&config->servers [config->nservers], server, sizeof (xsp_data)); config->nservers = nservers; - + return config->nservers - 1; } @@ -615,7 +652,7 @@ handle_restart_config (char *ptr, unsigned long offset, const char *value) { xsp_data *xsp = (xsp_data*)ptr; - + if (offset == APR_OFFSETOF (xsp_data, restart_mode)) { if (!strncasecmp (value, "REQUESTS", 8)) { xsp->restart_mode = AUTORESTART_MODE_REQUESTS; @@ -651,21 +688,21 @@ char *ptr; unsigned long offset; int is_default; - + offset = (unsigned long) cmd->info; - DEBUG_PRINT (1, "store_config %lu '%s' '%s'", offset, first, second); + DEBUG_PRINT (0, "store_config %lu '%s' '%s'", offset, first, second); config = ap_get_module_config (cmd->server->module_config, &mono_module); if (second == NULL) { if (config->auto_app) { - idx = search_for_alias ("XXGLOBAL", config); + idx = search_for_alias (GLOBAL_SERVER_NAME, config); value = first; ptr = (char *) &config->servers [idx]; - + /* special handling for restart fields */ if (handle_restart_config (ptr, offset, value)) return NULL; ptr += offset; - + /* MonoApplications/AddMonoApplications are accumulative */ if (offset == APR_OFFSETOF (xsp_data, applications)) prev_value = *((char **) ptr); @@ -680,32 +717,34 @@ return NULL; } alias = "default"; - if (cmd->server->is_virtual) + if (cmd->server->is_virtual && cmd->server->server_hostname) alias = cmd->server->server_hostname; + value = first; is_default = 1; } else { - if (!strcmp (first, "XXGLOBAL")) + if (!strcmp (first, GLOBAL_SERVER_NAME)) return apr_pstrdup (cmd->pool, "XXGLOBAL is a reserved application identifier."); alias = first; value = second; is_default = (!strcmp (alias, "default")); } - + /* Disable autoapp if there's any other application. MonoDebug is excluded. */ if (!config->auto_app_set) config->auto_app = FALSE; idx = search_for_alias (alias, config); - if (idx == -1) + if (idx == -1) { + DEBUG_PRINT (0, "Calling add_xsp from %s", __PRETTY_FUNCTION__); idx = add_xsp_server (cmd->pool, alias, config, is_default, cmd->server->is_virtual); - + } ptr = (char *) &config->servers [idx]; - + /* special handling for restart fields */ if (handle_restart_config (ptr, offset, value)) return NULL; - + ptr += offset; /* MonoApplications/AddMonoApplications are accumulative */ if (offset == APR_OFFSETOF (xsp_data, applications)) @@ -718,7 +757,7 @@ } *((char **) ptr) = new_value; - DEBUG_PRINT (1, "store_config end: %s", new_value); + DEBUG_PRINT (0, "store_config end: %s", new_value); return NULL; } @@ -733,7 +772,7 @@ if (new_module->nservers == 0) return new_module; - + base_config = base_module->servers; new_config = new_module->servers; nservers = base_module->nservers + new_module->nservers; @@ -743,7 +782,7 @@ memcpy (base_module->servers, base_config, sizeof (xsp_data) * base_module->nservers); memcpy (&base_module->servers [base_module->nservers], new_config, new_module->nservers * sizeof (xsp_data)); base_module->nservers = nservers; - DEBUG_PRINT (1, "Total mod-mono-servers to spawn so far: %d", nservers); + DEBUG_PRINT (0, "Total mod-mono-servers to spawn so far: %d", nservers); return new_module; } @@ -752,7 +791,7 @@ { per_dir_config *cfg; - DEBUG_PRINT (1, "creating dir config for %s", dirspec); + DEBUG_PRINT (0, "creating dir config for %s", dirspec); cfg = apr_pcalloc (p, sizeof (per_dir_config)); if (dirspec != NULL) @@ -776,8 +815,7 @@ server = apr_pcalloc (p, sizeof (module_cfg)); server->auto_app = TRUE; server->auto_app_set = FALSE; - - add_xsp_server (p, "XXGLOBAL", server, FALSE, FALSE); + add_xsp_server (p, GLOBAL_SERVER_NAME, server, FALSE, FALSE); return server; } @@ -785,11 +823,6 @@ request_send_response_from_memory (request_rec *r, char *byteArray, int size, int noFlush) { DEBUG_PRINT (0, "sending from memory with%s flush", noFlush ? "out" : ""); - -#ifdef APACHE13 - if (r->sent_bodyct == 0) - ap_send_http_header (r); -#endif ap_rwrite (byteArray, size, r); if (!noFlush) { @@ -813,57 +846,35 @@ static int connection_get_remote_port (conn_rec *c) -{ -#ifdef APACHE13 - return ntohs (c->remote_addr.sin_port); -#elif defined(APACHE22) +{ +#if defined(APACHE22) return c->remote_addr->port; #else apr_port_t port; apr_sockaddr_port_get (&port, c->remote_addr); return port; #endif - + } static int connection_get_local_port (request_rec *r) { -#ifdef APACHE13 - return ap_get_server_port (r); -#elif defined(APACHE22) +#if defined(APACHE22) return r->connection->local_addr->port; #else apr_port_t port; apr_sockaddr_port_get (&port, r->connection->local_addr); - return port; + return port; #endif } static const char * connection_get_remote_name (request_rec *r) { -#ifdef APACHE13 - return ap_get_remote_host (r->connection, r->per_dir_config, REMOTE_NAME); -#else return ap_get_remote_host (r->connection, r->per_dir_config, REMOTE_NAME, NULL); -#endif } -/* Do nothing - * This does a kind of final flush which is not what we want. - * It caused bug 60117. - static void - connection_flush (request_rec *r) - { - #ifdef APACHE13 - ap_rflush (r); - #else - ap_flush_conn (r->connection); - #endif - } -*/ - static void set_response_header (request_rec *r, const char *name, @@ -890,12 +901,12 @@ { apr_size_t prevsize = size; apr_status_t statcode; - + if ((statcode = apr_socket_send (sock, str, &size)) != APR_SUCCESS) { ap_log_error (APLOG_MARK, APLOG_ERR, STATCODE_AND_SERVER (statcode), "write_data failed"); return -1; } - + return (prevsize == size) ? size : -1; } @@ -903,12 +914,12 @@ read_data (apr_socket_t *sock, void *ptr, apr_size_t size) { apr_status_t statcode; - + if ((statcode = apr_socket_recv (sock, ptr, &size)) != APR_SUCCESS) { ap_log_error (APLOG_MARK, APLOG_ERR, STATCODE_AND_SERVER (statcode), "read_data failed"); return -1; } - + return size; } @@ -945,68 +956,48 @@ static int send_entire_file (request_rec *r, const char *filename, int *result, xsp_data *xsp) { - int retval = 0; - gchar *file_path = mono_portability_find_file (xsp->portability_level, filename, TRUE); - -#ifdef APACHE2 -# ifdef APR_LARGEFILE -# define MODMONO_LARGE APR_LARGEFILE -# else -# define MODMONO_LARGE 0 -# endif +#ifdef APR_LARGEFILE +# define MODMONO_LARGE APR_LARGEFILE +#else +# define MODMONO_LARGE 0 +#endif apr_file_t *file; apr_status_t st; apr_finfo_t info; apr_size_t nbytes; const apr_int32_t flags = APR_READ | APR_SENDFILE_ENABLED | MODMONO_LARGE; + int retval = 0; + gchar *file_path = mono_portability_find_file (xsp->portability_level, filename, TRUE); st = apr_file_open (&file, file_path ? file_path : filename, flags, APR_OS_DEFAULT, r->pool); if (st != APR_SUCCESS) { - DEBUG_PRINT (1, "file_open FAILED (path: %s)", file_path ? file_path : filename); - *result = HTTP_FORBIDDEN; + DEBUG_PRINT (2, "file_open FAILED (path: %s)", file_path ? file_path : filename); + *result = HTTP_FORBIDDEN; retval = -1; goto finish; } st = apr_file_info_get (&info, APR_FINFO_SIZE, file); if (st != APR_SUCCESS) { - DEBUG_PRINT (1, "info_get FAILED"); - *result = HTTP_FORBIDDEN; + DEBUG_PRINT (2, "info_get FAILED"); + *result = HTTP_FORBIDDEN; retval = -1; goto finish; } st = ap_send_fd (file, r, 0, info.size, &nbytes); apr_file_close (file); - if (nbytes < 0) { - DEBUG_PRINT (1, "SEND FAILED"); - *result = HTTP_INTERNAL_SERVER_ERROR; - retval = -1; - goto finish; - } -#else - FILE *fp; - - fp = fopen (file_path ? file_path : filename, "rb"); - if (fp == NULL) { - DEBUG_PRINT (1, "file_open FAILED (path: %s)", file_path ? file_path : filename); - *result = HTTP_FORBIDDEN; - retval = -1; - goto finish; - } - - if (ap_send_fd (fp, r) < 0) { - fclose (fp); + if (nbytes < 0 || st != APR_SUCCESS) { + DEBUG_PRINT (2, "SEND FAILED"); *result = HTTP_INTERNAL_SERVER_ERROR; retval = -1; goto finish; } - fclose (fp); -#endif finish: if (file_path) g_free (file_path); + return retval; } @@ -1023,8 +1014,8 @@ ap_log_error (APLOG_MARK, APLOG_ERR, STATUS_AND_SERVER, "failed to read data string"); return -1; } - - DEBUG_PRINT (2, "Headers length: %d", size); + + DEBUG_PRINT (0, "Headers length: %d", size); pos = 0; while (size > 0) { name = &str [pos]; @@ -1197,7 +1188,7 @@ error_message = "failed to set status (data size)"; break; } - + if (read_data_string (r->pool, sock, &str, NULL) == NULL) { error_message = "failed to set status (data)"; status = -1; @@ -1236,7 +1227,6 @@ error_message = "failed to send file (file data)"; break; - case SET_CONFIGURATION: { if (read_data (sock, &xsp->no_flush, sizeof (xsp->no_flush)) == -1) { error_message = "failed to set configuration (output buffering)"; @@ -1245,7 +1235,7 @@ } break; } - + default: error_message = "unknown command"; status = -1; @@ -1263,110 +1253,38 @@ return TRUE; } -#ifndef APACHE2 -static apr_status_t -apr_sockaddr_info_get (apr_sockaddr_t **sa, const char *hostname, - int family, int port, int flags, apr_pool_t *p) -{ - struct addrinfo hints, *list; - int error; - struct sockaddr_in *addr; - - if (port < 0 || port > 65535) - return EINVAL; - - memset (&hints, 0, sizeof (hints)); - hints.ai_family = family; - hints.ai_socktype = SOCK_STREAM; - error = getaddrinfo (hostname, NULL, &hints, &list); - if (error != 0) { - ap_log_error (APLOG_MARK, APLOG_ERR, STATUS_AND_SERVER, - "mod_mono: getaddrinfo failed (%s) hostname: '%s' port: '%d'.", - strerror (error), hostname, port); - - return error; - } - - *sa = apr_pcalloc (p, sizeof (apr_sockaddr_t)); - (*sa)->pool = p; - (*sa)->addrlen = list->ai_addrlen; - (*sa)->addr = apr_pcalloc (p, list->ai_addrlen); - memcpy ((*sa)->addr, list->ai_addr, list->ai_addrlen); - addr = (struct sockaddr_in *) (*sa)->addr; - addr->sin_port = htons (port); - - freeaddrinfo (list); - - return APR_SUCCESS; -} - -static apr_status_t -apr_socket_connect (apr_socket_t *sock, apr_sockaddr_t *sa) -{ - int sock_fd; - - apr_os_sock_get (&sock_fd, sock); - if (connect (sock_fd, sa->addr, sa->addrlen) != 0) - return errno; - - return APR_SUCCESS; -} - -static apr_status_t -apr_socket_send (apr_socket_t *sock, const char *buf, apr_size_t *len) -{ - int result; - int total; - - total = 0; - do { - result = write (sock->fd, buf + total, (*len) - total); - if (result >= 0) - total += result; - } while ((result >= 0 && total < *len) || (result == -1 && errno == EINTR)); - - return (total == *len) ? 0 : -1; -} +#if !defined (HAVE_APR_SOCKET_CONNECT) +/* libapr-0 <= 0.9.3 (or 0.9.2?) */ +# define apr_socket_connect apr_connect +#endif -static apr_status_t -apr_socket_recv (apr_socket_t *sock, char *buf, apr_size_t *len) +static char * +get_default_socket_name (apr_pool_t *pool, const char *alias, const char *base) { - int result; - int total; - apr_os_sock_t sock_fd; - - apr_os_sock_get (&sock_fd, sock); - total = 0; - do { - result = read (sock_fd, buf + total, (*len) - total); - if (result >= 0) - total += result; - } while ((result > 0 && total < *len) || (result == -1 && errno == EINTR)); - - return (total == *len) ? 0 : -1; + return apr_pstrcat (pool, base, "_", !alias || !alias [0] ? "default" : alias, NULL); } -static void -apr_sleep (long t) +static char * +get_base_socket_path (apr_pool_t *pool, xsp_data *conf) { - struct timeval tv; - - tv.tv_usec = t % 1000000; - tv.tv_sec = t / 1000000; - select (0, NULL, NULL, NULL, &tv); + if (conf->filename && conf->filename [0]) + return conf->filename; + else + return get_default_socket_name (pool, conf->alias, SOCKET_FILE); } -#elif !defined (HAVE_APR_SOCKET_CONNECT) -/* libapr-0 <= 0.9.3 (or 0.9.2?) */ -# define apr_socket_connect apr_connect -#endif static char * -get_default_socket_name (apr_pool_t *pool, const char *alias, const char *base) +get_unix_socket_path (apr_pool_t *pool, xsp_data *conf) { - return apr_pstrcat (pool, base, "_", alias == NULL ? "default" : alias, NULL); + DEBUG_PRINT (0, "getting unix socket path"); + if (IS_MASTER (conf)) { + return get_default_global_socket_name (pool, SOCKET_FILE); + } else { + return get_base_socket_path (pool, conf); + } } -static apr_status_t +static apr_status_t try_connect (xsp_data *conf, apr_socket_t **sock, apr_int32_t family, apr_pool_t *pool) { char *error; @@ -1381,10 +1299,9 @@ apr_os_sock_get (&sock_fd, *sock); unix_address.sun_family = PF_UNIX; - if (conf->filename != NULL) - fn = conf->filename; - else - fn = get_default_socket_name (pool, conf->alias, SOCKET_FILE); + fn = get_unix_socket_path (pool, conf); + if (!fn) + return -2; DEBUG_PRINT (1, "Socket file name %s", fn); memcpy (unix_address.sun_path, fn, strlen (fn) + 1); @@ -1397,7 +1314,7 @@ la = conf->listen_address ? conf->listen_address : LISTEN_ADDRESS; rv = apr_sockaddr_info_get (&sa, la, family, - atoi (conf->listen_port), 0, pool); + (apr_port_t)string_to_long (conf->listen_port, "MonoListenPort", 0), 0, pool); if (rv != APR_SUCCESS) { ap_log_error (APLOG_MARK, APLOG_ERR, STATUS_AND_SERVER, @@ -1421,11 +1338,11 @@ error = strerror (err); if (conf->listen_port == NULL) ap_log_error (APLOG_MARK, APLOG_ERR, STATUS_AND_SERVER, - "mod_mono: file %s exists, but wrong permissions.", fn); + "mod_mono: file %s exists, but wrong permissions. %s", fn, error); else ap_log_error (APLOG_MARK, APLOG_ERR, STATUS_AND_SERVER, - "mod_mono: no permission to listen on %s.", - conf->listen_port); + "mod_mono: no permission to listen on %s. %s", + conf->listen_port, error); apr_socket_close (*sock); @@ -1456,7 +1373,7 @@ sep = strrchr ((char *) filepath, '/'); if (sep == NULL || sep == filepath) return "/"; - + result = apr_pcalloc (pool, sep - filepath + 1); strncpy (result, filepath, sep - filepath); return result; @@ -1545,19 +1462,30 @@ #endif set_process_limits2 (RLIMIT_CPU, max_cpu_time, "CPU time"); set_process_limits2 (RLIMIT_DATA, max_memory, "memory (data segment)"); +#ifdef RLIMIT_AS + // RLIMIT_AS may not be defined on some systems (e.g. BSD) + // If it is defined, it is almost certainly more correct than RLIMIT_DATA, as it + // will cause mmap to return null. + set_process_limits2 (RLIMIT_AS, max_memory, "memory (virtual memory)"); +#endif + } static void -set_null_stdout () +configure_stdout (char null_stdout) { #ifndef WIN32 - int fd; + if (null_stdout) { - fd = open ("/dev/null", O_WRONLY); - if (fd >= 0) { - dup2 (fd, 1); - } + int fd; + + fd = open ("/dev/null", O_WRONLY); + if (fd >= 0) { + dup2 (fd, 1); + } + } else #endif + dup2 (2, 1); } static void @@ -1571,6 +1499,7 @@ char *path; char *tmp; char *serverdir; + char *server_path; char *wapidir; int max_memory = 0; int max_cpu_time = 0; @@ -1589,7 +1518,7 @@ return; } #endif - is_master = (0 == strcmp ("XXGLOBAL", config->alias)); + is_master = IS_MASTER (config); if (is_master && config->listen_port == NULL && config->filename == NULL) config->filename = get_default_global_socket_name (pool, SOCKET_FILE); @@ -1637,19 +1566,14 @@ } if (config->max_memory != NULL) - max_memory = atoi (config->max_memory); + max_memory = (int)string_to_long (config->max_memory, "MonoMaxMemory", -1); if (config->max_cpu_time != NULL) - max_cpu_time = atoi (config->max_cpu_time); - - set_environment_variables (pool, config->env_vars); - - if (config->iomap && *config->iomap) - SETENV (pool, "MONO_IOMAP", config->iomap); + max_cpu_time = (int)string_to_long (config->max_cpu_time, "MonoMaxCPUTime", -1); pid = fork (); if (pid > 0) { - wait (&status); + waitpid (pid, &status, 0); return; } @@ -1659,6 +1583,11 @@ exit (0); setsid (); + set_environment_variables (pool, config->env_vars); + + if (config->iomap && *config->iomap) + SETENV (pool, "MONO_IOMAP", config->iomap); + status = chdir ("/"); #if defined (APR_HAS_USER) @@ -1687,7 +1616,7 @@ (unsigned)apache_get_userid (), strerror (errno)); } #endif - + if (config->umask_value == NULL) umask (0077); else { @@ -1701,11 +1630,12 @@ } DEBUG_PRINT (1, "child started"); -#ifdef DEBUG - dup2 (2, 1); -#else - set_null_stdout (); -#endif + if (config->debug && !strcasecmp (config->debug, "True")) { + SETENV (pool, "MONO_OPTIONS", "--debug"); + configure_stdout (0); + } else + configure_stdout (STDOUT_NULL_DEFAULT); + for (i = getdtablesize () - 1; i >= 3; i--) close (i); @@ -1715,7 +1645,30 @@ if (tmp == NULL) tmp = ""; - serverdir = get_directory (pool, config->server_path); + if (config->server_path && config->server_path [0]) + server_path = config->server_path; + else if (config->target_framework && config->target_framework [0]) { + switch (config->target_framework [0]) { + case '2': + case '3': + server_path = MODMONO_SERVER_PATH; + break; + + case '4': + server_path = MODMONO_SERVER_BASEPATH "4"; + break; + + default: + ap_log_error (APLOG_MARK, APLOG_ERR, STATUS_AND_SERVER, + "Unsupported target framework version: %s", + config->target_framework); + exit (1); + } + + } else + server_path = MODMONO_SERVER_PATH; + + serverdir = get_directory (pool, server_path); DEBUG_PRINT (1, "serverdir: %s", serverdir); path = apr_pcalloc (pool, strlen (tmp) + strlen (serverdir) + 2); sprintf (path, "%s:%s", serverdir, tmp); @@ -1734,8 +1687,6 @@ } SETENV (pool, "MONO_SHARED_DIR", config->wapidir); - if (config->debug && !strcasecmp (config->debug, "True")) - SETENV (pool, "MONO_OPTIONS", "--debug"); #ifdef REMOVE_DISPLAY #warning mod_mono is compiled with support for removing the DISPLAY variable (Bug 464225) @@ -1747,7 +1698,7 @@ #endif memset (argv, 0, sizeof (char *) * MAXARGS); argi = 0; - argv [argi++] = config->server_path; + argv [argi++] = server_path; if (config->listen_port != NULL) { char *la; @@ -1758,12 +1709,8 @@ argv [argi++] = "--port"; argv [argi++] = config->listen_port; } else { - char *fn; - - fn = config->filename; - if (fn == NULL) - fn = get_default_socket_name (pool, config->alias, SOCKET_FILE); - + char *fn = get_unix_socket_path (pool, config); + DEBUG_PRINT (0, "Backend socket path: %s", fn); argv [argi++] = "--filename"; argv [argi++] = fn; } @@ -1802,19 +1749,24 @@ * * Any new argi++'s that are added here must also increase * the maxargs argument at the top of this method to prevent - * array out-of-bounds. + * array out-of-bounds. */ ap_log_error (APLOG_MARK, APLOG_DEBUG, STATUS_AND_SERVER, "running '%s %s %s %s %s %s %s %s %s %s %s %s %s'", argv [0], argv [1], argv [2], argv [3], argv [4], - argv [5], argv [6], argv [7], argv [8], + argv [5], argv [6], argv [7], argv [8], argv [9], argv [10], argv [11], argv [12]); /* Unblock signals Mono uses: see bug #472732 */ + /* TODO: are PWR and XCPU used in non-linux systems too? What about 33 and 35? */ sigemptyset (&sigset); +#ifdef SIGPWR sigaddset (&sigset, SIGPWR); +#endif +#ifdef SIGXCPU sigaddset (&sigset, SIGXCPU); +#endif sigaddset (&sigset, 33); sigaddset (&sigset, 35); sigprocmask (SIG_UNBLOCK, &sigset, NULL); @@ -1846,7 +1798,7 @@ #if APR_HAVE_IPV6 la = conf->listen_address ? conf->listen_address : LISTEN_ADDRESS; rv = apr_sockaddr_info_get (&sa, la, family, - atoi (conf->listen_port), + (apr_port_t)string_to_long (conf->listen_port, "MonoListenPort", 0), APR_IPV6_ADDR_OK, pool); @@ -1864,13 +1816,8 @@ } /* APR_PROTO_TCP = 6 */ proto = (family == AF_UNSPEC) ? 6 : 0; -#ifdef APACHE2 rv = APR_SOCKET_CREATE (sock, family, SOCK_STREAM, proto, pool); -#else - (*sock)->fd = ap_psocket (pool, family, SOCK_STREAM, 0); - (*sock)->pool = pool; - rv = ((*sock)->fd != -1) ? APR_SUCCESS : -1; -#endif + if (rv != APR_SUCCESS) { int err= errno; ap_log_error (APLOG_MARK, APLOG_ERR, STATUS_AND_SERVER, @@ -1879,7 +1826,7 @@ } rv = try_connect (conf, sock, family, pool); - DEBUG_PRINT (1, "try_connect: %d", (int) rv); + DEBUG_PRINT (2, "try_connect: %d", (int) rv); return rv; } @@ -1888,16 +1835,19 @@ { uint32_t le; uint32_t tmp; - + + if (!str && str_length > 0) + str_length = 0; + buffer += offset; if (str && !str_length) { tmp = strlen (str); le = LE_FROM_INT (tmp); } else tmp = (uint32_t)str_length; - + le = LE_FROM_INT (tmp); - + memcpy (buffer, &le, sizeof (uint32_t)); if (tmp > 0) { buffer += sizeof (uint32_t); @@ -1945,7 +1895,7 @@ int32_t count = 0, size; char *countLocation = buffer + sizeof (int32_t); char *sizeLocation = buffer; - + elts = apr_table_elts (table); if (elts->nelts == 0) { /* size is sizeof (int32_t) */ int32_t *i32 = (int32_t *) buffer; @@ -1959,10 +1909,10 @@ ptr += sizeof (int32_t) * 2; t_elt = (const apr_table_entry_t *) (elts->elts); t_end = t_elt + elts->nelts; - + do { if (t_elt->val != NULL) { - DEBUG_PRINT (3, "%s: %s", t_elt->key, t_elt->val); + DEBUG_PRINT (0, "%s: %s", t_elt->key, t_elt->val); ptr += write_string_to_buffer (ptr, 0, t_elt->key, 0); ptr += write_string_to_buffer (ptr, 0, t_elt->val, 0); count++; @@ -1976,7 +1926,7 @@ size = (ptr - buffer) - sizeof (int32_t); size = LE_FROM_INT (size); memcpy (sizeLocation, &size, sizeof (int32_t)); - + return (ptr - buffer); } @@ -2000,8 +1950,8 @@ uint32_t size; server_rec *s = r->server; initial_data_info info; - - DEBUG_PRINT (2, "Send init"); + + DEBUG_PRINT (1, "Send init"); size = 1 + sizeof (size); info.method_len = ((r->method != NULL) ? strlen (r->method) : 0); @@ -2025,21 +1975,21 @@ info.local_ip_len = strlen (r->connection->local_ip); 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); - + size += sizeof (int32_t); info.remote_name = connection_get_remote_name (r); info.remote_name_len = strlen (info.remote_name); - + size += info.remote_name_len + sizeof (int32_t); - + size += get_table_send_size (r->headers_in); - + size++; /* byte. TRUE->auto_app, FALSE: configured application */ if (auto_app != FALSE) { if (r->filename != NULL) { @@ -2052,14 +2002,14 @@ } else info.filename_len = 0; - DEBUG_PRINT (2, "Initial data size: %u", size); + DEBUG_PRINT (1, "Initial data size: %u", size); if (size <= INITIAL_DATA_MAX_ALLOCA_SIZE) ptr = str = alloca (size); else ptr = str = apr_pcalloc (r->pool, size); *ptr++ = (char)PROTOCOL_VERSION; /* version. Keep in sync with ModMonoRequest. */ - i = LE_FROM_INT (size); + i = LE_FROM_INT (size) - (1 + sizeof (size)); /* Subtract the command the data size from the buffer size */ memcpy (ptr, &i, sizeof (i)); ptr += sizeof (int32_t); ptr += write_string_to_buffer (ptr, 0, r->method, info.method_len); @@ -2109,7 +2059,7 @@ inline static void set_uri_item (uri_item* list, int nitems, request_rec* r, int32_t id) { int i; - int uri_len; + int uri_len = 0; int args_len; for (i = 0; i < nitems; i++) { @@ -2142,39 +2092,38 @@ static int increment_active_requests (xsp_data *conf, request_rec *r, int32_t id) { -#ifndef APACHE13 /* This function tries to increment the counters that limit * the number of simultaenous requests being processed. It * assumes that the mutex is held when the function is called * and returns with the mutex still held, although it may * unlock and lock the mutex itself. */ - apr_status_t rv; - - int max_active_requests = atoi(conf->max_active_requests); - int max_waiting_requests = atoi(conf->max_waiting_requests); + int max_active_requests; + int max_waiting_requests; /* Limit the number of concurrent requests. If no * limiting is in effect (or can't be done because - * there is no dashboard), return the OK status. + * there is no dashboard), return the OK status. * Same test as in the decrement function and the * control panel. */ - if (!conf->dashboard_mutex || !conf->dashboard) - return 1; - + + max_active_requests = (int)string_to_long (conf->max_active_requests, "MonoMaxActiveRequests", MAX_ACTIVE_REQUESTS); + max_waiting_requests = (int)string_to_long (conf->max_waiting_requests, "MonoMaxWaitingRequests", MAX_WAITING_REQUESTS); // From here on, rv holds onto whether we still have // the lock acquired, just in case some error ocurrs // acquiring it during the loop. rv = APR_SUCCESS; - + /* If any limiting is in effect, and if there are the maximum * allowed concurrent requests, then we have to hold the request * for a bit of time. */ if (max_active_requests > 0 && conf->dashboard->active_requests >= max_active_requests) { + int retries = 20; + /* We need to wait until the active requests * go below the maximum. */ - + /* However, we won't keep more than max_waiting_req requests * waiting, which means the max number of active Apache * connections associated with this mod-mono-server @@ -2182,41 +2131,29 @@ */ if (conf->dashboard->waiting_requests >= max_waiting_requests) { ap_log_error (APLOG_MARK, APLOG_ERR, STATUS_AND_SERVER, - "Maximum number of concurrent mod_mono requests to %s reached (%d active, %d waiting). Request dropped.", - conf->dashboard_lock_file, max_active_requests, max_waiting_requests); + "Maximum number of concurrent mod_mono requests to %s reached (%d active, %d waiting). Request dropped.", + conf->dashboard_lock_file, max_active_requests, max_waiting_requests); return 0; } ap_log_error (APLOG_MARK, APLOG_INFO, STATUS_AND_SERVER, - "Maximum number of concurrent mod_mono requests to %s reached (%d). Will wait and retry.", - conf->dashboard_lock_file, max_active_requests); - + "Maximum number of concurrent mod_mono requests to %s reached (%d). Will wait and retry.", + conf->dashboard_lock_file, max_active_requests); + conf->dashboard->waiting_requests++; set_uri_item (conf->dashboard->waiting_uri_list, WAITING_URI_LIST_ITEM_COUNT, r, id); - int retries = 20; while (retries-- > 0) { // Release the lock, wait some time, and then re-acquire. apr_global_mutex_unlock (conf->dashboard_mutex); apr_sleep (500000); // 0.5 seconds rv = apr_global_mutex_lock (conf->dashboard_mutex); - if (rv != APR_SUCCESS) break; - - // If the number of requests is low enough, we - // can stop waiting. + if (rv != APR_SUCCESS) + break; + // If the number of requests is low enough, we + // can stop waiting. if (conf->dashboard->active_requests < max_active_requests) - break; - } - - { - int i; - for (i = 0; i < WAITING_URI_LIST_ITEM_COUNT; i++) { - if (conf->dashboard->waiting_uri_list[i].id == id) { - conf->dashboard->waiting_uri_list[i].id = -1; - conf->dashboard->waiting_uri_list[i].start_time = -1; - break; - } - } + break; } // Hopefully we haven't lost the lock, but if we have we still @@ -2224,9 +2161,9 @@ conf->dashboard->waiting_requests--; clear_uri_item (conf->dashboard->waiting_uri_list, WAITING_URI_LIST_ITEM_COUNT, id); - // If we got to the end of the loop and still too - // many requests are going, stop processing the - // request. + // If we got to the end of the loop and still too + // many requests are going, stop processing the + // request. if (rv == APR_SUCCESS && conf->dashboard->active_requests >= max_active_requests) { ap_log_error (APLOG_MARK, APLOG_ERR, STATUS_AND_SERVER, "Maximum number (%d) of concurrent mod_mono requests to %s reached. Dropping request.", @@ -2234,7 +2171,7 @@ return 0; } } - + /* If we lost the lock during the loop, drop the request * because we don't want to decrement the counter later * since we couldn't increment it here. */ @@ -2245,32 +2182,24 @@ set_uri_item (conf->dashboard->active_uri_list, ACTIVE_URI_LIST_ITEM_COUNT, r, id); return 1; -#else - return 1; -#endif } - static void -decrement_active_requests (xsp_data *conf, uint32_t id) +static void +decrement_active_requests (xsp_data *conf, int32_t id) { -#ifndef APACHE13 apr_status_t rv; /* Check if limiting is in effect. Same test as in the * increment function and the control panel. */ - if (!conf->dashboard_mutex || !conf->dashboard) - return; - + rv = apr_global_mutex_lock (conf->dashboard_mutex); // Since we incremented the counter, even if we can't // get a lock, we had better attempt to decrement it. - conf->dashboard->active_requests--; + clear_uri_item (conf->dashboard->active_uri_list, ACTIVE_URI_LIST_ITEM_COUNT, id); - if (rv == APR_SUCCESS) apr_global_mutex_unlock (conf->dashboard_mutex); -#endif } static int @@ -2278,9 +2207,7 @@ { apr_socket_t *sock; apr_status_t rv; -#ifndef APACHE13 apr_status_t rv2; -#endif int command = -1; int result = FALSE; apr_status_t input; @@ -2289,32 +2216,27 @@ per_dir_config *dir_config = NULL; int idx; xsp_data *conf; - int connect_attempts; - int start_wait_time; - char *socket_name = NULL; + uint32_t connect_attempts; + uint32_t start_wait_time; int retrying, was_starting; - int is_global = 0; int32_t id = -1; config = ap_get_module_config (r->server->module_config, &mono_module); - DEBUG_PRINT (2, "config = 0x%p", config); + DEBUG_PRINT (1, "config = 0x%lx", (unsigned long)config); if (r->per_dir_config != NULL) dir_config = ap_get_module_config (r->per_dir_config, &mono_module); - DEBUG_PRINT (2, "dir_config = 0x%p", dir_config); + DEBUG_PRINT (1, "dir_config = 0x%lx", (unsigned long)dir_config); if (dir_config != NULL && dir_config->alias != NULL) idx = search_for_alias (dir_config->alias, config); else idx = search_for_alias (NULL, config); - DEBUG_PRINT (2, "idx = %d", idx); - + DEBUG_PRINT (0, "idx = %d", idx); if (idx < 0) { DEBUG_PRINT (2, "Alias not found. Checking for auto-applications."); - if (config->auto_app) { - idx = search_for_alias ("XXGLOBAL", config); - is_global = 1; - } + if (config->auto_app) + idx = search_for_alias (GLOBAL_SERVER_NAME, config); if (idx == -1) { DEBUG_PRINT (2, "Global config not found. Finishing request."); @@ -2322,25 +2244,13 @@ } } -#ifdef APACHE13 - sock = apr_pcalloc (r->pool, sizeof (apr_socket_t)); -#endif conf = &config->servers [idx]; - - if (conf->filename != NULL) - socket_name = conf->filename; - else - socket_name = get_default_socket_name (r->pool, conf->alias, SOCKET_FILE); - - connect_attempts = atoi (conf->start_attempts); - start_wait_time = atoi (conf->start_wait_time); - if (connect_attempts < 0) - connect_attempts = 3; + ensure_dashboard_initialized (config, conf, pconf); + connect_attempts = (uint32_t)string_to_long (conf->start_attempts, "MonoXSPStartAttempts", START_ATTEMPTS); + start_wait_time = (uint32_t)string_to_long (conf->start_wait_time, "MonoXSPStartWaitTime", START_WAIT_TIME); if (start_wait_time < 2) start_wait_time = 2; -#ifndef APACHE13 - ensure_dashboard_initialized (config, conf, pconf); if (conf->dashboard_mutex && !conf->dashboard_mutex_initialized_in_child) { /* Avoiding to call apr_global_mutex_child_init is a hack since in certain * conditions it may lead to apache deadlock. Since we don't know the exact cause @@ -2351,7 +2261,7 @@ if (!getenv ("MOD_MONO_LOCKING_MECHANISM")) { rv = apr_global_mutex_child_init (&conf->dashboard_mutex, conf->dashboard_lock_file, pconf); } else { - DEBUG_PRINT (0, "Skipping apr_global_mutex_child_init on '%s'", conf->dashboard_lock_file); + DEBUG_PRINT (1, "Skipping apr_global_mutex_child_init on '%s'", conf->dashboard_lock_file); rv = APR_SUCCESS; } if (rv != APR_SUCCESS) { @@ -2362,33 +2272,30 @@ } else conf->dashboard_mutex_initialized_in_child = 1; } - + if (conf->dashboard_mutex && conf->dashboard) { if (apr_global_mutex_lock (conf->dashboard_mutex) == APR_SUCCESS) { int ok = conf->dashboard->accepting_requests; if (ok) { - id = conf->dashboard->requests_counter++; + id = (int32_t)conf->dashboard->requests_counter++; ok = increment_active_requests (conf, r, id); } - + apr_global_mutex_unlock (conf->dashboard_mutex); if (!ok) return HTTP_SERVICE_UNAVAILABLE; } } -#endif + if (conf->portability_level > PORTABILITY_MAX) conf->portability_level = PORTABILITY_UNKNOWN; mono_portability_helpers_init (&conf->portability_level, conf->iomap); rv = -1; /* avoid a warning about uninitialized value */ - -#ifndef APACHE13 retrying = connect_attempts; was_starting = 0; -#endif while (connect_attempts--) { rv = setup_socket (&sock, conf, r->pool); DEBUG_PRINT (2, "After setup_socket"); @@ -2400,13 +2307,11 @@ } DEBUG_PRINT (2, "No backend found, will start a new copy."); -#ifndef APACHE13 if (conf->dashboard_mutex) rv2 = apr_global_mutex_lock (conf->dashboard_mutex); else rv2 = APR_SUCCESS; DEBUG_PRINT (1, "Acquiring the %s lock for backend start", conf->dashboard_lock_file); - if (rv2 != APR_SUCCESS) { ap_log_error (APLOG_MARK, APLOG_CRIT, STATCODE_AND_SERVER (rv2), "Failed to acquire %s lock, cannot continue starting new process", @@ -2415,7 +2320,7 @@ return HTTP_SERVICE_UNAVAILABLE; } - if (conf->dashboard->starting) { + if (conf->dashboard && conf->dashboard->starting) { retrying--; was_starting = 1; @@ -2434,7 +2339,6 @@ apr_sleep (apr_time_from_sec (start_wait_time)); continue; } -#endif if (was_starting) { was_starting = 0; @@ -2446,10 +2350,10 @@ } start_xsp (config, 0, conf->alias); + /* give some time for warm-up */ DEBUG_PRINT (2, "Started new backend, sleeping %us to let it configure", (unsigned)start_wait_time); apr_sleep (apr_time_from_sec (start_wait_time)); -#ifndef APACHE13 if (conf->dashboard_mutex) { rv2 = apr_global_mutex_unlock (conf->dashboard_mutex); if (rv2 != APR_SUCCESS) @@ -2458,11 +2362,10 @@ conf->dashboard_lock_file); } -#endif } else break; /* connected */ } - + if (rv != APR_SUCCESS) { /* Failed to connect to mod-mono-server after several attempts. */ ap_log_error (APLOG_MARK, APLOG_ERR, STATUS_AND_SERVER, @@ -2470,8 +2373,8 @@ decrement_active_requests (conf, id); return HTTP_SERVICE_UNAVAILABLE; } - - DEBUG_PRINT (2, "Sending init data"); + + DEBUG_PRINT (1, "Sending initial data"); if (send_initial_data (r, sock, auto_app) != 0) { ap_log_error (APLOG_MARK, APLOG_ALERT, STATUS_AND_SERVER, "Failed to send initial data. %s", strerror (errno)); @@ -2479,8 +2382,8 @@ decrement_active_requests (conf, id); return HTTP_SERVICE_UNAVAILABLE; } - - DEBUG_PRINT (2, "Loop"); + + DEBUG_PRINT (1, "Loop"); do { input = read_data (sock, (char *) &command, sizeof (int32_t)); if (input == sizeof (int32_t)) { @@ -2495,53 +2398,51 @@ "Command stream corrupted, last command was %d", command); status = HTTP_INTERNAL_SERVER_ERROR; } - + decrement_active_requests (conf, id); -#ifndef APACHE13 if (conf->restart_mode > AUTORESTART_MODE_NONE) { int do_restart = 0; - - DEBUG_PRINT (2, "Auto-restart enabled for '%s', checking if restart required", conf->alias); + DEBUG_PRINT (2, "Auto-restart enabled for '%s', checking if restart required", conf->alias); ensure_dashboard_initialized (config, conf, pconf); if (!conf->dashboard_mutex || !conf->dashboard) return status; rv = apr_global_mutex_lock (conf->dashboard_mutex); + DEBUG_PRINT (1, "Acquired the %s lock for backend auto-restart check", conf->dashboard_lock_file); - if (rv != APR_SUCCESS) { ap_log_error (APLOG_MARK, APLOG_CRIT, STATCODE_AND_SERVER (rv), "Failed to acquire %s lock, cannot continue auto-restart check", conf->dashboard_lock_file); return status; } - + if (conf->restart_mode == AUTORESTART_MODE_REQUESTS) { conf->dashboard->handled_requests++; if (conf->dashboard->handled_requests > conf->restart_requests) { - DEBUG_PRINT (0, "More than %u requests served (%u), restart required", + DEBUG_PRINT (2, "More than %u requests served (%u), restart required", conf->restart_requests, conf->dashboard->handled_requests); do_restart = 1; } else { - DEBUG_PRINT (0, "Backend %s has %u requests left before auto-restart", + DEBUG_PRINT (2, "Backend %s has %u requests left before auto-restart", conf->alias, conf->restart_requests - conf->dashboard->handled_requests); } } else if (conf->restart_mode == AUTORESTART_MODE_TIME) { time_t now = time (NULL); if (now - conf->dashboard->start_time > conf->restart_time) { - DEBUG_PRINT (0, "Backend uptime exceeded %us, restart required", conf->restart_time); + DEBUG_PRINT (2, "Backend uptime exceeded %us, restart required", conf->restart_time); do_restart = 1; } else { - DEBUG_PRINT (0, "Backend %s has %us left before auto-restart", + DEBUG_PRINT (2, "Backend %s has %us left before auto-restart", conf->alias, (uint32_t)(conf->restart_time - (now - conf->dashboard->start_time))); } } if (do_restart && !conf->dashboard->restart_issued) { /* we just need to stop it, it will be started at the next request */ - DEBUG_PRINT (0, "Stopping the backend '%s', it will be started at the next request", + DEBUG_PRINT (2, "Stopping the backend '%s', it will be started at the next request", conf->alias); ap_log_error (APLOG_MARK, APLOG_ALERT, STATCODE_AND_SERVER (rv), "Requesting termination of %s mod-mono-server for restart...", @@ -2549,68 +2450,19 @@ conf->dashboard->restart_issued = 1; terminate_xsp2 (r->server, conf->alias, 1, 1); } - + rv = apr_global_mutex_unlock (conf->dashboard_mutex); if (rv != APR_SUCCESS) ap_log_error (APLOG_MARK, APLOG_ALERT, STATCODE_AND_SERVER (rv), "Failed to release %s lock after auto-restart check, the process may deadlock!", conf->dashboard_lock_file); } -#endif - + DEBUG_PRINT (2, "Done. Status: %d", status); return status; } /* - static const char *known_extensions4 [] = { "aspx", "asmx", "ashx", "asax", "ascx", "soap", NULL }; -*/ -/* - * TRUE -> we know about this file - * FALSE -> decline processing - */ -/* - static int - check_file_extension (char *filename) - { - int len; - char *ext; - const char **extensions; - - if (filename == NULL) - return FALSE; - - len = strlen (filename); - if (len <= 4) - return FALSE; - - ext = strrchr (filename, '.'); - if (ext == NULL) - return FALSE; - - switch (filename - ext + len - 1) { - case 3: - * Check for xxx/Trace.axd * - if (len >=10 && !strcmp ("axd", ext + 1)) - return !strncmp ("/Trace", ext - 6, 6); - return !strcmp ("rem", ext + 1); - case 4: - extensions = (const char **) known_extensions4; - while (*extensions != NULL) { - if (!strcmp (*extensions, ext + 1)) - return TRUE; - extensions++; - } - break; - case 5: - return !strcmp ("config", ext + 1); - } - - return FALSE; - } -*/ - -/* * Compute real path directory and all the directories above that up to the first filesystem * change */ @@ -2618,10 +2470,13 @@ mono_handler (request_rec *r) { module_cfg *config; + int retval; if (r->handler != NULL && !strcmp (r->handler, "mono")) { - DEBUG_PRINT (1, "handler: %s", r->handler); - return mono_execute_request (r, FALSE); + DEBUG_PRINT (0, "handler: %s", r->handler); + retval = mono_execute_request (r, FALSE); + + return retval; } if (!r->content_type || strcmp (r->content_type, "application/x-asp-net")) @@ -2640,6 +2495,32 @@ return mono_execute_request (r, TRUE); } +static apr_status_t +connect_to_backend (xsp_data *conf, int is_restart) +{ + apr_status_t rv; + apr_socket_t *socket; + char *termstr = ""; + + rv = setup_socket (&socket, conf, pconf); + if (rv == APR_SUCCESS) { + /* connected */ + DEBUG_PRINT (2, "connected to backend of %s", conf->alias); + if (is_restart) { + write_data (socket, termstr, 1); + apr_socket_close (socket); + apr_sleep (apr_time_from_sec (2)); + return APR_SUCCESS; + } + apr_socket_close (socket); + conf->status = FORK_SUCCEEDED; + return APR_SUCCESS; + } else { + apr_socket_close (socket); + return -1; + } +} + /* * It is assumed that this function is called with the dashboard mutex held. This is not required when calling it from the module * init handler, as there's only one process running at that time. @@ -2648,74 +2529,76 @@ start_xsp (module_cfg *config, int is_restart, char *alias) { /* 'alias' may be NULL to start all XSPs */ - apr_socket_t *sock; - apr_status_t rv; - char *termstr = ""; xsp_data *xsp; int i; + char do_fork = 0; - /***** - * NOTE: we might be trying to start the same mod-mono-server in several - * different apache child processes. xsp->status tries to help avoiding this - * and mod-mono-server uses a lock that checks for same command line, same - * user... - *****/ for (i = 0; i < config->nservers; i++) { xsp = &config->servers [i]; + DEBUG_PRINT (0, "config->servers [%u]->dashboard == 0x%lX", i, (unsigned long)xsp->dashboard); if (xsp->run_xsp && !strcasecmp (xsp->run_xsp, "false")) continue; -#ifdef APACHE13 - if (xsp->status != FORK_NONE) - continue; -#endif - /* If alias isn't null, skip XSPs that don't have that alias. */ if (alias != NULL && strcmp (xsp->alias, alias)) continue; - if (!strcmp ("XXGLOBAL", xsp->alias) && config->auto_app == FALSE) + if (IS_MASTER (xsp) && config->auto_app == FALSE) continue; -#ifdef APACHE13 - sock = apr_pcalloc (pconf, sizeof (apr_socket_t)); -#else + DEBUG_PRINT (1, "xsp address 0x%lx, dashboard 0x%lx", (unsigned long)xsp, (unsigned long)xsp->dashboard); + if (!xsp->dashboard) + ensure_dashboard_initialized (config, xsp, pconf); + if (xsp->dashboard) xsp->dashboard->starting = 1; -#endif - rv = setup_socket (&sock, xsp, pconf); - - if (rv == APR_SUCCESS) { - /* connected */ - DEBUG_PRINT (0, "connected %s", xsp->alias); + do_fork = 0; + if (connect_to_backend (xsp, is_restart) == APR_SUCCESS) { if (is_restart) { - write_data (sock, termstr, 1); - apr_socket_close (sock); - apr_sleep (apr_time_from_sec (2)); i--; - continue; /* Wait for the previous to die */ + continue; } - apr_socket_close (sock); - xsp->status = FORK_SUCCEEDED; } else { - apr_socket_close (sock); - /* need fork */ - xsp->status = FORK_INPROCESS; - DEBUG_PRINT (0, "forking %s", xsp->alias); - fork_mod_mono_server (pconf, xsp); - xsp->status = FORK_SUCCEEDED; -#ifndef APACHE13 - if (xsp->dashboard) { - xsp->dashboard->start_time = time (NULL); - xsp->dashboard->handled_requests = 0; - xsp->dashboard->restart_issued = 0; - } -#endif + DEBUG_PRINT (2, "backend cannot be connected to."); + do_fork = 1; + } + + if (!do_fork) + goto reset_starting; + + DEBUG_PRINT (2, "Starting backend for alias %s", xsp->alias); + xsp->status = FORK_INPROCESS; + fork_mod_mono_server (pconf, xsp); + if (xsp->dashboard) { + xsp->dashboard->start_time = time (NULL); + xsp->dashboard->handled_requests = 0; + xsp->dashboard->restart_issued = 0; } -#ifndef APACHE13 + xsp->status = FORK_SUCCEEDED; + + reset_starting: if (xsp->dashboard) xsp->dashboard->starting = 0; -#endif + } +} + +static void +stop_xsp (xsp_data *conf) +{ + apr_socket_t *sock; + apr_status_t rv; + char *termstr = ""; + + rv = setup_socket (&sock, conf, pconf); + if (rv == APR_SUCCESS) { + write_data (sock, termstr, 1); + apr_socket_close (sock); + } + + if (conf->listen_port == NULL) { + char *fn = get_unix_socket_path (pconf, conf); + if (fn) + remove (fn); /* Don't bother checking error */ } } @@ -2725,15 +2608,11 @@ /* alias may be NULL to terminate all XSPs */ server_rec *server; module_cfg *config; - apr_socket_t *sock; apr_status_t rv; - char *termstr = ""; xsp_data *xsp; int i; -#ifndef APACHE13 int release_lock = 0; -#endif - + DEBUG_PRINT (0, "Terminate XSP"); server = (server_rec *) data; config = ap_get_module_config (server->module_config, &mono_module); @@ -2746,27 +2625,10 @@ /* If alias isn't null, skip XSPs that don't have that alias. */ if (alias != NULL && strcmp(xsp->alias, alias)) continue; - -#ifdef APACHE13 - sock = apr_pcalloc (pconf, sizeof (apr_socket_t)); -#endif - rv = setup_socket (&sock, xsp, pconf); - if (rv == APR_SUCCESS) { - write_data (sock, termstr, 1); - apr_socket_close (sock); - } - - if (xsp->listen_port == NULL) { - char *fn = xsp->filename; - if (fn == NULL) - fn = get_default_socket_name (pconf, xsp->alias, SOCKET_FILE); + stop_xsp (xsp); - remove (fn); /* Don't bother checking error */ - } - -#ifndef APACHE13 - /* destroy the dashboard */ + /* destroy the dashboard */ if (!for_restart && xsp->dashboard_shm) { DEBUG_PRINT (0, "Destroying dashboard for %s", xsp->alias); if (!lock_held && xsp->dashboard_mutex) { @@ -2777,7 +2639,7 @@ else release_lock = 1; } - + // No need to detach before destroying, and in that case we must not. // But should we detach instead of destroy if we weren't the creating // process? @@ -2786,14 +2648,14 @@ ap_log_error (APLOG_MARK, APLOG_WARNING, STATCODE_AND_SERVER (rv), "Failed to destroy the '%s' shared memory dashboard", xsp->dashboard_file); - + if (release_lock) { rv = apr_global_mutex_unlock (xsp->dashboard_mutex); if (rv != APR_SUCCESS) ap_log_error (APLOG_MARK, APLOG_WARNING, STATCODE_AND_SERVER (rv), "Failed to release dashboard lock after destroying the dashboard"); } - + xsp->dashboard_shm = NULL; xsp->dashboard = NULL; } @@ -2808,11 +2670,10 @@ else xsp->dashboard_mutex = NULL; } - + xsp->status = FORK_NONE; -#endif } - + apr_sleep (apr_time_from_sec (1)); return APR_SUCCESS; } @@ -2831,7 +2692,7 @@ module_cfg *config; xsp_data *xsp; int i; - + server = (server_rec *) data; config = ap_get_module_config (server->module_config, &mono_module); @@ -2841,11 +2702,9 @@ /* If alias isn't null, skip XSPs that don't have that alias. */ if (alias != NULL && strcmp(xsp->alias, alias)) continue; - -#ifndef APACHE13 + if (xsp->dashboard) xsp->dashboard->accepting_requests = accepting_requests; -#endif } } @@ -2873,22 +2732,20 @@ xsp_data *xsp; int i; char *buffer; -#ifndef APACHE13 apr_status_t rv; -#endif - + if (strcmp (r->handler, "mono-ctrl")) return DECLINED; - DEBUG_PRINT (1, "control panel handler: %s", r->handler); + DEBUG_PRINT (2, "control panel handler: %s", r->handler); config = ap_get_module_config (r->server->module_config, &mono_module); - + set_response_header (r, "Content-Type", "text/html"); request_send_response_string (r, "\n"); request_send_response_string (r, "

mod_mono Control Panel

\n"); - + uri = &r->parsed_uri; if (!uri->query || !strcmp (uri->query, "")) { /* No query string -> Emit links for configuration commands. */ @@ -2910,17 +2767,16 @@ buffer = apr_psprintf (r->pool, "
  • Restart Server
  • \n", xsp->alias); request_send_response_string(r, buffer); -#ifndef APACHE13 ensure_dashboard_initialized (config, xsp, pconf); if (xsp->dashboard_mutex && xsp->dashboard - && apr_global_mutex_lock (xsp->dashboard_mutex) == APR_SUCCESS) { + && apr_global_mutex_lock (xsp->dashboard_mutex) == APR_SUCCESS) { if (xsp->dashboard->accepting_requests) buffer = apr_psprintf (r->pool, "
  • Stop Accepting Requests
  • \n", xsp->alias); else buffer = apr_psprintf (r->pool, "
  • Resume Accepting Requests
  • \n", xsp->alias); request_send_response_string(r, buffer); - + if (xsp->restart_mode == AUTORESTART_MODE_REQUESTS) { buffer = apr_psprintf (r->pool, "
  • %d requests served; limit: %d
  • \n", xsp->dashboard->handled_requests, xsp->restart_requests); @@ -2935,8 +2791,8 @@ xsp->dashboard->active_requests, xsp->max_active_requests ? xsp->max_active_requests : "unlimited", xsp->dashboard->requests_counter); - request_send_response_string(r, buffer); - + request_send_response_string (r, buffer); + send_uri_list (xsp->dashboard->active_uri_list, ACTIVE_URI_LIST_ITEM_COUNT, r); buffer = apr_psprintf (r->pool, "
  • %d requests currently waiting to be processed; limit: %s\n", xsp->dashboard->waiting_requests, @@ -2950,11 +2806,8 @@ "Failed to release %s lock after mono-ctrl output, the process may deadlock!", xsp->dashboard_lock_file); } -#endif - request_send_response_string(r, "
  • \n"); } - request_send_response_string (r, "\n"); } else { if (uri->query && !strncmp (uri->query, "restart=", 8)) { @@ -2963,7 +2816,7 @@ if (!strcmp (alias, "ALL")) alias = NULL; set_accepting_requests (r->server, alias, 0); - terminate_xsp2 (r->server, alias, 1, 0); + terminate_xsp2 (r->server, alias, 1, 0); start_xsp (config, 1, alias); set_accepting_requests (r->server, alias, 1); request_send_response_string (r, "
    mod-mono-server processes restarted.

    \n"); @@ -2985,38 +2838,15 @@ /* Invalid command. */ request_send_response_string (r, "
    Invalid query string command.
    \n"); } - request_send_response_string (r, "\n"); } - + request_send_response_string(r, "\n"); DEBUG_PRINT (2, "Done."); return OK; } -#ifdef APACHE13 -static void -mono_init_handler (server_rec *s, pool *p) -{ -#if defined (APR_HAS_USER) && !defined (WIN32) - module_cfg *config; -#endif - - if (ap_standalone && ap_restart_time == 0) - return; - - DEBUG_PRINT (0, "Initializing handler"); - ap_add_version_component ("mod_mono/" VERSION); - pconf = p; - ap_register_cleanup (p, s, (void (*)(void *)) terminate_xsp, ap_null_cleanup); - -#if defined (APR_HAS_USER) && !defined (WIN32) - config = ap_get_module_config (s->module_config, &mono_module); - start_xsp (config, 0, NULL); -#endif -} -#else static int mono_init_handler (apr_pool_t *p, apr_pool_t *plog, @@ -3028,7 +2858,7 @@ #if defined (APR_HAS_USER) && !defined (WIN32) module_cfg *config; #endif - + /* * mono_init_handler() will be called twice, and if it's a DSO then all * static data from the first call will be lost. Only set up our static @@ -3050,37 +2880,22 @@ config = ap_get_module_config (s->module_config, &mono_module); start_xsp (config, 0, NULL); #endif - + return OK; } -#endif #if !defined (APR_HAS_USER) || defined (WIN32) void -mono_child_init ( -#ifdef APACHE2 - apr_pool_t *p, server_rec *s -#else - server_rec *s, apr_pool_t *p -#endif -) +mono_child_init (apr_pool_t *p, server_rec *s) { module_cfg *config; - + DEBUG_PRINT (0, "Mono Child Init"); config = ap_get_module_config (s->module_config, &mono_module); start_xsp (config, 0, NULL); } #endif -#ifdef APACHE13 -static const handler_rec mono_handlers [] = { - { "mono", mono_handler }, - { "application/x-asp-net", mono_handler }, - { "mono-ctrl", mono_control_panel_handler }, - { NULL, NULL } -}; -#else static void mono_register_hooks (apr_pool_t * p) { @@ -3091,18 +2906,16 @@ ap_hook_child_init (mono_child_init, NULL, NULL, APR_HOOK_MIDDLE); #endif } -#endif static const command_rec mono_cmds [] = { MAKE_CMD12 (MonoUnixUmask, umask_value, - "Value of the file mode creation mask (see umask(2))" + "Value of the file mode creation mask (see umask(2)) " "Default: 0077" ), MAKE_CMD12 (MonoUnixSocket, filename, "Named pipe file name. Mutually exclusive with MonoListenPort. " "Default: /tmp/mod_mono_server" ), - MAKE_CMD12 (MonoListenPort, listen_port, "TCP port on which mod-mono-server should listen/is listening on. Mutually " "exclusive with MonoUnixSocket. " @@ -3145,6 +2958,12 @@ "Default: " MODMONO_SERVER_PATH ), + MAKE_CMD12 (MonoTargetFramework, target_framework, + "If MonoRunXSP is True, this option selects the .NET framework version to use. This " + "affects the backend that is started to service the requests. The MonoServerPath option " + "takes precedence over this setting. Default: " MONO_DEFAULT_FRAMEWORK + ), + MAKE_CMD12 (MonoApplications, applications, "Comma separated list with virtual directories and real directories. " "One ASP.NET application will be created for each pair. Default: \"\" " @@ -3220,7 +3039,7 @@ ), MAKE_CMD12 (MonoIOMAP, iomap, - "A string with format the same as the MONO_IOMAP variable (see mod_mono (1))." + "A string with format the same as the MONO_IOMAP variable (see mod_mono (8))." " Default value: none"), MAKE_CMD_ITERATE2 (AddMonoApplications, applications, @@ -3250,12 +3069,12 @@ MAKE_CMD12 (MonoMaxActiveRequests, max_active_requests, "The maximum number of concurrent requests mod_mono will pass off to the ASP.NET backend. " - "Set to zero to turn off the limit. Default value: 20"), + "Set to zero to turn off the limit. Default value: 150"), MAKE_CMD12 (MonoMaxWaitingRequests, max_waiting_requests, "The maximum number of concurrent requests mod_mono will hold while the ASP.NET backend is busy " "with the maximum number of requests specified by MonoMaxActiveRequests. " - "Requests that can't be processed or held are dropped with Service Unavailable." - "Default value: 20"), + "Requests that can't be processed or held are dropped with Service Unavailable." + "Default value: 150"), MAKE_CMD12 (MonoCheckHiddenFiles, hidden, "Do not protect hidden files/directories from being accessed by clients. Hidden files/directories are those with " "Hidden attribute on Windows and whose name starts with a dot on Unix. Any file/directory below a hidden directory " @@ -3267,32 +3086,6 @@ { NULL } }; -#ifdef APACHE13 -module MODULE_VAR_EXPORT mono_module = -{ - STANDARD_MODULE_STUFF, - mono_init_handler, /* initializer */ - create_dir_config, /* dir config creater */ - NULL, /* dir merger --- default is to override */ - create_mono_server_config, /* server config */ - merge_config, /* merge server configs */ - mono_cmds, /* command table */ - mono_handlers, /* handlers */ - NULL, /* filename translation */ - NULL, /* check_user_id */ - NULL, /* check auth */ - NULL, /* check access */ - NULL, /* type_checker */ - NULL, /* fixups */ - NULL, /* logger */ - NULL, /* header parser */ -#if !defined (APR_HAS_USER) || defined (WIN32) - mono_child_init, /* child_init */ -#endif - NULL, /* child_exit */ - NULL /* post read-request */ -}; -#else module AP_MODULE_DECLARE_DATA mono_module = { STANDARD20_MODULE_STUFF, create_dir_config, /* dir config creater */ @@ -3302,5 +3095,3 @@ mono_cmds, /* command apr_table_t */ mono_register_hooks /* register hooks */ }; -#endif - diff -Nru mod-mono-2.4.3/src/mod_mono.h mod-mono-2.10/src/mod_mono.h --- mod-mono-2.4.3/src/mod_mono.h 2009-10-26 20:20:34.000000000 +0000 +++ mod-mono-2.10/src/mod_mono.h 2011-01-13 22:32:35.000000000 +0000 @@ -1,12 +1,13 @@ /* * mod_mono.h - * + * * Authors: - * Daniel Lopez Ridruejo - * Gonzalo Paniagua Javier + * Daniel Lopez Ridruejo + * Gonzalo Paniagua Javier + * Marek Habersack * * Copyright (c) 2002 Daniel Lopez Ridruejo - * (c) 2002-2005 Novell, Inc. + * (c) 2002-2009 Novell, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,97 +53,14 @@ #include "http_log.h" #include "http_config.h" -#if defined (APACHE13) -#include "http_conf_globals.h" -#else #if !defined (WIN32) && !defined (OS2) && !defined (BEOS) && !defined (NETWARE) #define HAVE_UNIXD #include "unixd.h" #endif -#endif /* KEEP IN SYNC WITH ModMonoRequest!! */ #define PROTOCOL_VERSION 9 -#ifdef APACHE13 -/* Functions needed for making Apache 1.3 module as similar -as possible to Apache 2 module, reducing ifdefs in the code itself*/ -#ifdef HAVE_HTTP_PROTOCOL_H -#include "http_protocol.h" -#endif -#define STATCODE_AND_SERVER(__code__) NULL -#ifndef TRUE -#define TRUE 1 -#define FALSE 0 -#endif - -#include "multithread.h" -#include "util_script.h" - -#define apr_psprintf ap_psprintf -#define apr_uri_t uri_components -#define apr_pool_t ap_pool -#define apr_pool_create(a,b) *(a) = ap_make_sub_pool (b) -#define apr_pool_destroy(a) ap_destroy_pool (a) -#define apr_pcalloc_t ap_pcalloc_t -#define apr_pcalloc ap_pcalloc - -#define apr_table_t table -#define apr_table_setn ap_table_setn -#define apr_table_add ap_table_add -#define apr_table_addn ap_table_addn -#define apr_table_get ap_table_get -#define apr_table_elts ap_table_elts -#define apr_table_entry_t table_entry - -#define apr_array_header array_header -#define apr_array_header_t array_header -#define apr_pstrdup ap_pstrdup -#define apr_pstrcat ap_pstrcat -#define apr_psprintf ap_psprintf -#define apr_status_t int -#define apr_os_sock_t int -#define APR_SUCCESS 0 -#define apr_os_sock_get(fdptr, sock) (*(fdptr) = (sock)->fd) -#define apr_socket_timeout_set(sock, t) ((sock)->timeout = t) -#define apr_socket_close(sock) (ap_pclosesocket ((sock)->pool, (sock)->fd)) -#define APR_INET PF_INET -#define apr_time_from_sec(x) (x * 1000000) -#define APR_OFFSET(p_type,field) \ - ((long) (((char *) (&(((p_type)NULL)->field))) - ((char *) NULL))) - -#define APR_OFFSETOF(s_type,field) APR_OFFSET(s_type*,field) - - -typedef time_t apr_interval_time_t; -typedef size_t apr_size_t; -typedef struct apr_socket apr_socket_t; -struct apr_socket { - apr_pool_t *pool; - int fd; - time_t timeout; -}; - -typedef struct mysockaddr apr_sockaddr_t; -struct mysockaddr { - apr_pool_t *pool; - size_t addrlen; - struct sockaddr *addr; -}; - -static apr_status_t -apr_socket_send (apr_socket_t *sock, const char *buf, apr_size_t *len); - -static apr_status_t -apr_socket_recv (apr_socket_t *sock, char *buf, apr_size_t *len); - -extern int ap_standalone; -extern time_t ap_restart_time; - -#include -/* End Apache 1.3 only */ -#else -/* Apache 2 only */ #define STATCODE_AND_SERVER(__code__) __code__, NULL #include #include @@ -158,9 +76,6 @@ #define APR_SOCKET_CREATE(sock, family, type, protocol, pool) apr_socket_create (sock, family, type, protocol, pool) #endif -/* End Apache 2 only */ -#endif - #define STATUS_AND_SERVER STATCODE_AND_SERVER (0) /* Some defaults */ @@ -169,19 +84,26 @@ #endif #ifdef WIN32 -#define DIRECTORY_SEPARATOR ";" +#define DIRECTORY_SEPARATOR "\\" #else -#define DIRECTORY_SEPARATOR ":" +#define DIRECTORY_SEPARATOR "/" #endif -#define MODMONO_SERVER_PATH MONO_PREFIX "/bin/mod-mono-server" -#define WAPIDIR "/tmp" +#define MODMONO_SERVER_BASEPATH MONO_PREFIX "/bin/mod-mono-server" +#define MONO_DEFAULT_FRAMEWORK "2.0" +#define MODMONO_SERVER_PATH MODMONO_SERVER_BASEPATH "2" +#define WAPIDIR "/tmp" #define DOCUMENT_ROOT NULL #define APPCONFIG_FILE NULL #define APPCONFIG_DIR NULL #define SOCKET_FILE "/tmp/mod_mono_server" #define LISTEN_ADDRESS "127.0.0.1" -#define DASHBOARD_FILE "/tmp/mod_mono_dashboard" +#define DASHBOARD_FILE "/tmp/mod_mono_dashboard" +#define GLOBAL_SERVER_NAME "XXGLOBAL" +#define MAX_ACTIVE_REQUESTS 0 +#define MAX_WAITING_REQUESTS 150 +#define START_ATTEMPTS 3 +#define START_WAIT_TIME 2 #ifndef DEFAULT_RESTART_REQUESTS #define DEFAULT_RESTART_REQUESTS 10000 @@ -225,7 +147,13 @@ LAST_COMMAND }; -static char *cmdNames [] = { +#ifdef __GNUC__ +#define UNUSED __attribute__ ((unused)) +#else +#define UNUSED +#endif + +static char UNUSED *cmdNames [] = { "SEND_FROM_MEMORY", "GET_SERVER_VARIABLES", "SET_RESPONSE_HEADERS", @@ -243,30 +171,9 @@ }; /* Module definition */ -#ifdef APACHE13 -#define DEFINE_MODULE(x) module MODULE_VAR_EXPORT x -#else #define DEFINE_MODULE(x) module AP_MODULE_DECLARE_DATA x -#endif /* Directives */ -#ifdef APACHE13 -#define MAKE_CMD_ACCESS(name, function_name, description) \ - { #name, function_name, NULL, ACCESS_CONF, TAKE1, description } - -#define MAKE_CMD1(name, function_name, description) \ - { #name, function_name, NULL, RSRC_CONF, TAKE1, description } - -#define MAKE_CMD12(name, field_name, description) \ - { #name, store_config_xsp, (void *) APR_OFFSETOF (xsp_data, field_name), \ - RSRC_CONF, TAKE12, description } - -#define MAKE_CMD_ITERATE2(name, field_name, description) \ - { #name, store_config_xsp, (void *) APR_OFFSETOF (xsp_data, field_name), \ - RSRC_CONF, ITERATE2, description } - -#else /* APACHE2 */ - #define MAKE_CMD_ACCESS(name, function_name, description) \ AP_INIT_TAKE1 (#name, function_name, NULL, ACCESS_CONF, description) @@ -280,7 +187,6 @@ #define MAKE_CMD_ITERATE2(name, field_name, description) \ AP_INIT_ITERATE2 (#name, store_config_xsp, \ (void *) APR_OFFSETOF (xsp_data, field_name), RSRC_CONF, description) -#endif #ifndef AF_UNSPEC #define AF_UNSPEC 0 @@ -296,7 +202,7 @@ } #else #define DEBUG_PRINT dummy_print -static void +static void UNUSED dummy_print (int a, ...) { } diff -Nru mod-mono-2.4.3/src/mono-io-portability.h mod-mono-2.10/src/mono-io-portability.h --- mod-mono-2.4.3/src/mono-io-portability.h 2009-10-26 20:20:34.000000000 +0000 +++ mod-mono-2.10/src/mono-io-portability.h 2011-01-13 22:32:35.000000000 +0000 @@ -1,8 +1,8 @@ #ifndef __MONO_IO_PORTABILITY_H #define __MONO_IO_PORTABILITY_H -#include #include "mod_mono.h" +#include "glib_compat.h" enum { PORTABILITY_NONE = 0x00,