Hello community, here is the log from the commit of package iperf for openSUSE:Factory checked in at 2017-11-10 14:57:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/iperf (Old) and /work/SRC/openSUSE:Factory/.iperf.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "iperf" Fri Nov 10 14:57:58 2017 rev:24 rq:540223 version:3.3 Changes: -------- --- /work/SRC/openSUSE:Factory/iperf/iperf.changes 2017-09-26 21:16:34.776200208 +0200 +++ /work/SRC/openSUSE:Factory/.iperf.new/iperf.changes 2017-11-10 14:58:16.746164660 +0100 @@ -1,0 +2,6 @@ +Tue Nov 7 09:53:45 UTC 2017 - [email protected] + +- update to 3.3 + * Bug fixes + +------------------------------------------------------------------- Old: ---- iperf-3.2.tar.gz New: ---- iperf-3.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ iperf.spec ++++++ --- /var/tmp/diff_new_pack.U1yayC/_old 2017-11-10 14:58:18.222111273 +0100 +++ /var/tmp/diff_new_pack.U1yayC/_new 2017-11-10 14:58:18.222111273 +0100 @@ -18,7 +18,7 @@ %define soname 0 Name: iperf -Version: 3.2 +Version: 3.3 Release: 0 Summary: A tool to measure network performance License: BSD-3-Clause ++++++ iperf-3.2.tar.gz -> iperf-3.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/.travis.yml new/iperf-3.3/.travis.yml --- old/iperf-3.2/.travis.yml 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/.travis.yml 2017-10-30 22:00:41.000000000 +0100 @@ -6,4 +6,8 @@ - linux - osx +notifications: + slack: + secure: ImUmX7hcYotHWCDBfOcIvF6H7kkeGqiaUCy7SVPFtgPbz33ttpbRd94E7oxWVmZMLKb+i6+JCujTEWGwGBimzH+DjL0LLWs0ShzXZIUa1UzEPTc4hgV6VAxucYKFg2WrbXgOPWbulkMG1VZ6pX7GlAEGf0qyNqn44F7S2ay9m18= + script: ./configure && make && make check diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/Makefile.in new/iperf-3.3/Makefile.in --- old/iperf-3.2/Makefile.in 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/Makefile.in 2017-10-30 22:00:41.000000000 +0100 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -547,7 +547,7 @@ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir @@ -573,7 +573,7 @@ @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir @@ -591,7 +591,7 @@ distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ @@ -601,7 +601,7 @@ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/RELEASE_NOTES new/iperf-3.3/RELEASE_NOTES --- old/iperf-3.2/RELEASE_NOTES 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/RELEASE_NOTES 2017-10-30 22:00:41.000000000 +0100 @@ -1,3 +1,32 @@ +== iperf 3.3 2017-10-31 == + +* Notable user-visible changes + + * iperf3 can now be built --without-openssl on systems where OpenSSL + is present (#624, #633). + + * A bug with printing very large numbers has been fixed (#642). + + * A bug where the server would, under certain circumstances, halt a + test after exactly fifteen seconds has been fixed (#645). + + * The --tos parameter is no longer "sticky" between tests when doing + --reverse tests (#639). + + * The authentication token on the server is properly reset between + tests (#650). + + * A bug that could cause iperf3 to overwrite the PID file of an + already-existing iperf3 process has been fixed (#623). + + * iperf3 will now ignore nonsensical TCP MSS values (from the TCP + control connection) when trying to determine a reasonable block + size for UDP tests. This condition primarily affected users on + Windows, but potentially improves robustness for all + platforms. (#659) + +* Notable developer-visible changes + == iperf 3.2 2017-06-26 == * User-visible changes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/aclocal.m4 new/iperf-3.3/aclocal.m4 --- old/iperf-3.2/aclocal.m4 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/aclocal.m4 2017-10-30 22:00:41.000000000 +0100 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.15 -*- Autoconf -*- +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9049,7 +9049,7 @@ m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) -# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9064,7 +9064,7 @@ [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.15], [], +m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -9080,14 +9080,14 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.15])dnl +[AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9139,7 +9139,7 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9170,7 +9170,7 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9361,7 +9361,7 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9437,7 +9437,7 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9634,7 +9634,7 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9655,7 +9655,7 @@ fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9677,7 +9677,7 @@ # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9712,7 +9712,7 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9762,7 +9762,7 @@ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9803,7 +9803,7 @@ # Obsolete and "removed" macros, that must however still report explicit # error messages when used, to smooth transition. # -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9830,7 +9830,7 @@ # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9859,7 +9859,7 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9906,7 +9906,7 @@ # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9925,7 +9925,7 @@ # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -10006,7 +10006,7 @@ rm -f conftest.file ]) -# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -10066,7 +10066,7 @@ _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -10094,7 +10094,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -10113,7 +10113,7 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/config/compile new/iperf-3.3/config/compile --- old/iperf-3.2/config/compile 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/config/compile 2017-10-30 22:00:41.000000000 +0100 @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-10-14.11; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # Written by Tom Tromey <[email protected]>. # # This program is free software; you can redistribute it and/or modify @@ -255,7 +255,8 @@ echo "compile $scriptversion" exit $? ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac @@ -342,6 +343,6 @@ # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/config/depcomp new/iperf-3.3/config/depcomp --- old/iperf-3.2/config/depcomp 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/config/depcomp 2017-10-30 22:00:41.000000000 +0100 @@ -1,9 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2013-05-30.07; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -786,6 +786,6 @@ # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/config/missing new/iperf-3.3/config/missing --- old/iperf-3.2/config/missing 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/config/missing 2017-10-30 22:00:41.000000000 +0100 @@ -1,9 +1,9 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU programs. -scriptversion=2013-10-28.13; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <[email protected]>, 1996. # This program is free software; you can redistribute it and/or modify @@ -210,6 +210,6 @@ # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/configure new/iperf-3.3/configure --- old/iperf-3.2/configure 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/configure 2017-10-30 22:00:41.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for iperf 3.2. +# Generated by GNU Autoconf 2.69 for iperf 3.3. # # Report bugs to <https://github.com/esnet/iperf>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='iperf' PACKAGE_TARNAME='iperf' -PACKAGE_VERSION='3.2' -PACKAGE_STRING='iperf 3.2' +PACKAGE_VERSION='3.3' +PACKAGE_STRING='iperf 3.3' PACKAGE_BUGREPORT='https://github.com/esnet/iperf' PACKAGE_URL='http://software.es.net/iperf/' @@ -1321,7 +1321,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures iperf 3.2 to adapt to many kinds of systems. +\`configure' configures iperf 3.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1391,7 +1391,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of iperf 3.2:";; + short | recursive ) echo "Configuration of iperf 3.3:";; esac cat <<\_ACEOF @@ -1506,7 +1506,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -iperf configure 3.2 +iperf configure 3.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1875,7 +1875,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by iperf $as_me 3.2, which was +It was created by iperf $as_me 3.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2807,7 +2807,7 @@ # Define the identity of the package. PACKAGE='iperf' - VERSION='3.2' + VERSION='3.3' cat >>confdefs.h <<_ACEOF @@ -12750,7 +12750,11 @@ done -# Check for OPENSSL support +if test "x$with_openssl" = "xno"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Building without OpenSSL; disabling iperf_auth functionality. " >&5 +$as_echo "$as_me: WARNING: Building without OpenSSL; disabling iperf_auth functionality. " >&2;} +else + # Check for OPENSSL support found=false @@ -12939,11 +12943,16 @@ $as_echo "#define HAVE_SSL 1" >>confdefs.h - else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } + if test "x$with_openssl" != "x"; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-openssl was given, but test for OpenSSL failed +See \`config.log' for more details" "$LINENO" 5; } + fi fi @@ -12957,9 +12966,10 @@ -LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" -LIBS="$OPENSSL_LIBS $LIBS" -CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS" + LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" + LIBS="$OPENSSL_LIBS $LIBS" + CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS" +fi # Check for TCP_CONGESTION sockopt (believed to be Linux and FreeBSD only) { $as_echo "$as_me:${as_lineno-$LINENO}: checking TCP_CONGESTION socket option" >&5 @@ -13629,7 +13639,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by iperf $as_me 3.2, which was +This file was extended by iperf $as_me 3.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13696,7 +13706,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -iperf config.status 3.2 +iperf config.status 3.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/configure.ac new/iperf-3.3/configure.ac --- old/iperf-3.2/configure.ac 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/configure.ac 2017-10-30 22:00:41.000000000 +0100 @@ -24,7 +24,7 @@ # file for complete information. # Initialize the autoconf system for the specified tool, version and mailing list -AC_INIT(iperf, 3.2, https://github.com/esnet/iperf, iperf, http://software.es.net/iperf/) +AC_INIT(iperf, 3.3, https://github.com/esnet/iperf, iperf, http://software.es.net/iperf/) m4_include([config/ax_check_openssl.m4]) AC_LANG(C) @@ -101,13 +101,20 @@ #endif ]) -# Check for OPENSSL support -AX_CHECK_OPENSSL( - AC_DEFINE([HAVE_SSL], [1], [OpenSSL Is Available]) -) -LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" -LIBS="$OPENSSL_LIBS $LIBS" -CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS" +if test "x$with_openssl" = "xno"; then + AC_MSG_WARN( [Building without OpenSSL; disabling iperf_auth functionality.] ) +else + # Check for OPENSSL support + AX_CHECK_OPENSSL( + [ AC_DEFINE([HAVE_SSL], [1], [OpenSSL Is Available]) ], + [ if test "x$with_openssl" != "x"; then + AC_MSG_FAILURE([--with-openssl was given, but test for OpenSSL failed]) + fi ] + ) + LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" + LIBS="$OPENSSL_LIBS $LIBS" + CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS" +fi # Check for TCP_CONGESTION sockopt (believed to be Linux and FreeBSD only) AC_CACHE_CHECK([TCP_CONGESTION socket option], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/docs/conf.py new/iperf-3.3/docs/conf.py --- old/iperf-3.2/docs/conf.py 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/docs/conf.py 2017-10-30 22:00:41.000000000 +0100 @@ -52,10 +52,10 @@ # built documents. # # The short X.Y version. -version = '3.1.7' +version = '3.2' # The full version, including alpha/beta/rc tags. -release = '3.1.7' +release = '3.2' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/docs/faq.rst new/iperf-3.3/docs/faq.rst --- old/iperf-3.2/docs/faq.rst 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/docs/faq.rst 2017-10-30 22:00:41.000000000 +0100 @@ -40,6 +40,34 @@ options will work. Some community-provided binaries of iperf3 for Windows exist. +How can I build a statically-linked executable of iperf3? + There are a number of reasons for building an iperf3 executable with + no dependencies on any shared libraries. Unfortunately this isn't + quite a straight-forward process. + + The steps below have nominally been tested on CentOS 7.4, but + can probably be adapted for use with other Linux distributions: + + #. If necessary, install the static C libraries; for CentOS this is + the ``glibc-static`` package. + + #. If OpenSSL is installed, be sure that its static libraries are + also installed, from the ``openssl-static`` package. + + #. Be sure that ``lksctp-*`` packages are not installed, because + as of this writing, there do not appear to be any static + libraries available for SCTP. + + #. Configure iperf3 thusly: ``configure "LDFLAGS=--static" + --disable-shared`` These options are necessary to disable the + generation of shared libraries and link the executable + statically. + + #. Compile as normal. + + It appears that for FreeBSD (tested on FreeBSD 11.1-RELEASE), only + the last two steps are needed to produce a static executable. + I'm seeing quite a bit of unexpected UDP loss. Why? First, confirm you are using iperf 3.1.5 or higher. There was an issue with the default UDP send size that was fixed in @@ -65,6 +93,17 @@ I'm having trouble getting iperf3 to work on Windows, Android, etc. Where can I get help? iperf3 only supports Linux, FreeBSD, and OSX. For other platforms we recommend using iperf2. +I managed to get a Windows executable built, but why do I get a BSOD on Windows 7? + There seems to be a bug in Windows 7 where running iperf3 from a + network filesystem can cause a system crash (in other words Blue + Screen of Death, or BSOD). This is a Windows bug addressed in kb2839149: + + https://support.microsoft.com/en-us/help/2839149/stop-error-0x00000027-in-the-rdbss-sys-process-in-windows-7-or-windows + + A hotfix is available under kb2732673: + + https://support.microsoft.com/en-us/help/2732673/-delayed-write-failed-error-message-when--pst-files-are-stored-on-a-ne + Why can’t I run a UDP client with no server? This is potentially dangerous, and an attacker could use this for a denial of service attack. We don't want iperf3 to be an attack tool. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/docs/invoking.rst new/iperf-3.3/docs/invoking.rst --- old/iperf-3.2/docs/invoking.rst 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/docs/invoking.rst 2017-10-30 22:00:41.000000000 +0100 @@ -41,9 +41,89 @@ DESCRIPTION iperf3 is a tool for performing network throughput measurements. It - can test either TCP or UDP throughput. To perform an iperf3 test the + can test TCP, UDP, or SCTP throughput. To perform an iperf3 test the user must establish both a server and a client. + The iperf3 executable contains both client and server functionality. + An iperf3 server can be started using either of the -s or --server com- + mand-line parameters, for example: + + iperf3 -s + + iperf3 --server + + Note that many iperf3 parameters have both short (-s) and long + (--server) forms. In this section we will generally use the short form + of command-line flags, unless only the long form of a flag is avail- + able. + + By default, the iperf3 server listens on TCP port 5201 for connections + from an iperf3 client. A custom port can be specified by using the -p + flag, for example: + + iperf3 -s -p 5002 + + After the server is started, it will listen for connections from iperf3 + clients (in other words, the iperf3 program run in client mode). The + client mode can be started using the -c command-line option, which also + requires a host to which iperf3 should connect. The host can by speci- + fied by hostname, IPv4 literal, or IPv6 literal: + + iperf3 -c iperf3.example.com + + iperf3 -c 192.0.2.1 + + iperf3 -c 2001:db8::1 + + If the iperf3 server is running on a non-default TCP port, that port + number needs to be specified on the client as well: + + iperf3 -c iperf3.example.com -p 5002 + + The initial TCP connection is used to exchange test parameters, control + the start and end of the test, and to exchange test results. This is + sometimes referred to as the "control connection". The actual test + data is sent over a separate TCP connection, as a separate flow of UDP + packets, or as an independent SCTP connection, depending on what proto- + col was specified by the client. + + Normally, the test data is sent from the client to the server, and mea- + sures the upload speed of the client. Measuring the download speed + from the server can be done by specifying the -R flag on the client. + This causes data to be sent from the server to the client. + + iperf3 -c iperf3.example.com -p 5202 -R + + Results are displayed on both the client and server. There will be at + least one line of output per measurement interval (by default a mea- + surement interval lasts for one second, but this can be changed by the + -i option). Each line of output includes (at least) the time since the + start of the test, amount of data transfered during the interval, and + the average bitrate over that interval. Note that the values for each + measurement interval are taken from the point of view of the endpoint + process emitting that output (in other words, the output on the client + shows the measurement interval data for the client. + + At the end of the test is a set of statistics that shows (at least as + much as possible) a summary of the test as seen by both the sender and + the receiver, with lines tagged accordingly. Recall that by default + the client is the sender and the server is the receiver, although as + indicated above, use of the -R flag will reverse these roles. + + The client can be made to retrieve the server-side output for a given + test by specifying the --get-server-output flag. + + Either the client or the server can produce its output in a JSON struc- + ture, useful for integration with other programs, by passing it the -J + flag. Because the contents of the JSON structure are only competely + known after the test has finished, no JSON output will be emitted until + the end of the test. + + iperf3 has a (overly) large set of command-line options that can be + used to set the parameters of a test. They are given in the "GENERAL + OPTIONS" section of the manual page below, as well as summarized in + iperf3's help output, which can be viewed by running iperf3 with the -h + flag. GENERAL OPTIONS -p, --port n @@ -53,26 +133,30 @@ [kmgtKMGT] format to report: Kbits/Mbits/Gbits/Tbits -i, --interval n - pause n seconds between periodic throughput reports; default is + pause n seconds between periodic throughput reports; default is 1, use 0 to disable -F, --file name - client-side: read from the file and write to the network, - instead of using random data; server-side: read from the network - and write to the file, instead of throwing the data away + Use a file as the source (on the sender) or sink (on the + receiver) of data, rather than just generating random data or + throwing it away. This feature is used for finding whether or + not the storage subsystem is the bottleneck for file transfers. + It does not turn iperf3 into a file transfer tool. The length, + attributes, and in some cases contents of the received file may + not match those of the original file. -A, --affinity n/n,m - Set the CPU affinity, if possible (Linux and FreeBSD only). On - both the client and server you can set the local affinity by + Set the CPU affinity, if possible (Linux and FreeBSD only). On + both the client and server you can set the local affinity by using the n form of this argument (where n is a CPU number). In - addition, on the client side you can override the server's + addition, on the client side you can override the server's affinity for just that one test, using the n,m form of argument. - Note that when using this feature, a process will only be bound - to a single CPU (as opposed to a set containing potentialy mul- + Note that when using this feature, a process will only be bound + to a single CPU (as opposed to a set containing potentialy mul- tiple CPUs). -B, --bind host - bind to a specific interface. If the host has multiple inter- + bind to a specific interface. If the host has multiple inter- faces, it will use the first interface by default. -V, --verbose @@ -85,11 +169,11 @@ send output to a log file. --forceflush - force flushing output at every interval. Used to avoid buffer- + force flushing output at every interval. Used to avoid buffer- ing when sending output to pipe. -d, --debug - emit debugging output. Primarily (perhaps exclusively) of use + emit debugging output. Primarily (perhaps exclusively) of use to developers. -v, --version @@ -107,28 +191,28 @@ run the server in background as a daemon -I, --pidfile file - write a file with the process ID, most useful when running as a + write a file with the process ID, most useful when running as a daemon. -1, --one-off handle one client connection, then exit. --rsa-private-key-path file - path to the RSA private key (not password-protected) used to - decrypt authentication credentials from the client (if built + path to the RSA private key (not password-protected) used to + decrypt authentication credentials from the client (if built with OpenSSL support). --authorized-users-path file - path to the configuration file containing authorized users cre- - dentials to run iperf tests (if built with OpenSSL support). - The file is a comma separated list of usernames and password - hashes; more information on the structure of the file can be + path to the configuration file containing authorized users cre- + dentials to run iperf tests (if built with OpenSSL support). + The file is a comma separated list of usernames and password + hashes; more information on the structure of the file can be found in the EXAMPLES section. CLIENT SPECIFIC OPTIONS -c, --client host - run in client mode, connecting to the specified server. By - default, a test consists of sending data from the client to the + run in client mode, connecting to the specified server. By + default, a test consists of sending data from the client to the server, unless the -R flag is specified. --sctp use SCTP rather than TCP (FreeBSD and Linux) @@ -137,29 +221,30 @@ use UDP rather than TCP --connect-timeout n - set timeout for establishing the initial control connection to - the server, in milliseconds. The default behavior is the oper- - ating system's timeout for TCP connection establishment. Pro- - viding a shorter value may speed up detection of a down iperf3 + set timeout for establishing the initial control connection to + the server, in milliseconds. The default behavior is the oper- + ating system's timeout for TCP connection establishment. Pro- + viding a shorter value may speed up detection of a down iperf3 server. - -b, --bandwidth n[KM] - set target bandwidth to n bits/sec (default 1 Mbit/sec for UDP, - unlimited for TCP). If there are multiple streams (-P flag), - the bandwidth limit is applied separately to each stream. You - can also add a '/' and a number to the bandwidth specifier. - This is called "burst mode". It will send the given number of - packets without pausing, even if that temporarily exceeds the - specified bandwidth limit. Setting the target bandwidth to 0 - will disable bandwidth limits (particularly useful for UDP - tests). This bandwidth limit is implemented internally inside - iperf3, and is available on all platforms. Compare with the - --fq-rate flag. + -b, --bitrate n[KM] + set target bitrate to n bits/sec (default 1 Mbit/sec for UDP, + unlimited for TCP/SCTP). If there are multiple streams (-P + flag), the throughput limit is applied separately to each + stream. You can also add a '/' and a number to the bitrate + specifier. This is called "burst mode". It will send the given + number of packets without pausing, even if that temporarily + exceeds the specified throughput limit. Setting the target + bitrate to 0 will disable bitrate limits (particularly useful + for UDP tests). This throughput limit is implemented internally + inside iperf3, and is available on all platforms. Compare with + the --fq-rate flag. This option replaces the --bandwidth flag, + which is now deprecated but (at least for now) still accepted. --pacing-timer n[KMG] set pacing timer interval in microseconds (default 1000 microseconds, or 1 ms). This controls iperf3's internal pacing - timer for the -b/--bandwidth option. The timer fires at the + timer for the -b/--bitrate option. The timer fires at the interval set by this parameter. Smaller values of the pacing timer parameter smooth out the traffic emitted by iperf3, but potentially at the cost of performance due to more frequent @@ -168,11 +253,11 @@ --fq-rate n[KM] Set a rate to be used with fair-queueing based socket-level pac- ing, in bits per second. This pacing (if specified) will be in - addition to any pacing due to iperf3's internal bandwidth pacing - (-b flag), and both can be specified for the same test. Only - available on platforms supporting the SO_MAX_PACING_RATE socket - option (currently only Linux). The default is no fair-queueing - based pacing. + addition to any pacing due to iperf3's internal throughput pac- + ing (-b/--bitrate flag), and both can be specified for the same + test. Only available on platforms supporting the SO_MAX_PAC- + ING_RATE socket option (currently only Linux). The default is + no fair-queueing based pacing. --no-fq-socket-pacing This option is deprecated and will be removed. It is equivalent @@ -331,7 +416,7 @@ - ESnet May 2017 IPERF3(1) + ESnet June 2017 IPERF3(1) The iperf3 manual page will typically be installed in manual section 1. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/docs/news.rst new/iperf-3.3/docs/news.rst --- old/iperf-3.2/docs/news.rst 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/docs/news.rst 2017-10-30 22:00:41.000000000 +0100 @@ -1,6 +1,14 @@ iperf3 Project News =================== +2017-06-26: iperf-3.2 released +------------------------------- + +| URL: http://downloads.es.net/pub/iperf/iperf-3.2.tar.gz +| SHA256: ``f207b36f861485845dbdf09f909c62f3d2222a3cf3d2682095aede8213cd9c1d iperf-3.2.tar.gz`` + +New minor release of iperf 3.2, with new features, bugfixes, and enhancements. + 2017-06-06: iperf3 update, June 2017 -------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/docs/obtaining.rst new/iperf-3.3/docs/obtaining.rst --- old/iperf-3.2/docs/obtaining.rst 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/docs/obtaining.rst 2017-10-30 22:00:41.000000000 +0100 @@ -18,7 +18,7 @@ `iperf3-devel <https://apps.fedoraproject.org/packages/iperf3-devel>`_ in Fedora 19 and 20 and in Fedora EPEL 5, 6, and 7. iperf3 is included as a - part of RedHat Enterprise Linux 7.3 and later (as well as CentOS 7.3 + part of RedHat Enterprise Linux 7.4 and later (as well as CentOS 7.4 and later). * Ubuntu: `iperf3 <https://launchpad.net/ubuntu/+source/iperf3>`_, is available in Trusty (backports), and as a part of the main diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/examples/Makefile.in new/iperf-3.3/examples/Makefile.in --- old/iperf-3.2/examples/Makefile.in 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/examples/Makefile.in 2017-10-30 22:00:41.000000000 +0100 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/src/Makefile.in new/iperf-3.3/src/Makefile.in --- old/iperf-3.2/src/Makefile.in 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/src/Makefile.in 2017-10-30 22:00:41.000000000 +0100 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/src/iperf3.1 new/iperf-3.3/src/iperf3.1 --- old/iperf-3.2/src/iperf3.1 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/src/iperf3.1 2017-10-30 22:00:41.000000000 +0100 @@ -76,7 +76,7 @@ default a measurement interval lasts for one second, but this can be changed by the -i option). Each line of output includes (at least) the time since the start of -the test, amount of data transfered during the interval, and the +the test, amount of data transferred during the interval, and the average bitrate over that interval. Note that the values for each measurement interval are taken from the point of view of the endpoint process emitting that output (in other diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/src/iperf_api.c new/iperf-3.3/src/iperf_api.c --- old/iperf-3.2/src/iperf_api.c 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/src/iperf_api.c 2017-10-30 22:00:41.000000000 +0100 @@ -1326,7 +1326,6 @@ sp->green_light = 1; if (test->settings->rate != 0) { cd.p = sp; - /* (Repeat every millisecond - arbitrary value to provide smooth pacing.) */ sp->send_timer = tmr_create((struct timeval*) 0, send_timer_proc, cd, test->settings->pacing_timer, 1); if (sp->send_timer == NULL) { i_errno = IEINITTEST; @@ -1468,8 +1467,7 @@ cJSON_AddNumberToObject(j, "omit", test->omit); if (test->server_affinity != -1) cJSON_AddNumberToObject(j, "server_affinity", test->server_affinity); - if (test->duration) - cJSON_AddNumberToObject(j, "time", test->duration); + cJSON_AddNumberToObject(j, "time", test->duration); if (test->settings->bytes) cJSON_AddNumberToObject(j, "num", test->settings->bytes); if (test->settings->blocks) @@ -2306,6 +2304,11 @@ test->settings->rate = 0; test->settings->burst = 0; test->settings->mss = 0; + test->settings->tos = 0; + if (test->settings->authtoken) { + free(test->settings->authtoken); + test->settings->authtoken = NULL; + } memset(test->cookie, 0, COOKIE_SIZE); test->multisend = 10; /* arbitrary */ test->udp_counters_64bit = 0; @@ -3435,6 +3438,36 @@ if (test->pidfile) { int fd; char buf[8]; + + /* See if the file already exists and we can read it. */ + fd = open(test->pidfile, O_RDONLY, 0); + if (fd >= 0) { + if (read(fd, buf, sizeof(buf) - 1) >= 0) { + + /* We read some bytes, see if they correspond to a valid PID */ + pid_t pid; + pid = atoi(buf); + if (pid > 0) { + + /* See if the process exists. */ + if (kill(pid, 0) == 0) { + /* + * Make sure not to try to delete existing PID file by + * scribbling over the pathname we'd use to refer to it. + * Then exit with an error. + */ + free(test->pidfile); + test->pidfile = NULL; + iperf_errexit(test, "Another instance of iperf3 appears to be running"); + } + } + } + } + + /* + * File didn't exist, we couldn't read it, or it didn't correspond to + * a running process. Try to create it. + */ fd = open(test->pidfile, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR|S_IWUSR); if (fd < 0) { return -1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/src/iperf_auth.c new/iperf-3.3/src/iperf_auth.c --- old/iperf-3.2/src/iperf_auth.c 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/src/iperf_auth.c 2017-10-30 22:00:41.000000000 +0100 @@ -36,6 +36,7 @@ #if defined(HAVE_SSL) +#include <openssl/rsa.h> #include <openssl/bio.h> #include <openssl/pem.h> #include <openssl/sha.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/src/iperf_client_api.c new/iperf-3.3/src/iperf_client_api.c --- old/iperf-3.2/src/iperf_client_api.c 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/src/iperf_client_api.c 2017-10-30 22:00:41.000000000 +0100 @@ -339,12 +339,22 @@ socklen_t len; len = sizeof(opt); - if (getsockopt(test->ctrl_sck, IPPROTO_TCP, TCP_MAXSEG, &opt, &len) < 0) { - test->ctrl_sck_mss = 0; - } - else { - test->ctrl_sck_mss = opt; - } + if (getsockopt(test->ctrl_sck, IPPROTO_TCP, TCP_MAXSEG, &opt, &len) < 0) { + test->ctrl_sck_mss = 0; + } + else { + if (opt > 0 && opt <= MAX_UDP_BLOCKSIZE) { + test->ctrl_sck_mss = opt; + } + else { + char str[128]; + snprintf(str, sizeof(str), + "Ignoring nonsense TCP MSS %d", opt); + warning(str); + + test->ctrl_sck_mss = 0; + } + } if (test->verbose) { printf("Control connection MSS %d\n", test->ctrl_sck_mss); @@ -382,10 +392,11 @@ * Regardless of whether explicitly or implicitly set, if the * block size is larger than the MSS, print a warning. */ - if (test->settings->blksize > test->ctrl_sck_mss) { + if (test->ctrl_sck_mss > 0 && + test->settings->blksize > test->ctrl_sck_mss) { char str[128]; snprintf(str, sizeof(str), - "Warning: UDP block size %d exceeds TCP MSS %d, may result in fragmentation / drops", test->settings->blksize, test->ctrl_sck_mss); + "UDP block size %d exceeds TCP MSS %d, may result in fragmentation / drops", test->settings->blksize, test->ctrl_sck_mss); warning(str); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/src/t_units.c new/iperf-3.3/src/t_units.c --- old/iperf-3.2/src/t_units.c 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/src/t_units.c 2017-10-30 22:00:41.000000000 +0100 @@ -99,5 +99,12 @@ unit_snprintf(s, 11, d, 'a'); assert(strncmp(s, "35.2 Tbit", 11) == 0); + d = 4.0 * 1024 * 1024 * 1024 * 1024 * 1024; + unit_snprintf(s, 11, d, 'A'); + assert(strncmp(s, "4096 TByte", 11) == 0); + + unit_snprintf(s, 11, d, 'a'); + assert(strncmp(s, "36029 Tbit", 11) == 0); + return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/iperf-3.2/src/units.c new/iperf-3.3/src/units.c --- old/iperf-3.2/src/units.c 2017-06-26 19:42:56.000000000 +0200 +++ new/iperf-3.3/src/units.c 2017-10-30 22:00:41.000000000 +0100 @@ -303,14 +303,14 @@ if (isupper((int) inFormat)) { - while (tmpNum >= 1024.0 && conv <= TERA_CONV) + while (tmpNum >= 1024.0 && conv < TERA_CONV) { tmpNum /= 1024.0; conv++; } } else { - while (tmpNum >= 1000.0 && conv <= TERA_CONV) + while (tmpNum >= 1000.0 && conv < TERA_CONV) { tmpNum /= 1000.0; conv++;
