diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c index 6ad3bf9..297d6a7 100644 --- a/source3/libsmb/libsmb_server.c +++ b/source3/libsmb/libsmb_server.c @@ -252,6 +252,7 @@ SMBC_server_internal(TALLOC_CTX *ctx, uint32 fs_attrs = 0; const char *username_used; NTSTATUS status; + NTSTATUS status_try_first; char *newserver, *newshare; zero_sockaddr(&ss); @@ -435,6 +436,7 @@ again: status = cli_connect(c, server_n, &ss); if (!NT_STATUS_IS_OK(status)) { + status_try_first = status; /* First connection attempt failed. Try alternate port. */ c->port = port_try_next; @@ -442,7 +444,12 @@ again: status = cli_connect(c, server_n, &ss); if (!NT_STATUS_IS_OK(status)) { cli_shutdown(c); - errno = ETIMEDOUT; + if(NT_STATUS_EQUAL(status_try_first, + NT_STATUS_CONNECTION_REFUSED)){ + errno = ECONNREFUSED; + }else{ + errno = ETIMEDOUT; + } return NULL; } }