Age | Commit message (Collapse) | Author |
|
connections. (#696)
This was caused by a stale / invalid pointer reference that didn't even
make any sense in context anyway. Fixes #686.
|
|
No effect on JSON format output or output to a file.
Submitted by @cygnus2048, fixes #688.
|
|
This can happen with multiple parallel streams or with two single
stream tests run close together in time.
The fix is to allow flow labels to be reused by multiple sockets
simultaneously or within their timeout.
Submitted by @cygnus2048 and fixes #689.
|
|
Might be useful for other platforms as well (no effects on Linux
because the semantics of listen(2) are subtly different there).
Submitted by Matt Macy. Fixes #691.
|
|
(#682)
The user-visible symptom was messages of the following form on the
server:
iperf3: the client has unexpectedly closed the connection
This bug was introduced in #597 and was present in iperf 3.2 and 3.3.
Fixes #677.
|
|
Required to avoid implicit declarations of 'signal()' and 'time()'; which
causes compilation to error out while compiling a statically linked binary.
|
|
Fixes #673.
Submitted by @FuzzyStatic, reviewed by @ralcini.
|
|
* The canonical long-form option name is "length", not "len".
* The default length for UDP should be displayed in bytes not KB.
|
|
|
|
* Attempt to quiet a warning with print(3) formatting. As a part of this, factor out PRIu64 support / compatibility (added in #664) into a header file and make it more portable by taking into account the size of a long integer. Based on email conversation with: @pprindeville.
* Follow-up to pull request #669, fixing compiler warnings on platforms that don't have HAVE_TCP_CONGESTION defined.
|
|
Since iperf3 uses strtol() to parse these values, the user can specify
them with 0 prefix for octals and 0x for hex values.
|
|
|
|
Namely, getsock_tcp_mss(), set_tcp_options() and iperf_test_reset().
Also fix a typo in the libiperf manual;
iperf_test_reset() was listed instead of iperf_reset_test().
|
|
These reflect support for -A on Windows.
|
|
TODO: Need to update some documentation that reflects `-A` is applicable to Windows. @bmah888 to do this.
|
|
* EXIT_SUCCESS and EXIT_FAILURE are defined in stdlib.h, not sysexits.h
so no need to include the latter.
* No need to include pthread.h.
* Remove the no longer used delay() function.
This also removes the reliance on nanosleep().
* Remove get_tcp_windowsize() and set_tcp_windowsize() which are unused.
These days, iperf uses get/setsockopt() with SO_SNDBUF SO_RCVBUF directly.
|
|
Fixes (and based on a patch in) #369, with some reworking by @bmah888 and @pprindeville.
|
|
Should have been a part of #663, which fixes #607.
|
|
|
|
The getline(3) implementation comes from NetBSD's file(1) command.
This should make compiling work on macOS pre 10.7. Fixes #607.
|
|
* Fix warnings about _GNU_SOURCE being redefined.
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
* Fix warnings of format-specified mismatching type
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
* Simplify endianness checks
Linux can be built with too many types of C run-time library and it's
not reasonable to have to enumerate all of them, especially since at
least one of them (MUSL) goes out of its way to not be easily
detectable.
Instead, leverage autoconf better for Linux/BSD to detect either
<endian.h> or <sys/endian.h> directly.
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
* Sys headers should not be included directly
There's usually a top-level header which then includes the sys/
descendent.
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
|
|
Ignore nonsensical TCP MSS when trying to compute the default UDP packet size. This fix seems to be primarily needed for Windows systems, but it's a good bit of sanity checking to do in any case.
|
|
This fixes a problem described in issue #623 where the PID file
opened by a running instance of iperf3 could be overwritten /
deleted by a subsequent invocation of iperf3.
|
|
Pointed out by: @pprindeville
Should have been found by: @bmah888
|
|
Reset authentication token between tests. Fixes #650.
|
|
This addresses a problem where the --tos parameter would incorrectly
"stick" on the server, causing wrong TOS values to be inserted into
packets during --reverse tests. Fixes #639.
|
|
Seems to fix #645.
|
|
Avoid walking off the end of an array when trying to format a number larger than 1000T.
Motivated by #641, as reported by @shingchuang, but slightly
reimplemented.
|
|
This comment became outdated with cba8584b2
|
|
Suggested by @pprindeville.
|
|
1. Make sure we have a valid TCP MSS on the path when comparing
the UDP block size.
2. Fix a redundant "warning".
This should fix a bug observed on Windows but not (so far) on any
UNIX-like platforms. Fixes #608.
|
|
|
|
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
|
|
Fixes #610, pointed out by @borenius-dfn-de.
|
|
Based on text by @eriitguy, fixes #480.
|
|
This avoids a leak of file descriptors.
|
|
|
|
This is mostly a cosmetic fix...due to timing differences or
interference from data packets, it is possible that the server
will have a very small last measurement window, possibly with
no data transferred. This looks odd (although it's not incorrect)
and we'd like to eliminate these. If there's an interval
(presumably it'd be the last measurement interval) less than
10% of the length of a standard measurement/reporting interval,
and there are no bytes transferred in the interval, then suppress
printing the results and don't add them to the grand total.
|
|
* Towards issue #457. Try to not count the sequence number
gaps resulting from out-of-order packets as actual losses.
* Put all of the UDP diagnostic output behind the --debug flag.
|
|
Attempt to fix some brokenness in -F from #301.
In some work related to #125, we introduced a bug in which
chunks of a file being read for the -F option were not
completely sent, particularly with TCP sockets. We attempt
to fix this by detecting cases in which not all data passed
to a socket could be actually sent (for example due to full
socket buffers) and preserving that data for future send
iterations.
The ending statistics in the "diskfile" JSON structure were
wrong, and did not properly distinguish between sender-side
and receiver-side statistics. This has been fixed (at least
for the client side).
Specifically mention in the manpage that "iperf -F" is not
a file transfer tool.
|
|
Improve the compatibility of iperf_api.h with C++ so that libiperf can more easily be used with C++ programs.
This involves function declarations as extern "C" and inclusion of a couple of more headers (which arguably improves the C use case).
|
|
|
|
|
|
* s/bandwidth/bitrate/ in user-facing places. Towards #583.
iperf3 has long misused terminology; bandwidth is a measure of
capacity. iperf3 measures bitrate or throughput. We standardize
on "bitrate" because it begins with the same letter as "bandwidth"
(to match the -b command-line option).
User-facing output mentioning "bandwidth" now uses "bitrate".
The long command-line option for -b (--bandwidth) is now --bitrate
(--bandwidth is transparently accepted for backward compatibility).
A few places in documentation that talk about bandwidth as a
measured value have been reworded to use bitrate or throughput.
There are a number of places in code where variables are still
called "bandwidth". We leave these alone for now.
A mention of "bandwidth" in the test parameters JSON also needs
to remain unchanged to avoid breaking compatibility. However,
the test results JSON never used the term "bandwidth" in
the first place.
* s/bandwidth/throughput in one place in RPM description. Towards #583.
|
|
|
|
|
|
Having hostname and microsecond timestamp in the cookie is not
necessary. Also fill test buffer with data from /dev/urandom
instead of using random().
|
|
|
|
|
|
* Add configurable timeout for the setup of the control connection.
This is specified using the new --connect-timeout option, with an
integer parameter in ms. The iperf3 client will wait for this
amount of time for the setup of the control connection to the
server. If this option is not given, the OS default for TCP
connection setup is used. Specifying a smaller connection timeout
allows faster detection of a down / unresponsive iperf3 server.
The implementation uses a variation on the timeout_connect()
function from OpenBSD's netcat utility.
Fixes #216.
|