diff options
Diffstat (limited to 'source3/libsmb')
-rw-r--r-- | source3/libsmb/clientgen.c | 2 | ||||
-rw-r--r-- | source3/libsmb/clierror.c | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c index 793dd19644..fff81545b1 100644 --- a/source3/libsmb/clientgen.c +++ b/source3/libsmb/clientgen.c @@ -69,6 +69,7 @@ static BOOL client_receive_smb(int fd,char *buffer, unsigned int timeout) BOOL cli_receive_smb(struct cli_state *cli) { + extern int smb_read_error; BOOL ret; /* fd == -1 causes segfaults -- Tom (tom@ninja.nl) */ @@ -100,6 +101,7 @@ BOOL cli_receive_smb(struct cli_state *cli) if (!ret) { close(cli->fd); cli->fd = -1; + cli->smb_read_erorr = smb_read_error; } return ret; diff --git a/source3/libsmb/clierror.c b/source3/libsmb/clierror.c index e1507c6048..fb88b66786 100644 --- a/source3/libsmb/clierror.c +++ b/source3/libsmb/clierror.c @@ -85,6 +85,14 @@ char *cli_errstr(struct cli_state *cli) return cli_error_message; } + /* Was it server timeout ? */ + if (cli->fd == -1 && cli->timeout > 0 && cli->smb_read_error == READ_TIMEOUT) { + slprintf(cli_error_message, sizeof(cli_error_message) - 1, + "Call timed out: server did not respond after %d milliseconds", + cli->timeout); + return cli_error_message; + } + /* Case #1: RAP error */ if (cli->rap_error) { for (i = 0; rap_errmap[i].message != NULL; i++) { |