aboutsummaryrefslogtreecommitdiff
path: root/www/serf
diff options
context:
space:
mode:
authorOlli Hauer <ohauer@FreeBSD.org>2014-06-08 16:26:52 +0000
committerOlli Hauer <ohauer@FreeBSD.org>2014-06-08 16:26:52 +0000
commitc8e8fb7dc91c4e0d61a279ccc46efcb2f31f353e (patch)
tree3ea9d7e89cb830f482549fc827fc480f1887d376 /www/serf
parenta838244fba3a1806cf735157ca05956077a09a02 (diff)
downloadports-c8e8fb7dc91c4e0d61a279ccc46efcb2f31f353e.tar.gz
ports-c8e8fb7dc91c4e0d61a279ccc46efcb2f31f353e.zip
- possible fix for all the subversion18 failures
reported on the subversion-user list and on forums.freebsd.org - bump PORTREVISION PR: ports/190757 Submitted by: lev Obtained from: https://forums.freebsd.org/viewtopic.php?p=260727#p260727
Notes
Notes: svn path=/head/; revision=357053
Diffstat (limited to 'www/serf')
-rw-r--r--www/serf/Makefile8
-rw-r--r--www/serf/files/patch-outgoing.c47
2 files changed, 52 insertions, 3 deletions
diff --git a/www/serf/Makefile b/www/serf/Makefile
index 1cc08bed67c2..198c6a3eb06a 100644
--- a/www/serf/Makefile
+++ b/www/serf/Makefile
@@ -3,6 +3,7 @@
PORTNAME= serf
PORTVERSION= 1.3.5
+PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= http://serf.googlecode.com/svn/src_releases/
@@ -17,6 +18,7 @@ USES= scons tar:bzip2
USE_OPENSSL= yes
USE_LDCONFIG= yes
+# support for subversion-static,
SUB_FILES= libserf-1.la
OPTIONS_DEFINE= DOCS GSSAPI
@@ -36,10 +38,10 @@ SCONS_ARGS+= GSSAPI="/usr"
.endif
do-build:
- @cd ${WRKSRC}; ${SETENV} ${MAKE_CMD} ${SCONS_ARGS}
+ @(cd ${WRKSRC} && ${SETENV} ${MAKE_CMD} ${SCONS_ARGS})
do-install:
- @cd ${WRKSRC}; ${SENTENV} ${MAKE_CMD} ${SCONS_ARGS} ${INSTALL_TARGET}
+ @(cd ${WRKSRC} && ${SENTENV} ${MAKE_CMD} ${SCONS_ARGS} ${INSTALL_TARGET})
post-patch:
@${REINPLACE_CMD} -e '/^Requires.private/d' ${WRKSRC}/build/serf.pc.in
@@ -48,7 +50,7 @@ post-install:
@${MKDIR} ${STAGEDIR}${DOCSDIR}
${INSTALL_DATA} ${WRKSRC}/design-guide.txt ${STAGEDIR}${DOCSDIR}
${INSTALL_DATA} ${SUB_FILES:S|^|${WRKDIR}/|} ${STAGEDIR}${PREFIX}/lib
- ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libserf-1.so.1.3.0
+ ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libserf-1.so
regression-test check: build
@(cd ${WRKSRC} && ${MAKE_CMD} check)
diff --git a/www/serf/files/patch-outgoing.c b/www/serf/files/patch-outgoing.c
new file mode 100644
index 000000000000..1c5da43968c4
--- /dev/null
+++ b/www/serf/files/patch-outgoing.c
@@ -0,0 +1,47 @@
+--- ./outgoing.c.orig 2014-04-21 16:56:02.000000000 +0200
++++ ./outgoing.c 2014-06-08 18:17:48.000000000 +0200
+@@ -23,6 +23,13 @@
+
+ #include "serf_private.h"
+
++/* Some implementations -like Windows- report some hangup errors via a
++ different event than the specific HUP event. */
++#define APR_STATUS_IMPLIES_HANGUP(status) \
++ (APR_STATUS_IS_ECONNRESET(status) || \
++ APR_STATUS_IS_ECONNABORTED(status) || \
++ status == SERF_ERROR_REQUEST_LOST)
++
+ /* cleanup for sockets */
+ static apr_status_t clean_skt(void *data)
+ {
+@@ -922,8 +929,12 @@
+ request->handler_baton,
+ pool);
+
+- if (SERF_BUCKET_READ_ERROR(status)) {
+- /* Report the request as 'died'/'cancelled' to the application */
++ if (SERF_BUCKET_READ_ERROR(status)
++ && !APR_STATUS_IMPLIES_HANGUP(status)) {
++
++ /* Report the request as 'died'/'cancelled' to the application,
++ but only if our caller doesn't handle this status specifically,
++ with something like a retry */
+ (void)(*request->handler)(request,
+ NULL,
+ request->handler_baton,
+@@ -1128,10 +1139,12 @@
+
+ /* Some systems will not generate a HUP poll event so we have to
+ * handle the ECONNRESET issue and ECONNABORT here.
++ *
++ * ### Update similar code in handle_response() if this condition
++ * changes, or requests will get lost and/or accidentally reported
++ * cancelled.
+ */
+- if (APR_STATUS_IS_ECONNRESET(status) ||
+- APR_STATUS_IS_ECONNABORTED(status) ||
+- status == SERF_ERROR_REQUEST_LOST) {
++ if (APR_STATUS_IMPLIES_HANGUP(status)) {
+ /* If the connection had ever been good, be optimistic & try again.
+ * If it has never tried again (incl. a retry), fail.
+ */