int count = 0;
char c;
+ alarm(HEADER_READ_TIMEOUT);
while (1) {
if (hdr_cnt <= 0) {
hdr_cnt = safe_read(STDIN_FILENO, hdr_buf, sizeof(hdr_buf));
continue;
if (c == '\n') {
iobuf[count] = '\0';
- return count;
+ break;
}
if (count < (IOBUF_SIZE - 1)) /* check overflow */
count++;
/*
* Handle timeouts
*/
-static void exit_on_signal(int sig) NORETURN;
-static void exit_on_signal(int sig UNUSED_PARAM)
+static void send_REQUEST_TIMEOUT_and_exit(int sig) NORETURN;
+static void send_REQUEST_TIMEOUT_and_exit(int sig UNUSED_PARAM)
{
send_headers_and_exit(HTTP_REQUEST_TIMEOUT);
}
bb_error_msg("connected");
}
- /* Install timeout handler */
- signal_no_SA_RESTART_empty_mask(SIGALRM, exit_on_signal);
- alarm(HEADER_READ_TIMEOUT);
+ /* Install timeout handler. get_line() needs it. */
+ signal(SIGALRM, send_REQUEST_TIMEOUT_and_exit);
if (!get_line()) /* EOF or error or empty line */
send_headers_and_exit(HTTP_BAD_REQUEST);
/* Read until blank line for HTTP version specified, else parse immediate */
while (1) {
- alarm(HEADER_READ_TIMEOUT);
if (!get_line())
break; /* EOF or error or empty line */
if (DEBUG)