ports/110270: backport patch for ftp/curl from CURL's CVS
Eygene Ryabinkin
rea-fbsd at codelabs.ru
Tue Mar 13 15:00:15 UTC 2007
>Number: 110270
>Category: ports
>Synopsis: backport patch for ftp/curl from CURL's CVS
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Tue Mar 13 15:00:11 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator: Eygene Ryabinkin
>Release: FreeBSD 6.2-STABLE i386
>Organization:
Code Labs
>Environment:
System: FreeBSD XXX 6.2-STABLE FreeBSD 6.2-STABLE #13: Mon Feb 12 15:59:07 MSK 2007 root at XXX:/usr/obj/usr/src/sys/XXX i386
>Description:
I fixed the bug that provoked SEGVs in Curl for the CVS version and
I will be happy if this patch will be incorporated to the FreeBSD
port: ports/devel/git is not very much usable over HTTP without the
patch.
>How-To-Repeat:
See http://cool.haxx.se/cvs.cgi/curl/lib/url.c, entries for 1.595
and 1.596.
>Fix:
The new version of url.c patch is below. I will be very grateful if
someone will tell me why the signal and thread handling is different
for FreeBSD, since I am trying to get the original patch for url.c
to be committed into the cURL mainstream, but I can not answer the
question why we need to set the 'data->set.no_signal' to 'TRUE'.
Thanks!
--- lib/url.c.orig Mon Jan 29 01:45:22 2007
+++ lib/url.c Tue Mar 13 17:36:31 2007
@@ -553,6 +553,10 @@
data->set.httpauth = CURLAUTH_BASIC; /* defaults to basic */
data->set.proxyauth = CURLAUTH_BASIC; /* defaults to basic */
+#if defined(__FreeBSD_version)
+ data->set.no_signal = TRUE; /* different handling of signals and threads */
+#endif /* __FreeBSD_version */
+
/* This no longer creates a connection cache here. It is instead made on
the first call to curl_easy_perform() or when the handle is added to a
multi stack. */
@@ -4151,9 +4155,6 @@
if(data->set.reuse_forbid || conn->bits.close) {
CURLcode res2 = Curl_disconnect(conn); /* close the connection */
- *connp = NULL; /* to make the caller of this function better detect that
- this was actually killed here */
-
/* If we had an error already, make sure we return that one. But
if we got a new error, return that. */
if(!result && res2)
@@ -4169,6 +4170,9 @@
conn->connectindex,
conn->bits.httpproxy?conn->proxy.dispname:conn->host.dispname);
}
+
+ *connp = NULL; /* to make the caller of this function better detect that
+ this was actually killed here */
return result;
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list