D. J. Bernstein
TCP/IP
ucspi-tcp

Upgrading from previous versions of ucspi-tcp

0.84 to 0.86 or 0.87

There are sweeping internal changes in 0.86; almost all of the code has been rewritten.

tcpclient, tcpserver, and rblsmtpd now use the DNS library from djbdns to perform DNS lookups. This improves reliability, reduces memory consumption, and adds new name-qualification features. It's conceivable, however, that someone is relying on some other client feature provided by the system's res routines but not by my library. If you notice any differences in DNS behavior, please let me know.

The tcprulescheck interface has changed. It now uses environment variables instead of command-line arguments.

The -R option to rblsmtpd is now called -c. If you're using -b or -c, make sure that they appear before -r.

The old antirbl program is gone. You should convert an rblsmtpd+antirbl chain to a single rblsmtpd with a series of -r and -a options.

The old fixcr program is gone. There's a new, easier-to-use fixcrio program.

All the programs now use my pathexec library to run other programs, instead of execvp. If you've written a shell script without #!/bin/sh, and you're relying on execvp to invoke /bin/sh anyway, you'll have to insert #!/bin/sh at the top of the script to make it work with pathexec (or execve).

http@ now does a slightly better imitation of a browser: it sends Host to the HTTP server. In some cases this changes the response.

Future versions of tcpclient and tcpserver may use -D by default. If you want -d for some reason, set it explicitly.

tcpserver has a new -U option that reads environment variables set by envuidgid. You will probably want to use this in place of -u and -g so that you don't have to copy numeric uids and gids.

0.86 or 0.87 to 0.88

tcpclient uses a new strategy for connecting to multiple IP addresses: it tries each address with a 2-second timeout, then retries the addresses that timed out with a 58-second timeout. This drastically reduces latency when some of the addresses are unresponsive. (A system-supported connect-to-multiple-addresses feature would be even better.) It's conceivable, however, that someone is relying on the old behavior.