# HG changeset patch # User Matt Johnston # Date 1614950000 -28800 # Node ID c584b5602bd8af8194231d1547af9aaf9c64adbb # Parent 8df3d6aa5f238dedccc33fb3218af11b349ac3a6 Return errstring on connect failure diff -r 8df3d6aa5f23 -r c584b5602bd8 channel.h --- a/channel.h Thu Mar 04 23:57:12 2021 +0800 +++ b/channel.h Fri Mar 05 21:13:20 2021 +0800 @@ -104,7 +104,7 @@ void (*cleanup)(const struct Channel*); }; -/* Callback for connect_remote */ +/* Callback for connect_remote. errstring may be NULL if result == DROPBEAR_SUCCESS */ void channel_connect_done(int result, int sock, void* user_data, const char* errstring); void chaninitialise(const struct ChanType *chantypes[]); diff -r 8df3d6aa5f23 -r c584b5602bd8 common-channel.c --- a/common-channel.c Thu Mar 04 23:57:12 2021 +0800 +++ b/common-channel.c Fri Mar 05 21:13:20 2021 +0800 @@ -356,8 +356,7 @@ * if so, set up the channel properly. Otherwise, the channel is cleaned up, so * it is important that the channel reference isn't used after a call to this * function */ -void channel_connect_done(int result, int sock, void* user_data, const char* UNUSED(errstring)) { - +void channel_connect_done(int result, int sock, void* user_data, const char* errstring) { struct Channel *channel = user_data; TRACE(("enter channel_connect_done")) @@ -373,9 +372,9 @@ else { send_msg_channel_open_failure(channel->remotechan, - SSH_OPEN_CONNECT_FAILED, "", ""); + SSH_OPEN_CONNECT_FAILED, errstring, ""); remove_channel(channel); - TRACE(("leave check_in_progress: fail")) + TRACE(("leave check_in_progress: fail. internal errstring: %s", errstring)) } }