r22929: Attempt to fix some build farm failures: On port 139 the first
authorVolker Lendecke <vlendec@samba.org>
Wed, 16 May 2007 09:53:41 +0000 (09:53 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:22:10 +0000 (12:22 -0500)
successful packet gives len==0 from the server, so the = in

        if (len <= 0) {

in line 136 of clientgen.c throws a failure.

Jeremy, please fix this properly, I'm not merging this to 3_0_26 so that
you can filter it when you merge.

Volker
(This used to be commit 9c5111d8c5064a43762d7d0146acff5e7691dafd)

source3/libsmb/cliconnect.c
source3/libsmb/clientgen.c

index 86834ad081b6fd7508d0ba60c20d442d8a5adf25..f13aa21fbdd88c0f5867c5f9a12ec0fd1590eff4 100644 (file)
@@ -1347,7 +1347,7 @@ BOOL cli_session_request(struct cli_state *cli,
        cli_send_smb(cli);
        DEBUG(5,("Sent session request\n"));
 
-       if (!cli_receive_smb(cli))
+       if (!cli_receive_sessionreply(cli))
                return False;
 
        if (CVAL(cli->inbuf,0) == 0x84) {
index 9021d1a36280ba678ac03df4f249b395addd87f8..92a9678de5653383f6eef10c0729ee54023970e0 100644 (file)
@@ -190,6 +190,32 @@ BOOL cli_receive_smb_return_keepalive(struct cli_state *cli)
        return cli_receive_smb_internal(cli, False);
 }
 
+/****************************************************************************
+ Recv an smb session reply
+****************************************************************************/
+
+BOOL cli_receive_sessionreply(struct cli_state *cli)
+{
+       ssize_t len;
+
+       /* fd == -1 causes segfaults -- Tom (tom@ninja.nl) */
+       if (cli->fd == -1)
+               return False; 
+
+       len = client_receive_smb(cli, False, 0);
+
+       /* If the server is not responding, note that now */
+       if (len < 0) {
+                DEBUG(0, ("Receiving SMB: Server stopped responding\n"));
+               cli->smb_rw_error = smb_read_error;
+               close(cli->fd);
+               cli->fd = -1;
+               return False;
+       }
+
+       return True;
+}
+
 /****************************************************************************
  Read the data portion of a readX smb.
  The timeout is in milliseconds