* Reimplement a number of socket option tests for autoconf-2.71.
* Reimplement configure test for IP DF.
* Use AC_PREREQ. Configuration scripts must be rebuilt with autoconf-2.71 or newer.
* Removed obsolete/unneeded tests and in general improve compatibility with autoconf-2.71.
* Draft release notes for iperf-3.10.
* iperf-3.10 version number bumps.
* Update using autoupdate-2.71 from Xcode 12 on macOS Big Sur.
* Regen.
* docs: Add release notes for recent changes.
tcp_info.snd_wnd is available on FreeBSD and NetBSD since TCP_INFO was
added. It was added to Linux 5.4 in late 2019 and becomes available
in Ubuntu 20.04 and Debian 11.
Tested on:
* Debian 11 running on x86-64 with this field.
* Debian 10 armv7 running on Raspberry Pi 2 without this field.
* NetBSD 9.2 armv7 running on Raspberry Pi 3 with this field.
* FreeBSD 13 aarch64 running on Raspberry Pi 4 with this field.
If the buffer happens to be holding exactly a sending chunk size,
we no longer arbitrarily quit.
While here, use equivalent, easier-to-read tests in a couple places.
Discussed with @hanvari
Follow-up to #1115.
Issue: `diskfile_send()` unconditional call to `sp->snd2`
would result in sending full buffer size everytime,
regardless of the file size.
Fix: The function updated to check for end-of-file (reading 0 bytes)
and,
1. set `sp->pending_size` to appropriate data length available to be sent
2. check for end condition and avoid sending data more than file size.
Note: The fix is only for the maximum cap on the data size sent on the network.
If other parameters (-t, -n, etc.) yield smaller size or shorter time then needed,
the file will still be partially sent to the network.
In theory this check should always succeed, given the relative
buffer sizes as currently coded.
Suggested by @grigorescu
Related to #1134.
(cherry picked from commit c3578291ca)
Signed-off-by: Bruce A. Mah <bmah@es.net>
This is a mostly-cosmetic reimplementation of pull request #1128.
Original commit log:
Fix two issues that caused an active TCP test to terminate if a new
connection request was received while in streams creation phase.
One issue was in iperf_tcp_accept() - after identifying that the cookies
of the new connection if from a new client, error was returned which
caused the active test to terminate. The other issue was in
iperf_run_server() where congestion alg was set for the new client,
although the stream to it was already closed by iperf_tcp_accept().
That also cause the active test to terminate.
Another minor issue that was fixed is that after a client received a
failure state (negative state) from the server, iperf_client_end()
still tried to send back IPERF_DONE to the server. That caused the
client to issue failure message of "unable to send control message:
Connection reset by peer" instead of "the server is busy running a test".
Originally submitted by: @davidBar-On
This prevents an "undefined socket" error, which can be incorrect if
the control connection didn't get opened due to a (for example)
"connection refused" type error.
This can be tested by running iperf3 in client mode and pointing it
towards a non-existent (or not-running) server.
Fixes#1129 (#1132 was an earlier, partial fix).