| 1 | 3 | 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 |