svn commit: r357053 - in head/www/serf: . files

Olli Hauer ohauer at FreeBSD.org
Sun Jun 8 16:26:53 UTC 2014


Author: ohauer
Date: Sun Jun  8 16:26:52 2014
New Revision: 357053
URL: http://svnweb.freebsd.org/changeset/ports/357053
QAT: https://qat.redports.org/buildarchive/r357053/

Log:
  - 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

Added:
  head/www/serf/files/patch-outgoing.c   (contents, props changed)
Modified:
  head/www/serf/Makefile

Modified: head/www/serf/Makefile
==============================================================================
--- head/www/serf/Makefile	Sun Jun  8 16:21:10 2014	(r357052)
+++ head/www/serf/Makefile	Sun Jun  8 16:26:52 2014	(r357053)
@@ -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)

Added: head/www/serf/files/patch-outgoing.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/serf/files/patch-outgoing.c	Sun Jun  8 16:26:52 2014	(r357053)
@@ -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.
+              */


More information about the svn-ports-head mailing list