View | Details | Raw Unified | Return to bug 2719 | Differences between
and this patch

Collapse All | Expand All

(-)a/sftp.c (+19 lines)
Lines 220-225 cmd_interrupt(int signo) Link Here
220
	errno = olderrno;
220
	errno = olderrno;
221
}
221
}
222
222
223
/*ARGSUSED*/
224
static void
225
sigchld_handler(int sig)
226
{
227
	int save_errno = errno;
228
	pid_t pid;
229
	const char msg[] = "\rConnection closed.  \n";
230
231
	/* Report if ssh transport process dies. */
232
	while ((pid = waitpid(sshpid, NULL, WNOHANG)) == -1 && errno == EINTR)
233
		continue;
234
	if (pid == sshpid)
235
		(void)write(STDERR_FILENO, msg, sizeof(msg) - 1);
236
237
	errno = save_errno;
238
}
239
223
static void
240
static void
224
help(void)
241
help(void)
225
{
242
{
Lines 2119-2124 interactive_loop(struct sftp_conn *conn, char *file1, char *file2) Link Here
2119
		if (err != 0)
2136
		if (err != 0)
2120
			break;
2137
			break;
2121
	}
2138
	}
2139
	signal(SIGCHLD, SIG_DFL);
2122
	free(remote_path);
2140
	free(remote_path);
2123
	free(conn);
2141
	free(conn);
2124
2142
Lines 2171-2176 connect_to_server(char *path, char **args, int *in, int *out) Link Here
2171
	signal(SIGTERM, killchild);
2189
	signal(SIGTERM, killchild);
2172
	signal(SIGINT, killchild);
2190
	signal(SIGINT, killchild);
2173
	signal(SIGHUP, killchild);
2191
	signal(SIGHUP, killchild);
2192
	signal(SIGCHLD, sigchld_handler);
2174
	close(c_in);
2193
	close(c_in);
2175
	close(c_out);
2194
	close(c_out);
2176
}
2195
}

Return to bug 2719