Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Nov 2002 17:44:53 +0200
From:      Peter Pentchev <roam@ringlet.net>
To:        Linus Kendall <linus@angliaab.se>
Cc:        freebsd-hackers@FreeBSD.ORG
Subject:   Re: PThreads problem
Message-ID:  <20021127154453.GE375@straylight.oblivion.bg>
In-Reply-To: <20021022052405.GD377@straylight.oblivion.bg>
References:  <1035200159.24315.13.camel@bilbo> <20021021124520.GS389@straylight.oblivion.bg> <1035206648.24315.20.camel@bilbo> <20021021134834.GA41198@straylight.oblivion.bg> <20021021135045.GB41198@straylight.oblivion.bg> <1035218026.24330.33.camel@bilbo> <20021021194453.GB377@straylight.oblivion.bg> <1035232308.24315.37.camel@bilbo> <20021022052405.GD377@straylight.oblivion.bg>

next in thread | previous in thread | raw e-mail | index | archive | help

--l76fUT7nc3MelDdI
Content-Type: multipart/mixed; boundary="Q68bSM7Ycu6FN28Q"
Content-Disposition: inline


--Q68bSM7Ycu6FN28Q
Content-Type: text/plain; charset=windows-1251
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, Oct 22, 2002 at 08:24:05AM +0300, Peter Pentchev wrote:
> On Mon, Oct 21, 2002 at 10:31:48PM +0200, Linus Kendall wrote:
> [snip]
> >=20
> > That was very thorough, thanks! Now I at least have a notion of what=20
> > is going on. Since this is slightly urgent I guess a hack into the
> > libcurl source code to try to remove the sigalarms would do the trick
> > (in my case). In the general case it seems like there's a rather big
> > problem here as libcurl's behavior cannot really work together with the
> > FreeBSD implementation of threads.
>=20
> I wonder, though..  If libcurl depends on Linux-specific threads library
> behavior, what would the effects be if it were to be compiled against
> the devel/linuxthreads port?  Maybe I will try building curl with
> linuxthreads later today..

Okay, here's another option: could you try the attached patch?

It updates the ftp/curl port to 7.10.2, and additionally, forcibly
enables the CURLOPT_NOSIGNAL option on every curl handle created, thus
disabling any signal handling for DNS query timeouts.  It would be
interesting to see if this helps your multithreaded application..

G'luck,
Peter

--=20
Peter Pentchev	roam@ringlet.net	roam@FreeBSD.org
PGP key:	http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint	FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
This sentence is false.

--Q68bSM7Ycu6FN28Q
Content-Type: text/plain; charset=windows-1251
Content-Disposition: attachment; filename="ftp-curl-nosignal.patch"
Content-Transfer-Encoding: quoted-printable

Index: ports/ftp/curl/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /home/ncvs/ports/ftp/curl/Makefile,v
retrieving revision 1.45
diff -u -r1.45 Makefile
--- ports/ftp/curl/Makefile	2 Jul 2002 08:36:46 -0000	1.45
+++ ports/ftp/curl/Makefile	27 Nov 2002 14:54:36 -0000
@@ -6,7 +6,7 @@
 #
=20
 PORTNAME=3D	curl
-PORTVERSION=3D	7.9.8
+PORTVERSION=3D	7.10.2
 CATEGORIES=3D	ftp ipv6 www
 MASTER_SITES=3D	http://curl.haxx.se/download/ \
 		http://download.sourceforge.net/curl/ \
@@ -21,6 +21,7 @@
 		curl_easy_init.3 curl_easy_perform.3 curl_easy_setopt.3 \
 		curl_escape.3 curl_unescape.3 \
 		curl_formadd.3 curl_formparse.3 curl_formfree.3 \
+		curl_free.3 \
 		curl_getdate.3 curl_getenv.3 \
 		curl_global_init.3 curl_global_cleanup.3 \
 		curl_mprintf.3 \
@@ -29,7 +30,7 @@
 		curl_multi_perform.3 curl_multi_remove_handle.3 \
 		curl_slist_append.3 curl_slist_free_all.3 \
 		curl_strequal.3 curl_strnequal.3 \
-		curl_version.3 \
+		curl_version.3 curl_version_info.3 \
 		libcurl.3 libcurl-multi.3 libcurl-errors.3
=20
 INSTALLS_SHLIB=3D	yes
@@ -56,5 +57,11 @@
 # I don't know why they would do that, yet.
 test:	build
 	@cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} test
