In order to bind a socket to a privileged port, the process must be
running as root. So I think it must be failing because the server process
is running as the client user ID (auth.pl does an "su" to the client user
ID to spawn the server). I assume that the server runs as the client user
ID for a reason (exporting the client environment, client permissions,
etc).
So my next question would be is there a way that the server could maybe
start executing as root to bind the socket and make the connection, then
switch to the client user ID to get the proper environment and do the
remaining "real" work? Could that work or would there still be problems
sending data over the port?