Beispiel #1
0
void network_end_process(epdata_t *epd)
{
    epd->status = STEP_WAIT;

    int i = 0;
    int response_code = 0;

    if(epd->iov[0].iov_base) {
        char *hl = strtok(epd->iov[0].iov_base, "\n");

        if(hl) {
            hl = strtok(hl, " ");
            hl = strtok(NULL, " ");

            if(hl) {
                response_code = atoi(hl);
            }
        }
    }

    free(epd->iov[0].iov_base);
    epd->iov[0].iov_base = NULL;

    for(i = 0; i < epd->iov_buf_count; i++) {
        free(epd->iov[i].iov_base);
        epd->iov[i].iov_base = NULL;
        epd->iov[i].iov_len = 0;
    }

    epd->iov_buf_count = 0;

    long ttime = longtime();

    if(ACCESS_LOG) log_writef(ACCESS_LOG,
                                  "%s - - [%s] %s \"%s %s %s\" %d %d %d \"%s\" \"%s\" %.3f\n",
                                  inet_ntoa(epd->client_addr),
                                  now_lc,
                                  epd->host ? epd->host : "-",
                                  epd->method ? epd->method : "-",
                                  epd->uri ? epd->uri : "/",
                                  epd->http_ver ? epd->http_ver : "-",
                                  response_code,
                                  epd->response_content_length,
                                  epd->response_content_length - epd->response_header_length,
                                  epd->referer ? epd->referer : "-",
                                  epd->user_agent ? epd->user_agent : "-",
                                  (float)(ttime - epd->start_time) / 1000);

    if(epd->keepalive == 1 && !check_process_for_exit()) {
        update_timeout(epd->timeout_ptr, STEP_WAIT_TIMEOUT);
        free_epd_request(epd);

    } else {
        close_client(epd);
        return;
    }
}
Beispiel #2
0
static void on_exit_handler()
{
    if(exited) {
        return;
    }

    now += 10;
    serv_status.waiting_counts = 0;
    serv_status.reading_counts = 0;
    serv_status.sending_counts = 0;
    serv_status.active_counts = 0;
    sync_serv_status();

    exited = 1;
    sync_logs(ACCESS_LOG);
    LOGF(ALERT, "worker %d exited", worker_n);

    if(getarg("gcore") && !check_process_for_exit()) {
        char cmd[50] = {0};
        sprintf(cmd, "gcore -o dump %u", getpid());
        system(cmd);
    }
}