Line # Revision Author
1 8 ahitrov@rambler.ru --- src/include/httpd.h.orig 2008-11-13 18:34:02.000000000 +0300
2 +++ src/include/httpd.h 2008-11-13 18:34:30.000000000 +0300
3 @@ -668,6 +668,7 @@
4 const char *hostname; /* Host, as set by full URI or Host: */
5
6 time_t request_time; /* When the request started */
7 + struct timeval request_utime; /* When the request started (usec) */
8
9 const char *status_line; /* Status line, if set by script */
10 int status; /* In any case */
11 --- src/main/http_main.c.orig 2008-11-13 18:32:38.000000000 +0300
12 +++ src/main/http_main.c 2008-11-13 18:33:06.000000000 +0300
13 @@ -1589,6 +1589,7 @@
14 /* in some cases we come here before setting the time */
15 if (log_req->request_time == 0) {
16 log_req->request_time = time(NULL);
17 + gettimeofday(&log_req->request_utime,NULL);
18 }
19 ap_log_transaction(log_req);
20 }
21 --- src/main/http_protocol.c.orig 2008-11-13 18:33:21.000000000 +0300
22 +++ src/main/http_protocol.c 2008-11-13 18:33:48.000000000 +0300
23 @@ -1007,6 +1007,7 @@
24 ap_bsetflag(conn->client, B_SAFEREAD, 0);
25
26 r->request_time = time(NULL);
27 + gettimeofday(&r->request_utime,NULL);
28 r->the_request = ap_pstrdup(r->pool, l);
29 r->method = ap_getword_white(r->pool, &ll);
30 uri = ap_getword_white(r->pool, &ll);
31 --- src/modules/standard/mod_log_config.c.orig 2008-11-13 18:27:40.000000000 +0300
32 +++ src/modules/standard/mod_log_config.c 2008-11-13 18:35:02.000000000 +0300
33 @@ -405,7 +405,13 @@
34
35 static const char *log_request_duration(request_rec *r, char *a)
36 {
37 - return ap_psprintf(r->pool, "%ld", time(NULL) - r->request_time);
38 + struct timeval tp;
39 + double tv1,tv2;
40 +
41 + tv1 = r->request_utime.tv_sec + (double)r->request_utime.tv_usec/1000000;
42 + gettimeofday(&tp, NULL);
43 + tv2 = tp.tv_sec + (double)tp.tv_usec/1000000;
44 + return ap_psprintf(r->pool, "%.3f", tv2 - tv1);
45 }
46
47 /* These next two routines use the canonical name:port so that log