diff src/http/modules/ngx_http_status_handler.c @ 368:15c84a40e87d

nginx-0.0.7-2004-06-24-20:07:04 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 24 Jun 2004 16:07:04 +0000
parents ceec87d1c2b3
children 9c2515d70489
line wrap: on
line diff
--- a/src/http/modules/ngx_http_status_handler.c
+++ b/src/http/modules/ngx_http_status_handler.c
@@ -46,6 +46,7 @@ ngx_module_t  ngx_http_status_module = {
 
 static ngx_int_t ngx_http_status_handler(ngx_http_request_t *r)
 {
+    u_char               ch;
     size_t               len;
     ngx_int_t            rc;
     ngx_uint_t           i, dash;
@@ -93,11 +94,20 @@ static ngx_int_t ngx_http_status_handler
         rq = c[i].data;
         if (rq && rq->signature == NGX_HTTP_MODULE) {
 
+                   /* STUB: should be NGX_PID_T_LEN */
+            len += NGX_INT64_LEN                       /* pid */
+                   + 1 + NGX_INT32_LEN                 /* connection */
+                   + 1 + 1                             /* state */
+                   + 1 + c[i].addr_text.len
+                   + 1 + rq->server_name->len
+                   + 2;                                /* "\r\n" */
+
             if (rq->request_line.len) {
-                len += NGX_INT32_LEN + 1 + rq->request_line.len + 2 + 2;
-                dash = 0;
+                len += 1 + rq->request_line.len + 2;
             }
 
+            dash = 0;
+
             continue;
         }
 
@@ -117,28 +127,60 @@ static ngx_int_t ngx_http_status_handler
         rq = c[i].data;
         if (rq && rq->signature == NGX_HTTP_MODULE) {
 
-#if 0
+            b->last += ngx_snprintf((char *) b->last,
+                                    /* STUB: should be NGX_PID_T_LEN */
+                                    NGX_INT64_LEN + NGX_INT32_LEN,
+                                    PID_T_FMT " %u", ngx_pid, i);
+
             switch (rq->http_state) {
             case NGX_HTTP_INITING_REQUEST_STATE:
+                ch = 'I';
+                break;
+
+            case NGX_HTTP_READING_REQUEST_STATE:
+                ch = 'R';
+                break;
+
+            case NGX_HTTP_PROCESS_REQUEST_STATE:
+                ch = 'P';
+                break;
+
+            case NGX_HTTP_WRITING_REQUEST_STATE:
+                ch = 'W';
+                break;
 
             case NGX_HTTP_KEEPALIVE_STATE:
+                ch = 'K';
+                break;
+
+            default:
+                ch = '?';
             }
-#endif
+
+            *(b->last++) = ' ';
+            *(b->last++) = ch;
+
+            *(b->last++) = ' ';
+            b->last = ngx_cpymem(b->last, c[i].addr_text.data,
+                                 c[i].addr_text.len);
+
+            *(b->last++) = ' ';
+            b->last = ngx_cpymem(b->last, rq->server_name->data,
+                                 rq->server_name->len);
 
             if (rq->request_line.len) {
-                b->last += ngx_snprintf((char *) b->last, NGX_INT32_LEN,
-                                        "%u", i);
                 *(b->last++) = ' ';
-
                 *(b->last++) = '"';
                 b->last = ngx_cpymem(b->last, r->request_line.data,
                                      r->request_line.len);
                 *(b->last++) = '"';
 
-                *(b->last++) = CR; *(b->last++) = LF;
-                dash = 0;
             }
 
+            *(b->last++) = CR; *(b->last++) = LF;
+
+            dash = 0;
+
             continue;
         }