I noticed that, although most error reports during libpq's connection setup code append to conn->errorMessage, the ones in fe-auth.c and fe-auth-scram.c don't: they're all printfPQExpBuffer() not appendPQExpBuffer(). This seems wrong to me. It makes no difference in simple cases with a single target server, but as soon as you have multiple servers listed in "host", this coding makes it impossible to tell which server rejected your login.
So I think we should basically s/printfPQExpBuffer/appendPQExpBuffer/g anywhere those files touch conn->errorMessage, allowing any problems with previous servers to be preserved in the eventually-reported message. I won't bother posting an actual patch for that right now, but has anyone got an objection? regards, tom lane