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; } }
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); } }