Skip to content
Snippets Groups Projects
Commit 0653fa10 authored by Yang Tse's avatar Yang Tse
Browse files

signal handling to cleanup on SIGINT and SIGTERM, followup

parent ebe53390
No related branches found
No related tags found
No related merge requests found
......@@ -879,6 +879,9 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
}
}
if(got_exit_signal)
return -1;
dump = fopen(RESPONSE_DUMP, "ab"); /* b is for windows-preparing */
if(!dump) {
error = ERRNO;
......@@ -951,13 +954,27 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
if(cmdsize > 0 ) {
char command[32];
int quarters;
int num;
ptr=cmd;
do {
if(2 == sscanf(ptr, "%31s %d", command, &num)) {
if(!strcmp("wait", command)) {
logmsg("Told to sleep for %d seconds", num);
sleep(num); /* wait this many seconds */
quarters = num * 4;
while(quarters > 0) {
quarters--;
res = wait_ms(250);
if(got_exit_signal)
quarters = 0;
if(res) {
/* should not happen */
error = SOCKERRNO;
logmsg("wait_ms() failed with error: (%d) %s",
error, strerror(error));
quarters = 0;
}
}
}
else
logmsg("Unknown command in reply command section");
......
......@@ -203,7 +203,7 @@ int wait_ms(int timeout_ms)
if(r != -1)
break;
error = SOCKERRNO;
if(error == EINVAL)
if(error && (error != EINTR))
break;
pending_ms = timeout_ms - (int)curlx_tvdiff(curlx_tvnow(), initial_tv);
if(pending_ms <= 0)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment