Commit 5632e02d authored by Max Lv's avatar Max Lv

ignore all SIGPIPE

parent 4526eb58
No preview for this file type
...@@ -157,7 +157,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { ...@@ -157,7 +157,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) {
response.ver = VERSION; response.ver = VERSION;
response.method = 0; response.method = 0;
char *send_buf = (char *)&response; char *send_buf = (char *)&response;
send(server->fd, send_buf, sizeof(response), MSG_NOSIGNAL); send(server->fd, send_buf, sizeof(response), 0);
server->stage = 1; server->stage = 1;
return; return;
} else if (server->stage == 1) { } else if (server->stage == 1) {
...@@ -171,7 +171,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { ...@@ -171,7 +171,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) {
response.rsv = 0; response.rsv = 0;
response.atyp = 1; response.atyp = 1;
char *send_buf = (char *)&response; char *send_buf = (char *)&response;
send(server->fd, send_buf, 4, MSG_NOSIGNAL); send(server->fd, send_buf, 4, 0);
close_and_free_remote(EV_A_ remote); close_and_free_remote(EV_A_ remote);
close_and_free_server(EV_A_ server); close_and_free_server(EV_A_ server);
return; return;
...@@ -225,7 +225,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { ...@@ -225,7 +225,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) {
= (unsigned short) htons(atoi(_remote_port)); = (unsigned short) htons(atoi(_remote_port));
int reply_size = 4 + sizeof(struct in_addr) + sizeof(unsigned short); int reply_size = 4 + sizeof(struct in_addr) + sizeof(unsigned short);
int r = send(server->fd, server->buf, reply_size, MSG_NOSIGNAL); int r = send(server->fd, server->buf, reply_size, 0);
if (r < reply_size) { if (r < reply_size) {
LOGE("header not complete sent\n"); LOGE("header not complete sent\n");
close_and_free_remote(EV_A_ remote); close_and_free_remote(EV_A_ remote);
...@@ -334,7 +334,7 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) { ...@@ -334,7 +334,7 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) {
} }
} }
decrypt(server->buf, r, server->d_ctx); decrypt(server->buf, r, server->d_ctx);
int w = send(server->fd, server->buf, r, MSG_NOSIGNAL); int w = send(server->fd, server->buf, r, 0);
if(w < 0) { if(w < 0) {
if (errno == EAGAIN) { if (errno == EAGAIN) {
// no data, wait for send // no data, wait for send
...@@ -670,6 +670,8 @@ int main (int argc, char **argv) ...@@ -670,6 +670,8 @@ int main (int argc, char **argv)
fclose(file); fclose(file);
} }
signal(SIGPIPE, SIG_IGN);
// init global variables // init global variables
_server = strdup(server); _server = strdup(server);
_remote_port = strdup(remote_port); _remote_port = strdup(remote_port);
......
...@@ -121,6 +121,8 @@ static int create_subprocess(const int rdt, const char *cmd, char *const argv[], ...@@ -121,6 +121,8 @@ static int create_subprocess(const int rdt, const char *cmd, char *const argv[],
if(pid == 0){ if(pid == 0){
signal(SIGPIPE, SIG_IGN);
if (envp) { if (envp) {
for (; *envp; ++envp) { for (; *envp; ++envp) {
putenv(*envp); putenv(*envp);
...@@ -145,6 +147,9 @@ static int create_subprocess(const int rdt, const char *cmd, char *const argv[], ...@@ -145,6 +147,9 @@ static int create_subprocess(const int rdt, const char *cmd, char *const argv[],
exit(0); exit(0);
} else { } else {
signal(SIGPIPE, SIG_IGN);
*pProcessId = (int) pid; *pProcessId = (int) pid;
dup2(pfds[1], 1); dup2(pfds[1], 1);
......
No preview for this file type
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment