Avoid SIGPIPE
This commit is contained in:
parent
880fd39ea9
commit
1acf98ef54
11
main2.c
11
main2.c
@ -101,15 +101,18 @@ static void consume(Client *cli, size_t n) {
|
|||||||
cli->len -= n;
|
cli->len -= n;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void transmit(Client *cli, const char *buf, size_t sz) {
|
static int transmit(Client *cli, const char *buf, size_t sz) {
|
||||||
while(sz) {
|
while(sz) {
|
||||||
ssize_t s = send(cli->fd, buf, sz, 0);
|
ssize_t s = send(cli->fd, buf, sz, MSG_NOSIGNAL);
|
||||||
|
|
||||||
if(s >= 0) {
|
if(s >= 0) {
|
||||||
buf += s;
|
buf += s;
|
||||||
sz -= s;
|
sz -= s;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void transmit_all(const char *buf, size_t sz) {
|
static void transmit_all(const char *buf, size_t sz) {
|
||||||
@ -306,7 +309,9 @@ static int handle(Client *cli) {
|
|||||||
size_t rsize = cli->len;
|
size_t rsize = cli->len;
|
||||||
int pret = phr_decode_chunked(&cli->chudec, cli->buf, &rsize);
|
int pret = phr_decode_chunked(&cli->chudec, cli->buf, &rsize);
|
||||||
|
|
||||||
if(pret == -1) return 0;
|
if(pret == -1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
stream_step(cli->buf, rsize);
|
stream_step(cli->buf, rsize);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user