$OpenBSD: patch-libproxy_url_cpp,v 1.7 2020/12/30 09:25:22 ajacoutot Exp $

https://code.google.com/p/libproxy/issues/detail?id=196&thanks=196&ts=1370457244

Index: libproxy/url.cpp
--- libproxy/url.cpp.orig
+++ libproxy/url.cpp
@@ -46,6 +46,10 @@
 using namespace libproxy;
 using namespace std;
 
+#ifndef WIN32
+static pthread_mutex_t servmtx = PTHREAD_MUTEX_INITIALIZER;
+#endif
+
 // This mime type should be reported by the web server
 #define PAC_MIME_TYPE "application/x-ns-proxy-autoconfig"
 // Fall back to checking for this mime type, which servers often report wrong
@@ -59,14 +63,22 @@ using namespace std;
 static inline int get_default_port(string scheme) {
 	struct servent *serv;
 	size_t plus = scheme.find('+');
+	int ret = 0;
 
 	if (plus != string::npos)
 		scheme = scheme.substr(plus + 1);
 
-	if ((serv = getservbyname(scheme.c_str(), NULL)))
-		return ntohs(serv->s_port);
+#ifndef WIN32
+	pthread_mutex_lock(&servmtx);
+#endif
+	serv = getservbyname(scheme.c_str(), NULL);
+	if (serv)
+		ret = ntohs(serv->s_port);
+#ifndef WIN32
+	pthread_mutex_unlock(&servmtx);
+#endif
 
-	return 0;
+	return ret;
 }
 
 template <class T>
