summaryrefslogtreecommitdiffstats
path: root/source/libsmb/clierror.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/libsmb/clierror.c')
-rw-r--r--source/libsmb/clierror.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/source/libsmb/clierror.c b/source/libsmb/clierror.c
index 33c359fc2d3..30a4344555e 100644
--- a/source/libsmb/clierror.c
+++ b/source/libsmb/clierror.c
@@ -81,6 +81,33 @@ char *cli_errstr(struct cli_state *cli)
return cli_error_message;
}
+ /* Was it server socket error ? */
+ if (cli->fd == -1 && cli->smb_rw_error) {
+ switch(cli->smb_rw_error) {
+ case READ_TIMEOUT:
+ slprintf(cli_error_message, sizeof(cli_error_message) - 1,
+ "Call timed out: server did not respond after %d milliseconds",
+ cli->timeout);
+ break;
+ case READ_EOF:
+ slprintf(cli_error_message, sizeof(cli_error_message) - 1,
+ "Call returned zero bytes (EOF)\n" );
+ break;
+ case READ_ERROR:
+ slprintf(cli_error_message, sizeof(cli_error_message) - 1,
+ "Read error: %s\n", strerror(errno) );
+ break;
+ case WRITE_ERROR:
+ slprintf(cli_error_message, sizeof(cli_error_message) - 1,
+ "Write error: %s\n", strerror(errno) );
+ break;
+ default:
+ slprintf(cli_error_message, sizeof(cli_error_message) - 1,
+ "Unknown error code %d\n", cli->smb_rw_error );
+ break;
+ }
+ return cli_error_message;
+ }
/* Case #1: RAP error */
if (cli->rap_error) {