[Midnightbsd-cvs] mports [20656] trunk/net: add libutp

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Fri Nov 6 17:57:33 EST 2015


Revision: 20656
          http://svnweb.midnightbsd.org/mports/?rev=20656
Author:   laffer1
Date:     2015-11-06 17:57:33 -0500 (Fri, 06 Nov 2015)
Log Message:
-----------
add libutp

Modified Paths:
--------------
    trunk/net/Makefile

Added Paths:
-----------
    trunk/net/libutp/
    trunk/net/libutp/Makefile
    trunk/net/libutp/distinfo
    trunk/net/libutp/files/
    trunk/net/libutp/files/BSDmakefile
    trunk/net/libutp/files/BSDmakefile.utils
    trunk/net/libutp/files/patch-CVE-2012-6129
    trunk/net/libutp/files/patch-size_t
    trunk/net/libutp/files/patch-utypes
    trunk/net/libutp/pkg-descr
    trunk/net/libutp/pkg-plist

Modified: trunk/net/Makefile
===================================================================
--- trunk/net/Makefile	2015-11-06 22:02:13 UTC (rev 20655)
+++ trunk/net/Makefile	2015-11-06 22:57:33 UTC (rev 20656)
@@ -51,6 +51,7 @@
 SUBDIR += libpcapnav
 SUBDIR += libproxy
 SUBDIR += libsrtp
+SUBDIR += libutp
 SUBDIR += libvncserver
 SUBDIR += libzapojit
 SUBDIR += liferea

