Attached is a patch that fixes a bug for the accept mutex on the
Cygwin platform. The bug was reported by Sami Tikka
<[EMAIL PROTECTED]> while trying to use multiple Listen directives.
We change the accept mutex from fcntl to pthread, which works even
with several Listen directives set in httpd.conf.
Here are the changes:
* src/include/ap_config.h: adding HAVE_PTHREAD_SERIALIZED_ACCEPT to
Cygwin block and defaulting to it.
* src/main/http_main.c: exluding pthread_mutexattr_setpshared() call
for Cygwin platform. This calls seems yet not fully functional on this
platform. Forwarding problem to Cygwin core developers.
Stipe
[EMAIL PROTECTED]
-------------------------------------------------------------------
Wapme Systems AG
M�nsterstr. 248
40470 D�sseldorf
Tel: +49-211-74845-0
Fax: +49-211-74845-299
E-Mail: [EMAIL PROTECTED]
Internet: http://www.wapme-systems.de
-------------------------------------------------------------------
wapme.net - wherever you are
diff -ur apache-1.3/src/include/ap_config.h apache-1.3-cygwin/src/include/ap_config.h
--- apache-1.3/src/include/ap_config.h Tue Oct 9 19:29:46 2001
+++ apache-1.3-cygwin/src/include/ap_config.h Tue Jan 1 16:07:48 2002
@@ -1002,7 +1012,11 @@
#define USE_MMAP_FILES
#define HAVE_SYSLOG 1
#define HAVE_FCNTL_SERIALIZED_ACCEPT
+#define HAVE_PTHREAD_SERIALIZED_ACCEPT
#define SINGLE_LISTEN_UNSERIALIZED_ACCEPT
+#if !defined(USE_FNCTL_SERIALIZED_ACCEPT)
+#define USE_PTHREAD_SERIALIZED_ACCEPT
+#endif
#else
diff -ur apache-1.3/src/main/http_main.c apache-1.3-cygwin/src/main/http_main.c
--- apache-1.3/src/main/http_main.c Wed Oct 17 14:45:30 2001
+++ apache-1.3-cygwin/src/main/http_main.c Tue Jan 1 16:05:19 2002
@@ -662,11 +662,17 @@
perror("pthread_mutexattr_init");
exit(APEXIT_INIT);
}
+ /*
+ * Cygwin has problems with this pthread call claiming that these
+ * are "Invalid arguements", Stipe Tolj <[EMAIL PROTECTED]>
+ */
+#if !defined(CYGWIN)
if ((errno = pthread_mutexattr_setpshared(&mattr,
PTHREAD_PROCESS_SHARED))) {
perror("pthread_mutexattr_setpshared");
exit(APEXIT_INIT);
}
+#endif
if ((errno = pthread_mutex_init(accept_mutex, &mattr))) {
perror("pthread_mutex_init");
exit(APEXIT_INIT);