+
+.if !defined(NOPORTDOCS)
+post-install:
+	${MKDIR} ${DOCSDIR}
+	${CP} -r ${WRKSRC}/docs/* ${DOCSDIR}/=20
+.endif
=20
 .include <bsd.port.mk>
Index: ports/ftp/curl/distinfo
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /home/ncvs/ports/ftp/curl/distinfo,v
retrieving revision 1.26
diff -u -r1.26 distinfo
--- ports/ftp/curl/distinfo	2 Jul 2002 08:36:46 -0000	1.26
+++ ports/ftp/curl/distinfo	27 Nov 2002 14:40:45 -0000
@@ -1 +1 @@
-MD5 (curl-7.9.8.tar.bz2) =3D 9f29e398d36050816fc4759d4837eb65
+MD5 (curl-7.10.2.tar.bz2) =3D 9f6a911b5ee5432128f67d4d8df09279
Index: ports/ftp/curl/pkg-plist
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /home/ncvs/ports/ftp/curl/pkg-plist,v
retrieving revision 1.5
diff -u -r1.5 pkg-plist
--- ports/ftp/curl/pkg-plist	16 Apr 2002 11:30:21 -0000	1.5
+++ ports/ftp/curl/pkg-plist	27 Nov 2002 14:58:20 -0000
@@ -11,3 +11,162 @@
 lib/libcurl.la
 lib/libcurl.so
 lib/libcurl.so.%%SHLIB_VER%%
+share/curl/curl-ca-bundle.crt
+@dirrm share/curl
+%%PORTDOCS%%share/doc/curl/BINDINGS
+%%PORTDOCS%%share/doc/curl/BUGS
+%%PORTDOCS%%share/doc/curl/CONTRIBUTE
+%%PORTDOCS%%share/doc/curl/FAQ
+%%PORTDOCS%%share/doc/curl/FEATURES
+%%PORTDOCS%%share/doc/curl/HISTORY
+%%PORTDOCS%%share/doc/curl/INSTALL
+%%PORTDOCS%%share/doc/curl/INTERNALS
+%%PORTDOCS%%share/doc/curl/KNOWN_BUGS
+%%PORTDOCS%%share/doc/curl/MANUAL
+%%PORTDOCS%%share/doc/curl/Makefile
+%%PORTDOCS%%share/doc/curl/Makefile.am
+%%PORTDOCS%%share/doc/curl/Makefile.in
+%%PORTDOCS%%share/doc/curl/README.win32
+%%PORTDOCS%%share/doc/curl/RESOURCES
+%%PORTDOCS%%share/doc/curl/THANKS
+%%PORTDOCS%%share/doc/curl/TODO
+%%PORTDOCS%%share/doc/curl/TheArtOfHttpScripting
+%%PORTDOCS%%share/doc/curl/VERSIONS
+%%PORTDOCS%%share/doc/curl/curl-config.1
+%%PORTDOCS%%share/doc/curl/curl-config.html
+%%PORTDOCS%%share/doc/curl/curl-config.pdf
+%%PORTDOCS%%share/doc/curl/curl.1
+%%PORTDOCS%%share/doc/curl/curl.html
+%%PORTDOCS%%share/doc/curl/curl.pdf
+%%PORTDOCS%%share/doc/curl/examples/Makefile
+%%PORTDOCS%%share/doc/curl/examples/Makefile.am
+%%PORTDOCS%%share/doc/curl/examples/Makefile.example
+%%PORTDOCS%%share/doc/curl/examples/Makefile.in
+%%PORTDOCS%%share/doc/curl/examples/README
+%%PORTDOCS%%share/doc/curl/examples/curlgtk.c
+%%PORTDOCS%%share/doc/curl/examples/fopen.c
+%%PORTDOCS%%share/doc/curl/examples/ftpget.c
+%%PORTDOCS%%share/doc/curl/examples/ftpgetresp.c
+%%PORTDOCS%%share/doc/curl/examples/ftpupload.c
+%%PORTDOCS%%share/doc/curl/examples/getinmemory.c
+%%PORTDOCS%%share/doc/curl/examples/http-post.c
+%%PORTDOCS%%share/doc/curl/examples/httpput.c
+%%PORTDOCS%%share/doc/curl/examples/multi-app.c
+%%PORTDOCS%%share/doc/curl/examples/multi-double.c
+%%PORTDOCS%%share/doc/curl/examples/multi-post.c
+%%PORTDOCS%%share/doc/curl/examples/multi-single.c
+%%PORTDOCS%%share/doc/curl/examples/multithread.c
+%%PORTDOCS%%share/doc/curl/examples/persistant.c
+%%PORTDOCS%%share/doc/curl/examples/post-callback.c
+%%PORTDOCS%%share/doc/curl/examples/postit2.c
+%%PORTDOCS%%share/doc/curl/examples/sepheaders.c
+%%PORTDOCS%%share/doc/curl/examples/simple.c
+%%PORTDOCS%%share/doc/curl/examples/simplepost.c
+%%PORTDOCS%%share/doc/curl/examples/simplessl.c
+%%PORTDOCS%%share/doc/curl/libcurl-the-guide
+%%PORTDOCS%%share/doc/curl/libcurl/Makefile
+%%PORTDOCS%%share/doc/curl/libcurl/Makefile.am
+%%PORTDOCS%%share/doc/curl/libcurl/Makefile.in
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_cleanup.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_cleanup.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_cleanup.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_duphandle.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_duphandle.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_duphandle.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_getinfo.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_getinfo.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_getinfo.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_init.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_init.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_init.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_perform.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_perform.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_perform.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_setopt.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_setopt.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_setopt.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_escape.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_escape.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_escape.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_formadd.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_formadd.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_formadd.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_formfree.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_formfree.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_formfree.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_formparse.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_formparse.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_formparse.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_free.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_free.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_free.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_getdate.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_getdate.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_getdate.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_getenv.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_getenv.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_getenv.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_global_cleanup.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_global_cleanup.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_global_cleanup.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_global_init.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_global_init.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_global_init.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_mprintf.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_mprintf.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_mprintf.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_add_handle.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_add_handle.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_add_handle.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_cleanup.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_cleanup.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_cleanup.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_fdset.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_fdset.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_fdset.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_info_read.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_info_read.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_info_read.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_init.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_init.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_init.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_perform.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_perform.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_perform.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_remove_handle.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_remove_handle.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_remove_handle.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_slist_append.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_slist_append.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_slist_append.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_slist_free_all.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_slist_free_all.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_slist_free_all.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_strequal.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_strequal.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_strequal.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_strnequal.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_strnequal.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_strnequal.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_unescape.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_unescape.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_unescape.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_version.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_version.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_version.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/curl_version_info.3
+%%PORTDOCS%%share/doc/curl/libcurl/curl_version_info.html
+%%PORTDOCS%%share/doc/curl/libcurl/curl_version_info.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/index.html
+%%PORTDOCS%%share/doc/curl/libcurl/libcurl-errors.3
+%%PORTDOCS%%share/doc/curl/libcurl/libcurl-errors.html
+%%PORTDOCS%%share/doc/curl/libcurl/libcurl-errors.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/libcurl-multi.3
+%%PORTDOCS%%share/doc/curl/libcurl/libcurl-multi.html
+%%PORTDOCS%%share/doc/curl/libcurl/libcurl-multi.pdf
+%%PORTDOCS%%share/doc/curl/libcurl/libcurl.3
+%%PORTDOCS%%share/doc/curl/libcurl/libcurl.html
+%%PORTDOCS%%share/doc/curl/libcurl/libcurl.pdf
+%%PORTDOCS%%@dirrm share/doc/curl/libcurl
+%%PORTDOCS%%@dirrm share/doc/curl/examples
+%%PORTDOCS%%@dirrm share/doc/curl
Index: ports/ftp/curl/files/patch-lib::url.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: ports/ftp/curl/files/patch-lib::url.c
diff -N ports/ftp/curl/files/patch-lib::url.c
--- ports/ftp/curl/files/patch-lib::url.c	1 Jan 1970 00:00:00 -0000
+++ ports/ftp/curl/files/patch-lib::url.c	27 Nov 2002 15:23:37 -0000
@@ -0,0 +1,13 @@
+--- lib/url.c.old	Wed Nov 27 17:22:24 2002
++++ lib/url.c	Wed Nov 27 17:23:29 2002
+@@ -288,6 +288,10 @@
+  =20
+   data->set.proxytype =3D CURLPROXY_HTTP; /* defaults to HTTP proxy */
+=20
++#if defined(__FreeBSD_version)
++  data->set.no_signal =3D TRUE; /* different handling of signals and thre=
ads */
++#endif /* __FreeBSD_version */
++
+   /* create an array with connection data struct pointers */
+   data->state.numconnects =3D 5; /* hard-coded right now */
+   data->state.connects =3D (struct connectdata **)

--Q68bSM7Ycu6FN28Q--

--l76fUT7nc3MelDdI
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (FreeBSD)

iD8DBQE95Oh17Ri2jRYZRVMRAg38AJ93djOqmxFiPXXno2ajH7oVvLAicgCeKeIo
a7Yl0cl074dmoGfhWAT2KC4=
=dPDh
-----END PGP SIGNATURE-----

--l76fUT7nc3MelDdI--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021127154453.GE375>