Added error string for server timeout on client call.
authorJeremy Allison <jra@samba.org>
Tue, 1 Oct 2002 01:33:05 +0000 (01:33 +0000)
committerJeremy Allison <jra@samba.org>
Tue, 1 Oct 2002 01:33:05 +0000 (01:33 +0000)
Jeremy.
(This used to be commit abeebf33c132c4975ac5dadde57c22176ddc9fda)

source3/include/client.h
source3/libsmb/clientgen.c
source3/libsmb/clierror.c

index 1e8d1c3d2932f79f50ea8b6ffe87fefb3913f570..7a8889edc5220b5e93e0955dd49b22c83084b8a8 100644 (file)
@@ -70,6 +70,7 @@ typedef struct smb_sign_info {
 struct cli_state {
        int port;
        int fd;
+       int smb_read_error; /* Copy of last read error. */
        uint16 cnum;
        uint16 pid;
        uint16 mid;
index 793dd19644f2de91e8c22041bdddd4daa4f4c27a..fff81545b16fb61891cc63864f3b45bf3bf8b70b 100644 (file)
@@ -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;
index e1507c6048e6a4c0c2f9e1d26e855145781a59fb..fb88b66786a4c309ce955875aacde49cd875c80c 100644 (file)
@@ -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++) {