From 10ac37096f04f01d06838fe5b2ce5a23d085f1df Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Sat, 2 Sep 2006 15:36:42 +0000 Subject: [PATCH] Follow the OpenBSD port's lead and protect the resolve functions on OpenBSD as well. --- jbsockets.c | 14 ++++++++------ jcc.c | 19 +++++++++++++++---- jcc.h | 15 +++++++++++---- 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/jbsockets.c b/jbsockets.c index ed5d5974..0b7d8df1 100644 --- a/jbsockets.c +++ b/jbsockets.c @@ -1,4 +1,4 @@ -const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.38 2006/07/18 14:48:46 david__schmidt Exp $"; +const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.39 2006/08/03 02:46:41 david__schmidt Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jbsockets.c,v $ @@ -35,6 +35,9 @@ const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.38 2006/07/18 14:48:46 david_ * * Revisions : * $Log: jbsockets.c,v $ + * Revision 1.39 2006/08/03 02:46:41 david__schmidt + * Incorporate Fabian Keil's patch work: http://www.fabiankeil.de/sourcecode/privoxy/ + * * Revision 1.38 2006/07/18 14:48:46 david__schmidt * Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch) * with what was really the latest development (the v_3_0_branch branch) @@ -260,11 +263,10 @@ const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.38 2006/07/18 14:48:46 david_ #include "project.h" -#ifdef OSX_DARWIN -#include +#if defined(OSX_DARWIN) || defined(__OpenBSD__) #include "jcc.h" /* jcc.h is for mutex semaphores only */ -#endif /* def OSX_DARWIN */ +#endif /* defined(OSX_DARWIN) || defined(__OpenBSD__) */ #include "jbsockets.h" #include "filters.h" @@ -746,7 +748,7 @@ int accept_connection(struct client_state * csp, jb_socket fd) { host = NULL; } -#elif defined(OSX_DARWIN) +#elif defined(OSX_DARWIN) || defined(__OpenBSD__) pthread_mutex_lock(&gethostbyaddr_mutex); host = gethostbyaddr((const char *)&server.sin_addr, sizeof(server.sin_addr), AF_INET); @@ -831,7 +833,7 @@ unsigned long resolve_hostname_to_ip(const char *host) { hostp = NULL; } -#elif OSX_DARWIN +#elif defined(OSX_DARWIN) || defined(__OpenBSD__) pthread_mutex_lock(&gethostbyname_mutex); while ( NULL == (hostp = gethostbyname(host)) && (h_errno == TRY_AGAIN) && (dns_retries++ < 10) ) diff --git a/jcc.c b/jcc.c index da261fe8..7f7206e7 100644 --- a/jcc.c +++ b/jcc.c @@ -1,4 +1,4 @@ -const char jcc_rcs[] = "$Id: jcc.c,v 1.97 2006/08/18 15:23:17 david__schmidt Exp $"; +const char jcc_rcs[] = "$Id: jcc.c,v 1.98 2006/08/24 11:01:34 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jcc.c,v $ @@ -33,6 +33,10 @@ const char jcc_rcs[] = "$Id: jcc.c,v 1.97 2006/08/18 15:23:17 david__schmidt Exp * * Revisions : * $Log: jcc.c,v $ + * Revision 1.98 2006/08/24 11:01:34 fabiankeil + * --user fix. Only use the user as group if no group is specified. + * Solves BR 1492612. Thanks to Spinor S. and David Laight. + * * Revision 1.97 2006/08/18 15:23:17 david__schmidt * Windows service (re-)integration * @@ -761,15 +765,20 @@ static int32 server_thread(void *data); #define sleep(N) DosSleep(((N) * 100)) #endif +#if defined(OSX_DARWIN) || defined(__OpenBSD__) #ifdef OSX_DARWIN /* * Hit OSX over the head with a hammer. Protect all *_r functions. */ pthread_mutex_t gmtime_mutex; pthread_mutex_t localtime_mutex; +#endif /* def OSX_DARWIN */ +/* + * Protect only the resolve functions for OpenBSD. + */ pthread_mutex_t gethostbyaddr_mutex; pthread_mutex_t gethostbyname_mutex; -#endif /* def OSX_DARWIN */ +#endif /* defined(OSX_DARWIN) || defined(__OpenBSD__) */ #ifdef FEATURE_PTHREAD pthread_mutex_t log_mutex; @@ -2022,15 +2031,17 @@ int main(int argc, const char *argv[]) InitWin32(); #endif -#ifdef OSX_DARWIN +#if defined(OSX_DARWIN) || defined(__OpenBSD__) /* * Prepare global mutex semaphores */ +#ifdef OSX_DARWIN pthread_mutex_init(&gmtime_mutex,0); pthread_mutex_init(&localtime_mutex,0); +#endif /* def OSX_DARWIN */ pthread_mutex_init(&gethostbyaddr_mutex,0); pthread_mutex_init(&gethostbyname_mutex,0); -#endif /* def OSX_DARWIN */ +#endif /* defined(OSX_DARWIN) || defined(__OpenBSD__) */ #ifdef FEATURE_PTHREAD pthread_mutex_init(&log_mutex,0); diff --git a/jcc.h b/jcc.h index b821a7c9..fba29af1 100644 --- a/jcc.h +++ b/jcc.h @@ -1,6 +1,6 @@ #ifndef JCC_H_INCLUDED #define JCC_H_INCLUDED -#define JCC_H_VERSION "$Id: jcc.h,v 1.14 2006/07/18 14:48:46 david__schmidt Exp $" +#define JCC_H_VERSION "$Id: jcc.h,v 1.15 2006/09/02 10:24:30 fabiankeil Exp $" /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jcc.h,v $ @@ -35,6 +35,14 @@ * * Revisions : * $Log: jcc.h,v $ + * Revision 1.15 2006/09/02 10:24:30 fabiankeil + * Include pthread.h for OpenBSD to make Privoxy build again. + * + * Tested shortly on OpenBSD 3.9 without problems, but the OpenBSD + * port has additional patches to use the mutexes OSX_DARWIN needs, + * and it should be investigated if they are still required for + * reliable operation. + * * Revision 1.14 2006/07/18 14:48:46 david__schmidt * Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch) * with what was really the latest development (the v_3_0_branch branch) @@ -137,14 +145,13 @@ extern int g_terminate; #if defined(OSX_DARWIN) || defined(__OpenBSD__) #include -#endif /* defined(OSX_DARWIN) || defined(__OpenBSD__) */ - #ifdef OSX_DARWIN extern pthread_mutex_t gmtime_mutex; extern pthread_mutex_t localtime_mutex; +#endif /* def OSX_DARWIN */ extern pthread_mutex_t gethostbyaddr_mutex; extern pthread_mutex_t gethostbyname_mutex; -#endif /* def OSX_DARWIN */ +#endif /* defined(OSX_DARWIN) || defined(__OpenBSD__) */ #ifdef FEATURE_PTHREAD extern pthread_mutex_t log_mutex; -- 2.39.2