Browse Source

Merge branch 'tty'

Serj Kalichev 6 months ago
parent
commit
0f11ff3947
3 changed files with 11 additions and 3 deletions
  1. 3 3
      bin/klish/klish.c
  2. 4 0
      klish/ktp/ktp_session.c
  3. 4 0
      klish/ktp/ktpd_session.c

+ 3 - 3
bin/klish/klish.c

@@ -178,6 +178,9 @@ int main(int argc, char **argv)
 	sigaction(SIGINT, &sig_act, NULL);
 	sigaction(SIGTERM, &sig_act, NULL);
 	sigaction(SIGQUIT, &sig_act, NULL);
+	// Ignore SIGPIPE from server. Don't use SIG_IGN because it will not
+	// break syscall
+	sigaction(SIGPIPE, &sig_act, NULL);
 
 	// KTP session
 	ktp = ktp_session_new(unix_sock, eloop);
@@ -189,9 +192,6 @@ int main(int argc, char **argv)
 	// Don't stop loop on each answer
 	ktp_session_set_stop_on_answer(ktp, BOOL_FALSE);
 
-	// Ignore SIGPIPE from server
-	signal(SIGPIPE, SIG_IGN);
-
 	// Set stdin to O_NONBLOCK mode
 	stdin_flags = fcntl(STDIN_FILENO, F_GETFL, 0);
 	if (ctx.mode != MODE_STDIN)

+ 4 - 0
klish/ktp/ktp_session.c

@@ -80,6 +80,10 @@ ktp_session_t *ktp_session_new(int sock, faux_eloop_t *eloop)
 	// Async object
 	ktp->async = faux_async_new(sock);
 	assert(ktp->async);
+	// Workaround. Make buffer a large else we have lost stdin
+	// TODO: It must be refactored. So large buffer is bad idea
+	faux_async_set_write_overflow(ktp->async, 1000000000l);
+	faux_async_set_read_overflow(ktp->async, 1000000000l);
 	// Receive message header first
 	faux_async_set_read_limits(ktp->async,
 		sizeof(faux_hdr_t), sizeof(faux_hdr_t));

+ 4 - 0
klish/ktp/ktpd_session.c

@@ -101,6 +101,10 @@ ktpd_session_t *ktpd_session_new(int sock, kscheme_t *scheme,
 	// Async object
 	ktpd->async = faux_async_new(sock);
 	assert(ktpd->async);
+	// Workaround. Make buffer a large else we have lost stdin
+	// TODO: It must be refactored. So large buffer is bad idea
+	faux_async_set_write_overflow(ktpd->async, 1000000000l);
+	faux_async_set_read_overflow(ktpd->async, 1000000000l);
 	// Receive message header first
 	faux_async_set_read_limits(ktpd->async,
 		sizeof(faux_hdr_t), sizeof(faux_hdr_t));