Hello all

httpd-2.0.36, QNX 6.1 RTOS

I have made a modification to apache to get it to run
on qnx.  It kept hanging.  I traced it down and made
some changes to get it to run.  I wanted to proof
these changes with the apache community and get some
feedback as to the longterm consequences/ side effects
of these changes.  I am attaching a diff of the
changes that I made.

I also noticed that SSL doesn't seem to work unless
the -X flag is passed to httpd, any ideas.

Thanks
/Davide 

--- httpd-2.0.36/srclib/apr/locks/unix/proc_mutex.c
Mon Apr  8 23:56:56 2002
+++ ../httpd-2.0.36/srclib/apr/locks/unix/proc_mutex.c
Wed May  8 16:04:51 2002
@@ -318,7 +318,9 @@
         if (munmap((caddr_t)mutex->pthread_interproc,
sizeof(pthread_mutex_t))){
             return errno;
         }
-    }
+       if(shm_unlink("/datapoints")) // DB
+            return errno;
+       }
     return APR_SUCCESS;
 }    
 
@@ -329,11 +331,15 @@
     int fd;
     pthread_mutexattr_t mattr;
 
-    fd = open("/dev/zero", O_RDWR);
-    if (fd < 0) {
-        return errno;
-    }
+    fd=shm_open("/datapoints",O_RDWR|O_CREAT,0777);
//DB
+       if (fd < 0) 
+               return errno;   
 
+       if(ftruncate(fd,sizeof(pthread_mutex_t))==-1)  //DB
+               return errno;   
+
+
+
     new_mutex->pthread_interproc = (pthread_mutex_t
*)mmap(
                                        (caddr_t) 0, 
                                       
sizeof(pthread_mutex_t), 
@@ -363,10 +369,11 @@
                                               
PTHREAD_MUTEX_ROBUST_NP))) {
 #ifdef PTHREAD_SETS_ERRNO
         rv = errno;
-#endif
+#endif // DB
         proc_mutex_proc_pthread_cleanup(new_mutex);
         return rv;
     }
+#endif
     if ((rv = pthread_mutexattr_setprotocol(&mattr,
PTHREAD_PRIO_INHERIT))) {
 #ifdef PTHREAD_SETS_ERRNO
         rv = errno;
@@ -374,9 +381,15 @@
         proc_mutex_proc_pthread_cleanup(new_mutex);
         return rv;
     }
+    if ((rv =
pthread_mutex_destroy(new_mutex->pthread_interproc)))
{ // DB
+#ifdef PTHREAD_SETS_ERRNO
+        rv = errno;
 #endif
+        proc_mutex_proc_pthread_cleanup(new_mutex);
+        return rv;
+    }
 
-    if ((rv =
pthread_mutex_init(new_mutex->pthread_interproc,
&mattr))) {
+       if ((rv =
pthread_mutex_init(new_mutex->pthread_interproc,
&mattr))) {
 #ifdef PTHREAD_SETS_ERRNO
         rv = errno;
 #endif

__________________________________________________
Do You Yahoo!?
LAUNCH - Your Yahoo! Music Experience
http://launch.yahoo.com

Reply via email to