httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Jagielski <...@hyperreal.com>
Subject cvs commit: apache/src Configuration.tmpl Makefile.tmpl buff.h http_protocol.c http_protocol.h mod_status.c
Date Mon, 27 May 1996 21:08:33 GMT
jim         96/05/27 14:08:32

  Modified:    src       Configuration.tmpl Makefile.tmpl buff.h
                        http_protocol.c  http_protocol.h mod_status.c
  Log:
  Add in Ben's rprintf() capability
  
  Revision  Changes    Path
  1.14      +3 -1      apache/src/Configuration.tmpl
  
  Index: Configuration.tmpl
  ===================================================================
  RCS file: /export/home/cvs/apache/src/Configuration.tmpl,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -C3 -r1.13 -r1.14
  *** Configuration.tmpl	1996/04/17 10:29:01	1.13
  --- Configuration.tmpl	1996/05/27 21:08:26	1.14
  ***************
  *** 102,108 ****
    #AUX_CFLAGS= -DSCO
    #AUX_LIBS= -lPW -lsocket -lmalloc -lcrypt_i
    # For SCO OpenServer Release 5
  ! #AUX_CFLAGS= -DSCO5
    #AUX_LIBS=-lsocket -lmalloc -lprot
    # For SVR4
    #AUX_CFLAGS= -DSVR4
  --- 102,110 ----
    #AUX_CFLAGS= -DSCO
    #AUX_LIBS= -lPW -lsocket -lmalloc -lcrypt_i
    # For SCO OpenServer Release 5
  ! # -K noinline is needed to work around an optimiser bug which appears in
  ! # mod_bprintf.c
  ! #AUX_CFLAGS= -DSCO5 -K noinline
    #AUX_LIBS=-lsocket -lmalloc -lprot
    # For SVR4
    #AUX_CFLAGS= -DSVR4
  
  
  
  1.10      +6 -5      apache/src/Makefile.tmpl
  
  Index: Makefile.tmpl
  ===================================================================
  RCS file: /export/home/cvs/apache/src/Makefile.tmpl,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -C3 -r1.9 -r1.10
  *** Makefile.tmpl	1996/05/07 18:58:08	1.9
  --- Makefile.tmpl	1996/05/27 21:08:27	1.10
  ***************
  *** 5,11 ****
    
    OBJS= alloc.o http_main.o http_core.o http_config.o http_request.o \
      http_log.o http_protocol.o rfc1413.o util.o util_script.o modules.o buff.o\
  !   md5c.o util_md5.o explain.o $(MODULES)
    
    .c.o:
    	$(CC) -c $(CFLAGS) $(AUX_CFLAGS) $<
  --- 5,11 ----
    
    OBJS= alloc.o http_main.o http_core.o http_config.o http_request.o \
      http_log.o http_protocol.o rfc1413.o util.o util_script.o modules.o buff.o\
  !   md5c.o util_md5.o explain.o http_bprintf.o $(MODULES)
    
    .c.o:
    	$(CC) -c $(CFLAGS) $(AUX_CFLAGS) $<
  ***************
  *** 51,70 ****
    http_core.o rfc1413.o: rfc1413.h
    
    #Modules
  ! $(MODULES): http_config.h
    mod_dld.o: http_conf_globals.h
    mod_ai_backcompat.o mod_auth.o mod_auth_dbm.o mod_cgi.o mod_dir.o: http_core.h
    mod_access.o mod_imap.o mod_include.o mod_negotiation.o: http_core.h
    mod_asis.o mod_auth.o mod_auth_dbm.o mod_cgi.o mod_dir.o: http_core.h
  ! mod_cookies.o mod_log_common.o: http_core.h
    mod_access.o mod_proxy.o mod_imap.o mod_include.o mod_negotiation.o: http_log.h
    mod_proxy.o mod_asis.o mod_cgi.o mod_dir.o mod_imap.o: http_main.h
  ! mod_include.o: http_main.h
    mod_proxy.o mod_asis.o mod_auth.o mod_auth_dbm.o mod_cgi.o: http_protocol.h
  ! mod_dir.o: http_protocol.h
    mod_imap.o mod_include.o: http_protocol.h
    mod_cgi.o mod_dir.o mod_imap.o mod_include.o mod_negotiation.o: http_request.h
    mod_proxy.o: md5.h
    mod_asis.o mod_cgi.o mod_dir.o mod_imap.o mod_include.o: util_script.h
    mod_digest.o: util_md5.h
    mod_status.o: scoreboard.h
  --- 51,71 ----
    http_core.o rfc1413.o: rfc1413.h
    
    #Modules
  ! $(MODULES): http_config.h httpd.h
    mod_dld.o: http_conf_globals.h
    mod_ai_backcompat.o mod_auth.o mod_auth_dbm.o mod_cgi.o mod_dir.o: http_core.h
    mod_access.o mod_imap.o mod_include.o mod_negotiation.o: http_core.h
    mod_asis.o mod_auth.o mod_auth_dbm.o mod_cgi.o mod_dir.o: http_core.h
  ! mod_status.o mod_cookies.o mod_log_common.o: http_core.h
    mod_access.o mod_proxy.o mod_imap.o mod_include.o mod_negotiation.o: http_log.h
    mod_proxy.o mod_asis.o mod_cgi.o mod_dir.o mod_imap.o: http_main.h
  ! mod_status.o mod_include.o: http_main.h
    mod_proxy.o mod_asis.o mod_auth.o mod_auth_dbm.o mod_cgi.o: http_protocol.h
  ! mod_status.o mod_dir.o: http_protocol.h
    mod_imap.o mod_include.o: http_protocol.h
    mod_cgi.o mod_dir.o mod_imap.o mod_include.o mod_negotiation.o: http_request.h
    mod_proxy.o: md5.h
  + mod_status.o: util_script.h
    mod_asis.o mod_cgi.o mod_dir.o mod_imap.o mod_include.o: util_script.h
    mod_digest.o: util_md5.h
    mod_status.o: scoreboard.h
  
  
  
  1.4       +4 -0      apache/src/buff.h
  
  Index: buff.h
  ===================================================================
  RCS file: /export/home/cvs/apache/src/buff.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -C3 -r1.3 -r1.4
  *** buff.h	1996/05/08 15:28:20	1.3
  --- buff.h	1996/05/27 21:08:27	1.4
  ***************
  *** 50,55 ****
  --- 50,57 ----
     *
     */
    
  + #include <stdarg.h>
  + 
    /* Reading is buffered */
    #define B_RD     (1)
    /* Writing is buffered */
  ***************
  *** 110,115 ****
  --- 112,119 ----
    extern int bflush(BUFF *fb);
    extern int bputs(const char *x, BUFF *fb);
    extern int bvputs(BUFF *fb, ...);
  + extern int bprintf(BUFF *fb,const char *fmt,...);
  + extern int vbprintf(BUFF *fb,const char *fmt,va_list vlist);
    
    /* Internal routines */
    extern int bflsbuf(int c, BUFF *fb);
  
  
  
  1.20      +12 -0     apache/src/http_protocol.c
  
  Index: http_protocol.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/http_protocol.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -C3 -r1.19 -r1.20
  *** http_protocol.c	1996/04/29 03:55:32	1.19
  --- http_protocol.c	1996/05/27 21:08:28	1.20
  ***************
  *** 747,752 ****
  --- 747,764 ----
        return bputs(str, r->connection->client);
    }
    
  + int rprintf(request_rec *r,const char *fmt,...)
  +     {
  +     va_list vlist;
  +     int n;
  + 
  +     if(r->connection->aborted) return EOF;
  +     va_start(vlist,fmt);
  +     n=vbprintf(r->connection->client,fmt,vlist);
  +     va_end(vlist);
  +     return n;
  +     }
  + 
    int
    rvputs(request_rec *r, ...)
    {
  
  
  
  1.6       +3 -2      apache/src/http_protocol.h
  
  Index: http_protocol.h
  ===================================================================
  RCS file: /export/home/cvs/apache/src/http_protocol.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -C3 -r1.5 -r1.6
  *** http_protocol.h	1996/03/21 03:50:15	1.5
  --- http_protocol.h	1996/05/27 21:08:28	1.6
  ***************
  *** 108,115 ****
    long rprintf (request_rec *r, char *s, ...);     
    #endif
    int rputc (int c, request_rec *r);     
  ! extern int rputs(const char *str, request_rec *r);
  ! extern int rvputs(request_rec *r, ...);
         
    /*
     * Index used in custom_responses array for a specific error code
  --- 108,116 ----
    long rprintf (request_rec *r, char *s, ...);     
    #endif
    int rputc (int c, request_rec *r);     
  ! int rputs(const char *str, request_rec *r);
  ! int rvputs(request_rec *r, ...);
  ! int rprintf(request_rec *r,const char *fmt,...);
         
    /*
     * Index used in custom_responses array for a specific error code
  
  
  
  1.18      +47 -87    apache/src/mod_status.c
  
  Index: mod_status.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/mod_status.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -C3 -r1.17 -r1.18
  *** mod_status.c	1996/05/22 17:35:39	1.17
  --- mod_status.c	1996/05/27 21:08:29	1.18
  ***************
  *** 75,80 ****
  --- 75,82 ----
     * 09.4.96  Added message for non-STATUS compiled version
     * 18.4.96  Added per child and per slot counters [Jim Jagielski]
     * 01.5.96  Table format, cleanup, even more spiffy data [Chuck Murcko/Jim J.]
  +  * 18.5.96  Adapted to use new rprintf() routine, incidentally fixing a missing
  +  *          piece in short reports [Ben Laurie]
     * 21.5.96  Additional Status codes (DNS and LOGGING only enabled if
                 extended STATUS is enabled) [George Burgyan/Jim J.]
     */
  ***************
  *** 103,116 ****
        char ss[20];
    
        if (bytes < (5 * KBYTE))
  !         sprintf(ss,"%dB",(int)bytes);
        else if (bytes < (MBYTE / 2))
  ! 	sprintf(ss,"%.1fkB",(float)bytes/KBYTE);
        else if (bytes < (GBYTE / 2))
  ! 	sprintf(ss,"%.1fMB",(float)bytes/MBYTE);
        else
  ! 	sprintf(ss,"%.1fGB",(float)bytes/GBYTE);
  !     rputs(ss,r);
    }
    
    void show_time(request_rec *r,time_t tsecs)
  --- 105,117 ----
        char ss[20];
    
        if (bytes < (5 * KBYTE))
  ! 	rprintf(r,"%d B",(int)bytes);
        else if (bytes < (MBYTE / 2))
  ! 	rprintf(r,"%.1f kB",(float)bytes/KBYTE);
        else if (bytes < (GBYTE / 2))
  ! 	rprintf(r,"%.1f MB",(float)bytes/MBYTE);
        else
  ! 	rprintf(r,"%.1f GB",(float)bytes/GBYTE);
    }
    
    void show_time(request_rec *r,time_t tsecs)
  ***************
  *** 128,153 ****
        s=buf;
        *s='\0';
        if(days)
  !     {
  !       sprintf(s," %ld day%s",days,days==1?"":"s");
  !       s+=strlen(s);
  !     }
        if(hrs)
  !     {
  !       sprintf(s," %ld hour%s",hrs,hrs==1?"":"s");
  !       s+=strlen(s);
  !     }
        if(mins)
  !     {
  !       sprintf(s," %ld minute%s",mins,mins==1?"":"s");
  !       s+=strlen(s);
  !     }
        if(secs)
  !     {
  !       sprintf(s," %ld second%s",secs,secs==1?"":"s");
  !       s+=strlen(s);
  !     }
  !     rputs(buf,r);
    }
    
    /* Main handler for x-httpd-status requests */
  --- 129,141 ----
        s=buf;
        *s='\0';
        if(days)
  ! 	rprintf(r," %ld day%s",days,days==1?"":"s");
        if(hrs)
  ! 	rprintf(r," %ld hour%s",hrs,hrs==1?"":"s");
        if(mins)
  ! 	rprintf(r," %ld minute%s",mins,mins==1?"":"s");
        if(secs)
  ! 	rprintf(r," %ld second%s",secs,secs==1?"":"s");
    }
    
    /* Main handler for x-httpd-status requests */
  ***************
  *** 194,200 ****
        server_rec *server = r->server;
        short_score score_record;
        char status[]="??????????";
  -     char buffer[200];
        char stat_buffer[HARD_SERVER_MAX];
        clock_t tu,ts,tcu,tcs;
    
  --- 182,187 ----
  ***************
  *** 297,358 ****
    #if defined(STATUS)
        if (short_report)
        {
  !         sprintf(buffer,"Total Accesses: %lu\nTotal Bytes: %lu\n",count,bcount);
  ! 	rputs(buffer,r);
    
    	if(ts || tu || tcu || tcs)
  ! 	{
  ! 	    sprintf(buffer,"CPULoad: %g\n",(tu+ts+tcu+tcs)/tick/up_time*100.);
  ! 	    rputs(buffer,r);
  ! 	}
    
  ! 	sprintf(buffer,"Uptime: %ld\n",(long)(up_time));
  ! 	rputs(buffer,r);
    	if (up_time>0)
  ! 	{ 
  ! 	    sprintf(buffer,"ReqPerSec: %g\n",
  ! 		    (float)count/(float)up_time);
  ! 	    rputs(buffer,r);
  ! 	}
    
    	if (up_time>0)
  ! 	{
  ! 	    sprintf(buffer,"BytesPerSec: %g\n",
  ! 		(float)bcount/(float)up_time);
  ! 	    rputs(buffer,r);
  ! 	}
    
    	if (count>0)
  ! 	{
  ! 	    sprintf(buffer,"BytesPerReq: %g\n",
  ! 		(float)bcount/(float)count);
  ! 	    rputs(buffer,r);
  ! 	}
        } else /* !short_report */
        {
  !         sprintf(buffer,"Total accesses: %lu - Total Traffic: ", count);
  ! 	rputs(buffer,r);
    	format_byte_out(r,bcount);
    	rputs("<br>\n",r);
  !         sprintf(buffer,"CPU Usage: u%g s%g cu%g cs%g",
    		tu/tick,ts/tick,tcu/tick,tcs/tick);
  - 	rputs(buffer,r);
    
    	if(ts || tu || tcu || tcs)
  ! 	{
  ! 	    sprintf(buffer," - %.3g%% CPU load",
  ! 		(tu+ts+tcu+tcs)/tick/up_time*100.);
  ! 	    rputs(buffer,r);
  ! 	}
    
    	rputs("<br>\n",r);
    
    	if (up_time>0)
  ! 	{
  ! 	    sprintf(buffer,"%.3g requests/sec - ",
    		    (float)count/(float)up_time);
  - 	    rputs(buffer,r);
  - 	}
    
    	if (up_time>0)
    	{
  --- 284,319 ----
    #if defined(STATUS)
        if (short_report)
        {
  !         rprintf(r,"Total Accesses: %lu\nTotal Bytes: %lu\n",count,bcount);
    
    	if(ts || tu || tcu || tcs)
  ! 	    rprintf(r,"CPULoad: %g\n",(tu+ts+tcu+tcs)/tick/up_time*100.);
    
  ! 	rprintf(r,"Uptime: %ld\n",(long)(up_time));
    	if (up_time>0)
  ! 	    rprintf(r,"ReqPerSec: %g\n",(float)count/(float)up_time);
    
    	if (up_time>0)
  ! 	    rprintf(r,"BytesPerSec: %g\n",(float)bcount/(float)up_time);
    
    	if (count>0)
  ! 	    rprintf(r,"BytesPerReq: %g\n",(float)bcount/(float)count);
        } else /* !short_report */
        {
  ! 	rprintf(r,"Total accesses: %lu - Total Traffic: ", count);
    	format_byte_out(r,bcount);
    	rputs("<br>\n",r);
  !         rprintf(r,"CPU Usage: u%g s%g cu%g cs%g",
    		tu/tick,ts/tick,tcu/tick,tcs/tick);
    
    	if(ts || tu || tcu || tcs)
  ! 	    rprintf(r," - %.3g%% CPU load",(tu+ts+tcu+tcs)/tick/up_time*100.);
    
    	rputs("<br>\n",r);
    
    	if (up_time>0)
  ! 	    rprintf(r,"%.3g requests/sec - ",
    		    (float)count/(float)up_time);
    
    	if (up_time>0)
    	{
  ***************
  *** 388,394 ****
    
        if (short_report)
        {
  !         sprintf(buffer,"\nBusyServers: %d\nIdleServers: %d\n",busy,ready);
        }
        else 
        {
  --- 349,355 ----
    
        if (short_report)
        {
  !         rprintf(r,"\nBusyServers: %d\nIdleServers: %d\n",busy,ready);
        }
        else 
        {
  ***************
  *** 401,408 ****
  --- 362,374 ----
    	rputs("\"<code>K</code>\" Keepalive (read), \n",r);
    	rputs("\"<code>D</code>\" DNS Lookup, \n",r);
    	rputs("\"<code>L</code>\" Logging<p>\n",r);
  +         rprintf(r,"\n%d requests currently being processed, %d idle servers\n"
  + ,busy,ready);
  + 
  + #if 0
            sprintf(buffer,"\n%d requests currently being processed, %d idle servers\n",busy,ready);
    	rputs(buffer,r);
  + #endif
        }
    
    #if defined(STATUS)
  ***************
  *** 410,416 ****
        	if(no_table_report)
                rputs("<p><hr><h2>Server Details</h2>\n\n",r);
    	else
  !             rputs("<p>\n\n<table border=0><tr><th>Srv<th>PID<th>Acc<th>M<th>CPU\n<th>SS<th>B0<th>B1<th>B2<th>Host<th>Request</tr>\n\n",r);
    
    
        for (i = 0; i<HARD_SERVER_MAX; ++i)
  --- 376,382 ----
        	if(no_table_report)
                rputs("<p><hr><h2>Server Details</h2>\n\n",r);
    	else
  !             rputs("<p>\n\n<table border=0><tr><th>Srv<th>PID<th>Acc<th>M<th>CPU\n<th>SS<th>Conn<th>Child<th>Slot<th>Host<th>Request</tr>\n\n",r);
    
    
        for (i = 0; i<HARD_SERVER_MAX; ++i)
  ***************
  *** 429,437 ****
    	    {
    		if (no_table_report)
    		{
  ! 	            sprintf(buffer,"<b>Server %d</b> (%d): %d|%lu|%lu [",
    		     i,(int)score_record.pid,(int)conn_lres,my_lres,lres);
  - 		    rputs(buffer,r);
    
    		    switch (score_record.status)
    		    {
  --- 395,402 ----
    	    {
    		if (no_table_report)
    		{
  ! 	            rprintf(r,"<b>Server %d</b> (%d): %d|%lu|%lu [",
    		     i,(int)score_record.pid,(int)conn_lres,my_lres,lres);
    
    		    switch (score_record.status)
    		    {
  ***************
  *** 460,487 ****
    		            rputs("Dead",r);
    		            break;
    		    }
  ! 		    sprintf(buffer,"] u%g s%g cu%g cs%g\n %s (",
    			    score_record.times.tms_utime/tick,
    			    score_record.times.tms_stime/tick,
    			    score_record.times.tms_cutime/tick,
    			    score_record.times.tms_cstime/tick,
    			    asctime(localtime(&score_record.last_used)));
  - 		    rputs(buffer,r);
    		    format_byte_out(r,(unsigned long)conn_bytes);
    		    rputs("|",r);
    		    format_byte_out(r,my_bytes);
    		    rputs("|",r);
    		    format_byte_out(r,bytes);
    		    rputs(")\n",r);
  ! 		    sprintf(buffer," <i>%s {%s}</i><br>\n\n",
  ! 			score_record.client, score_record.request);
  ! 		    rputs(buffer,r);
    		}
    		else /* !no_table_report */
    		{
  ! 	            sprintf(buffer,"<tr><td><b>%d</b><td>%d<td>%d/%lu/%lu",
    		     i,(int)score_record.pid,(int)conn_lres,my_lres,lres);
  - 		    rputs(buffer,r);
    
    		    switch (score_record.status)
    		    {
  --- 425,449 ----
    		            rputs("Dead",r);
    		            break;
    		    }
  ! 		    rprintf(r,"] u%g s%g cu%g cs%g\n %s (",
    			    score_record.times.tms_utime/tick,
    			    score_record.times.tms_stime/tick,
    			    score_record.times.tms_cutime/tick,
    			    score_record.times.tms_cstime/tick,
    			    asctime(localtime(&score_record.last_used)));
    		    format_byte_out(r,(unsigned long)conn_bytes);
    		    rputs("|",r);
    		    format_byte_out(r,my_bytes);
    		    rputs("|",r);
    		    format_byte_out(r,bytes);
    		    rputs(")\n",r);
  ! 		    rprintf(r," <i>%s {%s}</i><br>\n\n",
  ! 			    score_record.client, score_record.request);
    		}
    		else /* !no_table_report */
    		{
  ! 	            rprintf(r,"<tr><td><b>%d</b><td>%d<td>%d/%lu/%lu",
    		     i,(int)score_record.pid,(int)conn_lres,my_lres,lres);
    
    		    switch (score_record.status)
    		    {
  ***************
  *** 510,529 ****
    		            rputs("<td>.",r);
    		            break;
    		    }
  ! 		    sprintf(buffer,"\n<td>%.2f<td>%.0f",
    			    (score_record.times.tms_utime +
    			    score_record.times.tms_stime +
    			    score_record.times.tms_cutime +
    			    score_record.times.tms_cstime)/tick,
    			    difftime(nowtime, score_record.last_used));
  ! 		    rputs(buffer,r);
  ! 		    sprintf(buffer,"<td>%-1.1f<td>%-2.2f<td>%-2.2f\n",
    			(float)conn_bytes/KBYTE, (float)my_bytes/MBYTE,
    			(float)bytes/MBYTE);
  ! 		    rputs(buffer,r);
  ! 		    sprintf(buffer,"<td>%s<td>%s</tr>\n\n",
    			score_record.client, score_record.request);
  - 		    rputs(buffer,r);
    		}	/* no_table_report */
    	    }		/* !short_report */
    	}		/* if (<active child>) */
  --- 472,488 ----
    		            rputs("<td>.",r);
    		            break;
    		    }
  ! 		    rprintf(r,"\n<td>%.2f<td>%.0f",
    			    (score_record.times.tms_utime +
    			    score_record.times.tms_stime +
    			    score_record.times.tms_cutime +
    			    score_record.times.tms_cstime)/tick,
    			    difftime(nowtime, score_record.last_used));
  ! 		    rprintf(r,"<td>%-1.1f<td>%-2.2f<td>%-2.2f\n",
    			(float)conn_bytes/KBYTE, (float)my_bytes/MBYTE,
    			(float)bytes/MBYTE);
  ! 		    rprintf(r,"<td>%s<td>%s</tr>\n\n",
    			score_record.client, score_record.request);
    		}	/* no_table_report */
    	    }		/* !short_report */
    	}		/* if (<active child>) */
  ***************
  *** 532,548 ****
        if (!(short_report || no_table_report))
        {
    	rputs("</table>\n \
  ! <ul>\n \
  !   <li>SRV = \"Server number\"\n \
  !   <li>PID = \"OS process ID\"\n \
  !   <li>Acc = \"Number of accesses this connection / this child / this slot\"\n \
  !   <li>M = \"Mode of operation\"\n \
  !   <li>CPU = \"CPU usage, number of seconds\"\n \
  !   <li>SS = \"Seconds since beginning of most recent request\"\n \
  !   <li>B0 = \"Kilobytes transferred this connection\"\n \
  !   <li>B1 = \"Megabytes transferred this child\"\n \
  !   <li>B2 = \"Total megabytes transferred this slot\"\n \
  ! </ul>\n",r);
        }
    
    #else /* !defined(STATUS) */
  --- 491,508 ----
        if (!(short_report || no_table_report))
        {
    	rputs("</table>\n \
  ! <hr> \
  ! <table>\n \
  ! <tr><th>Srv<td>Server number\n \
  ! <tr><th>PID<td>OS process ID\n \
  ! <tr><th>Acc<td>Number of accesses this connection / this child / this
slot\n \
  ! <tr><th>M<td>Mode of operation\n \
  ! <tr><th>CPU<td>CPU usage, number of seconds\n \
  ! <tr><th>SS<td>Seconds since beginning of most recent request\n \
  ! <tr><th>Conn<td>Kilobytes transferred this connection\n \
  ! <tr><th>Child<td>Megabytes transferred this child\n \
  ! <tr><th>Slot<td>Total megabytes transferred this slot\n \
  ! </table>\n",r);
        }
    
    #else /* !defined(STATUS) */
  
  
  

Mime
View raw message