summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source3/rpcclient/rpcclient.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c
index 9648c4d28fd..84504b16fba 100644
--- a/source3/rpcclient/rpcclient.c
+++ b/source3/rpcclient/rpcclient.c
@@ -257,6 +257,37 @@ static void do_command(struct client_info *info, char *tok, char *line)
}
}
+#ifndef HAVE_LIBREADLINE
+/****************************************************************************
+wait for keyboard activity, swallowing network packets
+****************************************************************************/
+static void wait_keyboard(void)
+{
+ fd_set fds;
+ struct timeval timeout;
+
+ while (1) {
+ FD_ZERO(&fds);
+ FD_SET(cli->fd,&fds);
+ FD_SET(fileno(stdin),&fds);
+
+ timeout.tv_sec = 20;
+ timeout.tv_usec = 0;
+ sys_select(MAX(cli->fd,fileno(stdin))+1,&fds,&timeout);
+
+ if (FD_ISSET(fileno(stdin),&fds))
+ return;
+
+ /* We deliberately use receive_smb instead of
+ client_receive_smb as we want to receive
+ session keepalives and then drop them here.
+ */
+ if (FD_ISSET(cli->fd,&fds))
+ receive_smb(cli->fd,cli->inbuf,0);
+ }
+}
+#endif
+
/****************************************************************************
process commands from the client
****************************************************************************/
@@ -340,7 +371,6 @@ static BOOL process( struct client_info *info, char *cmd_str)
/* Copy read line to samba buffer */
pstrcpy(line, rl_line_buffer);
- pstrcat(line, "\n");
/* Add to history */