[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