Add xasprintf() to the suggested alternatives, it can replace the malloc()+sprintf() idiom.
Connection cache sanitisation

No change in functionality hopefully.
Make connection cache aware of port and flags.
Move forgotten files to proper directory.
Enable a bunch of cf-serverd acceptance tests to test multiple protocol versions and connect to multiple servers.
Reindent huge messy function in order while tracking down bug.
Report proper server host in "copying from" message

Previously it was always reporting the first entry from the "servers"
list in body copy_from, even when it was trying in the 2nd, 3rd etc
entries after having failed in the first.
Rename function to state that it marks conn as busy.
Bring back message lost in refactoring.
Unsuccessfully tried to enable both protocols in the trustkey=false test.
typo
More latest classic+latest protocol test coverage.
Rename "type" to the "protocol".
No change in functionality, just unfactoring the refactoring

A part of it at least...
Proper English.
Do not compare complex structs with memcmp(), there are no guarantees about padding!
Merge pull request #1955 from jimis/conn_cache

Connection cache now takes into account port and flags of body copy_from.