Added: trunk/net/libutp/Makefile
===================================================================
--- trunk/net/libutp/Makefile	                        (rev 0)
+++ trunk/net/libutp/Makefile	2015-11-06 22:57:33 UTC (rev 20656)
@@ -0,0 +1,43 @@
+# $MidnightBSD$
+
+PORTNAME=	bittorrent-libutp
+PORTVERSION=	0.20130514
+CATEGORIES=	net devel
+
+MAINTAINER=	ports at MidnightBSD.org
+COMMENT=	The uTorrent Transport Protocol library and sample utilities
+
+LICENSE=	mit
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	${PORTNAME:C/-.*//}
+GH_PROJECT=	${PORTNAME:C/.*-//}
+GH_TAGNAME=	7c4f19a
+
+WRKSRC=		${WRKDIR}/libutp-7c4f19a
+
+USE_DOS2UNIX=	yes
+#USES=		dos2unix uidfix
+MAKEFILE=	${FILESDIR}/BSDmakefile
+USE_LDCONFIG=	yes
+
+FAKE_OPTS=	trueprefix
+
+pre-patch: dos2unix
+
+pre-install:
+	@${MKDIR} ${PREFIX}/include/libutp
+
+post-build:
+	${MAKE} -f ${FILESDIR}/BSDmakefile.utils -C ${WRKSRC}/utp_file PROG_CXX=utp_send
+	${MAKE} -f ${FILESDIR}/BSDmakefile.utils -C ${WRKSRC}/utp_file PROG_CXX=utp_recv
+	${MAKE} -f ${FILESDIR}/BSDmakefile.utils -C ${WRKSRC}/utp_test PROG_CXX=utp_test
+
+post-install:
+	${INSTALL_PROGRAM}	\
+	    ${WRKSRC}/utp_file/utp_send	\
+	    ${WRKSRC}/utp_file/utp_recv	\
+	    ${WRKSRC}/utp_test/utp_test \
+		${PREFIX}/bin/
+
+.include <bsd.port.mk>


Property changes on: trunk/net/libutp/Makefile
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/net/libutp/distinfo
===================================================================
--- trunk/net/libutp/distinfo	                        (rev 0)
+++ trunk/net/libutp/distinfo	2015-11-06 22:57:33 UTC (rev 20656)
@@ -0,0 +1,2 @@
+SHA256 (bittorrent-libutp-0.20130514_GH0.tar.gz) = 690e9beeb434341d81cc51d2bbd0758e186a519673ef2f391536cdb28c5cee47
+SIZE (bittorrent-libutp-0.20130514_GH0.tar.gz) = 71011


Property changes on: trunk/net/libutp/distinfo
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/net/libutp/files/BSDmakefile
===================================================================
--- trunk/net/libutp/files/BSDmakefile	                        (rev 0)
+++ trunk/net/libutp/files/BSDmakefile	2015-11-06 22:57:33 UTC (rev 20656)
@@ -0,0 +1,16 @@
+LIB=	utp
+SHLIB_MAJOR=	0
+SRCS=	utp.cpp utp_utils.cpp
+NO_PROFILE=	yes
+
+CXXFLAGS+=	-fno-exceptions -fno-rtti
+CXXFLAGS+=	-I${.CURDIR} -I${.CURDIR}/utp_config_lib -DPOSIX
+CXXFLAGS+=	-Wall
+
+INCLUDEDIR=	${PREFIX}/include/libutp
+LIBDIR= 	${PREFIX}/lib
+INCS=  		utp.h utp_utils.h utypes.h utp_file/udp.h
+
+WARNS=	5
+
+.include <bsd.lib.mk>


Property changes on: trunk/net/libutp/files/BSDmakefile
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/net/libutp/files/BSDmakefile.utils
===================================================================
--- trunk/net/libutp/files/BSDmakefile.utils	                        (rev 0)
+++ trunk/net/libutp/files/BSDmakefile.utils	2015-11-06 22:57:33 UTC (rev 20656)
@@ -0,0 +1,10 @@
+# PROG_CXX defined on command-line
+
+SRCS=		${PROG_CXX}.cpp
+NO_MAN=		ha-ha
+LDADD=		-L.. -lutp
+CXXFLAGS+=	-I.. -DPOSIX
+
+WARNS=	3
+
+.include <bsd.prog.mk>


Property changes on: trunk/net/libutp/files/BSDmakefile.utils
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/net/libutp/files/patch-CVE-2012-6129
===================================================================
--- trunk/net/libutp/files/patch-CVE-2012-6129	                        (rev 0)
+++ trunk/net/libutp/files/patch-CVE-2012-6129	2015-11-06 22:57:33 UTC (rev 20656)
@@ -0,0 +1,52 @@
+Index: utp.cpp
+===================================================================
+--- utp.cpp	(revision 13645)
++++ utp.cpp	(revision 13646)
+@@ -1487,6 +1487,8 @@ size_t UTPSocket::selective_ack_bytes(uint base, c
+ 	return acked_bytes;
+ }
+ 
++enum { MAX_EACK = 128 };
++
+ void UTPSocket::selective_ack(uint base, const byte *mask, byte len)
+ {
+ 	if (cur_window_packets == 0) return;
+@@ -1499,7 +1501,7 @@ void UTPSocket::selective_ack(uint base, const byt
+ 	// resends is a stack of sequence numbers we need to resend. Since we
+ 	// iterate in reverse over the acked packets, at the end, the top packets
+ 	// are the ones we want to resend
+-	int resends[32];
++	int resends[MAX_EACK];
+ 	int nr = 0;
+ 
+ 	LOG_UTPV("0x%08x: Got EACK [%032b] base:%u", this, *(uint32*)mask, base);
+@@ -1572,6 +1574,12 @@ void UTPSocket::selective_ack(uint base, const byt
+ 		if (((v - fast_resend_seq_nr) & ACK_NR_MASK) <= OUTGOING_BUFFER_MAX_SIZE &&
+ 			count >= DUPLICATE_ACKS_BEFORE_RESEND &&
+ 			duplicate_ack < DUPLICATE_ACKS_BEFORE_RESEND) {
++			// resends is a stack, and we're mostly interested in the top of it
++			// if we're full, just throw away the lower half
++			if (nr >= MAX_EACK - 2) {
++				memmove(resends, &resends[MAX_EACK/2], MAX_EACK/2 * sizeof(resends[0]));
++				nr -= MAX_EACK / 2;
++			}
+ 			resends[nr++] = v;
+ 			LOG_UTPV("0x%08x: no ack for %u", this, v);
+ 		} else {
+@@ -1580,13 +1588,12 @@ void UTPSocket::selective_ack(uint base, const byt
+ 		}
+ 	} while (--bits >= -1);
+ 
+-	if (((base - 1 - fast_resend_seq_nr) & ACK_NR_MASK) < 256 &&
+-		count >= DUPLICATE_ACKS_BEFORE_RESEND &&
+-		duplicate_ack < DUPLICATE_ACKS_BEFORE_RESEND) {
++	if (((base - 1 - fast_resend_seq_nr) & ACK_NR_MASK) <= OUTGOING_BUFFER_MAX_SIZE &&
++		count >= DUPLICATE_ACKS_BEFORE_RESEND) {
+ 		// if we get enough duplicate acks to start
+ 		// resending, the first packet we should resend
+ 		// is base-1
+-		resends[nr++] = base - 1;
++		resends[nr++] = (base - 1) & ACK_NR_MASK;
+ 	} else {
+ 		LOG_UTPV("0x%08x: not resending %u count:%d dup_ack:%u fast_resend_seq_nr:%u",
+ 				 this, base - 1, count, duplicate_ack, fast_resend_seq_nr);


Property changes on: trunk/net/libutp/files/patch-CVE-2012-6129
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/net/libutp/files/patch-size_t
===================================================================
--- trunk/net/libutp/files/patch-size_t	                        (rev 0)
+++ trunk/net/libutp/files/patch-size_t	2015-11-06 22:57:33 UTC (rev 20656)
@@ -0,0 +1,54 @@
+--- utp_file/utp_recv.cpp	2013-05-14 19:05:36.000000000 -0400
++++ utp_file/utp_recv.cpp	2015-01-22 16:45:03.000000000 -0500
+@@ -82,5 +82,5 @@
+ UTPSocket *utp_socket = NULL;
+ FILE *file = NULL;
+-size_t total_recv = 0;
++intmax_t total_recv = 0;
+ bool no_connection = true;
+ 
+@@ -205,5 +205,5 @@
+ {
+ 	assert(utp_socket == socket);
+-	printf("utp on_write %u\n", count);
++	printf("utp on_write %zu\n", count);
+ 	assert(false);
+ }
+@@ -365,10 +365,10 @@
+ 			last_recv = total_recv;
+ 			last_time = cur_time;
+-			printf("\r[%u] recv: %d  %.1f bytes/s  ", cur_time, total_recv, rate);
++			printf("\r[%u] recv: %jd  %.1f bytes/s  ", cur_time, total_recv, rate);
+ 			fflush(stdout);
+ 		}
+ 	}
+ 
+-	printf("\nreceived: %d bytes\n", total_recv);
++	printf("\nreceived: %jd bytes\n", (intmax_t)total_recv);
+ 	fclose(file);
+ 	fclose(log_file);
+--- utp_file/utp_send.cpp	2013-05-14 19:05:36.000000000 -0400
++++ utp_file/utp_send.cpp	2015-01-22 16:45:03.000000000 -0500
+@@ -82,6 +82,6 @@
+ UTPSocket *utp_socket = NULL;
+ FILE *file = NULL;
+-size_t total_sent = 0;
+-size_t file_size = 0;
++intmax_t total_sent = 0;
++intmax_t file_size = 0;
+ 
+ void utp_log(char const* fmt, ...)
+@@ -252,5 +252,5 @@
+ {
+ 	assert(utp_socket == socket);
+-	printf("utp on_read %u\n", count);
++	printf("utp on_read %zu\n", count);
+ 	assert(false);
+ }
+@@ -392,5 +392,5 @@
+ 			last_sent = total_sent;
+ 			last_time = cur_time;
+-			printf("\r[%u] sent: %d/%d  %.1f bytes/s  ", cur_time, total_sent, file_size, rate);
++			printf("\r[%u] sent: %jd/%jd  %.1f bytes/s  ", cur_time, total_sent, file_size, rate);
+ 			fflush(stdout);
+ 		}


Property changes on: trunk/net/libutp/files/patch-size_t
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/net/libutp/files/patch-utypes
===================================================================
--- trunk/net/libutp/files/patch-utypes	                        (rev 0)
+++ trunk/net/libutp/files/patch-utypes	2015-11-06 22:57:33 UTC (rev 20656)
@@ -0,0 +1,34 @@
+--- utypes.h	2012-05-26 22:02:05.000000000 -0400
++++ utypes.h	2012-07-26 17:21:44.000000000 -0400
+@@ -2,13 +2,15 @@
+ #define __UTYPES_H__
+ 
++#include <stdint.h>
++
+ // standard types
+-typedef unsigned char byte;
+-typedef unsigned char uint8;
+-typedef signed char int8;
+-typedef unsigned short uint16;
+-typedef signed short int16;
++typedef uint8_t byte;
++typedef uint8_t uint8;
++typedef int8_t int8;
++typedef uint16_t uint16;
++typedef int16_t	int16;
+ typedef unsigned int uint;
+-typedef unsigned int uint32;
+-typedef signed int int32;
++typedef uint32_t uint32;
++typedef int32_t int32;
+ 
+ #ifdef _MSC_VER
+@@ -16,6 +18,6 @@
+ typedef signed __int64 int64;
+ #else
+-typedef unsigned long long uint64;
+-typedef long long int64;
++typedef uint64_t uint64;
++typedef int64_t int64;
+ #endif
+ 


Property changes on: trunk/net/libutp/files/patch-utypes
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/net/libutp/pkg-descr
===================================================================
--- trunk/net/libutp/pkg-descr	                        (rev 0)
+++ trunk/net/libutp/pkg-descr	2015-11-06 22:57:33 UTC (rev 20656)
@@ -0,0 +1,12 @@
+# libutp - The uTorrent Transport Protocol library.
+Copyright (c) 2010 BitTorrent, Inc.
+
+uTP provides provides reliable, ordered delivery while maintaining
+minimum extra delay. It is implemented on top of UDP to be
+cross-platform and functional today. As a result, uTP is the primary
+transport for uTorrent peer-to-peer connections.
+
+uTP is written in C++, but the external interface is strictly C
+(ANSI C89).
+
+WWW: https://github.com/bittorrent/libutp


Property changes on: trunk/net/libutp/pkg-descr
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/net/libutp/pkg-plist
===================================================================
--- trunk/net/libutp/pkg-plist	                        (rev 0)
+++ trunk/net/libutp/pkg-plist	2015-11-06 22:57:33 UTC (rev 20656)
@@ -0,0 +1,10 @@
+bin/utp_send
+bin/utp_recv
+bin/utp_test
+lib/libutp.so.0
+lib/libutp.so
+lib/libutp.a
+include/libutp/udp.h
+include/libutp/utp.h
+include/libutp/utp_utils.h
+include/libutp/utypes.h


Property changes on: trunk/net/libutp/pkg-plist
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property


More information about the Midnightbsd-cvs mailing list