diff --git a/src/os_unix.c b/src/os_unix.c
index c7c4367..fb2628c 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -4194,6 +4194,26 @@
 }
 #endif
 
+/*
+ * Send SIGINT to a child process if "c" is an interrupt character.
+ */
+    void
+may_send_sigint(int c UNUSED, pid_t pid UNUSED, pid_t wpid UNUSED)
+{
+# ifdef SIGINT
+    if (c == Ctrl_C || c == intr_char)
+    {
+#  ifdef HAVE_SETSID
+	kill(-pid, SIGINT);
+#  else
+	kill(0, SIGINT);
+#  endif
+	if (wpid > 0)
+	    kill(wpid, SIGINT);
+    }
+# endif
+}
+
     int
 mch_call_shell(
     char_u	*cmd,
@@ -4765,23 +4785,12 @@
 			 */
 			if (len == 1 && (pty_master_fd < 0 || cmd != NULL))
 			{
-# ifdef SIGINT
 			    /*
 			     * Send SIGINT to the child's group or all
 			     * processes in our group.
 			     */
-			    if (ta_buf[ta_len] == Ctrl_C
-					       || ta_buf[ta_len] == intr_char)
-			    {
-#  ifdef HAVE_SETSID
-				kill(-pid, SIGINT);
-#  else
-				kill(0, SIGINT);
-#  endif
-				if (wpid > 0)
-				    kill(wpid, SIGINT);
-			    }
-# endif
+			    may_send_sigint(ta_buf[ta_len], pid, wpid);
+
 			    if (pty_master_fd < 0 && toshell_fd >= 0
 					       && ta_buf[ta_len] == Ctrl_D)
 			    {
@@ -5360,15 +5369,26 @@
 	if (null_fd >= 0)
 	    close(null_fd);
 
+	if (pty_slave_fd >= 0)
+	{
+	    /* push stream discipline modules */
+	    SetupSlavePTY(pty_slave_fd);
+#  ifdef TIOCSCTTY
+	    /* Try to become controlling tty (probably doesn't work,
+	     * unless run by root) */
+	    ioctl(pty_slave_fd, TIOCSCTTY, (char *)NULL);
+#  endif
+	}
+
 	/* See above for type of argv. */
 	execvp(argv[0], argv);
 
 	if (stderr_works)
 	    perror("executing job failed");
-#ifdef EXITFREE
+# ifdef EXITFREE
 	/* calling free_all_mem() here causes problems. Ignore valgrind
 	 * reporting possibly leaked memory. */
-#endif
+# endif
 	_exit(EXEC_FAILED);	    /* exec failed, return failure code */
     }
 
diff --git a/src/proto/os_unix.pro b/src/proto/os_unix.pro
index cfdf0ed..46230dc 100644
--- a/src/proto/os_unix.pro
+++ b/src/proto/os_unix.pro
@@ -57,6 +57,7 @@
 void mch_set_shellsize(void);
 void mch_new_shellsize(void);
 int mch_parse_cmd(char_u *cmd, int use_shcf, char ***argv, int *argc);
+void may_send_sigint(int c, pid_t pid, pid_t wpid);
 int mch_call_shell(char_u *cmd, int options);
 void mch_job_start(char **argv, job_T *job, jobopt_T *options);
 char *mch_job_status(job_T *job);
diff --git a/src/terminal.c b/src/terminal.c
index 0ef7ae2..4af0832 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -39,8 +39,6 @@
  * - don't allow exiting Vim when a terminal is still running a job
  * - in bash mouse clicks are inserting characters.
  * - mouse scroll: when over other window, scroll that window.
- * - typing CTRL-C is not sent to the terminal.  need to setup controlling tty?
- *	#1910
  * - For the scrollback buffer store lines in the buffer, only attributes in
  *   tl_scrollback.
  * - When the job ends:
@@ -962,6 +960,17 @@
 	    /* job finished while waiting for a character */
 	    break;
 
+#ifdef UNIX
+	may_send_sigint(c, curbuf->b_term->tl_job->jv_pid, 0);
+#endif
+#ifdef WIN3264
+	if (c == Ctrl_C)
+	    /* We don't know if the job can handle CTRL-C itself or not, this
+	     * may kill the shell instead of killing the command running in the
+	     * shell. */
+	    mch_stop_job(curbuf->b_term->tl_job, "quit")
+#endif
+
 	if (c == (termkey == 0 ? Ctrl_W : termkey))
 	{
 	    int	    prev_c = c;
diff --git a/src/version.c b/src/version.c
index 25c39f1..1922837 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    839,
+/**/
     838,
 /**/
     837,
