diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/lib/util_sock.c | 12 | ||||
-rw-r--r-- | source3/libsmb/clientgen.c | 16 |
2 files changed, 23 insertions, 5 deletions
diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c index 4a67fa00aa..e9859dfa17 100644 --- a/source3/lib/util_sock.c +++ b/source3/lib/util_sock.c @@ -526,6 +526,7 @@ BOOL receive_smb(int fd,char *buffer, unsigned int timeout) BOOL client_receive_smb(int fd,char *buffer, unsigned int timeout) { BOOL ret; + uint8 msg_type; for(;;) { @@ -539,9 +540,18 @@ BOOL client_receive_smb(int fd,char *buffer, unsigned int timeout) } /* Ignore session keepalive packets. */ - if(CVAL(buffer,0) != 0x85) + msg_type = CVAL(buffer,0); + if (msg_type != 0x85) break; } + if (msg_type == 0) + { + show_msg(buffer); + } + else + { + dump_data(10, buffer, smb_len(buffer) + 4); + } show_msg(buffer); return ret; } diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c index ecab198c94..efed3555ba 100644 --- a/source3/libsmb/clientgen.c +++ b/source3/libsmb/clientgen.c @@ -60,13 +60,21 @@ static BOOL cli_send_smb(struct cli_state *cli, BOOL show) ssize_t ret; BOOL reestablished=False; + len = smb_len(cli->outbuf) + 4; + if (show) { - show_msg(cli->outbuf); + uint8 msg_type = CVAL(cli->outbuf, 0); + if (msg_type == 0) + { + show_msg(cli->outbuf); + } + else + { + dump_data(10, cli->outbuf, len); + } } - len = smb_len(cli->outbuf) + 4; - while (nwritten < len) { ret = write_socket(cli->fd,cli->outbuf+nwritten,len - nwritten); if (ret <= 0 && errno == EPIPE && !reestablished) @@ -2465,7 +2473,7 @@ BOOL cli_session_request(struct cli_state *cli, retry: #endif /* WITH_SSL */ - cli_send_smb(cli, False); + cli_send_smb(cli, True); DEBUG(5,("Sent session request\n")); if (!cli_receive_smb(cli)) |