Happy new year
[pazpar2-moved-to-github.git] / src / http_command.c
index 731a635..dcb21a7 100644 (file)
@@ -48,19 +48,28 @@ void print_meminfo(WRBUF wrbuf)
 {
     struct mallinfo minfo;
     minfo = mallinfo();
-    wrbuf_printf(wrbuf, "  <memory>\n"
-                        "   <arena>%d</arena>\n"
-                        "   <uordblks>%d</uordblks>\n"
-                        "   <fordblks>%d</fordblks>\n"
-                        "   <ordblks>%d</ordblks>\n"
-                        "   <keepcost>%d</keepcost>\n"
-                        "   <hblks>%d</hblks>\n"
-                        "   <hblkhd>%d</hblkhd>\n"
-                        "   <virt>%d</virt>\n"
-                        "   <virtuse>%d</virtuse>\n"
-                        "  </memory>\n",
-                 minfo.arena, minfo.uordblks, minfo.fordblks,minfo.ordblks, minfo.keepcost, minfo.hblks, minfo.hblkhd, minfo.arena + minfo.hblkhd, minfo.uordblks + minfo.hblkhd);
-
+    wrbuf_printf(wrbuf, " <memory>\n"
+                 "  <arena>%d</arena><!--  Non-mmapped space allocated (bytes) -->\n"
+                 "  <ordblks>%d</ordblks><!--  Number of free chunks -->\n"
+                 "  <smblks>%d</smblks><!--  Number of free fastbin blocks -->\n"
+                 "  <hblks>%d</hblks><!--  Number of mmapped regions -->\n"
+                 "  <hblkhd>%d</hblkhd><!--  Space allocated in mmapped regions (bytes) -->\n"
+                 "  <usmblks>%d</usmblks><!--  Maximum total allocated space (bytes) -->\n"
+                 "  <fsmblks>%d</fsmblks><!--  Space in freed fastbin blocks (bytes) -->\n"
+                 "  <uordblks>%d</uordblks><!--  Total allocated space (bytes) -->\n"
+                 "  <fordblks>%d</fordblks><!--  Total free space (bytes) -->\n"
+                 "  <keepcost>%d</keepcost><!-- Top-most, releasable space (bytes) -->\n"
+                 " </memory>\n",
+                 minfo.arena,
+                 minfo.ordblks,
+                 minfo.smblks,
+                 minfo.hblks,
+                 minfo.hblkhd,
+                 minfo.usmblks,
+                 minfo.fsmblks,
+                 minfo.uordblks,
+                 minfo.fordblks,
+                 minfo.keepcost);
 }
 #else
 #define print_meminfo(x)
@@ -186,7 +195,7 @@ struct http_session *http_session_create(struct conf_service *service,
                 r->timeout_iochan, service->session_timeout);
     iochan_settimeout(r->timeout_iochan, service->session_timeout);
 
-    iochan_add(service->server->iochan_man, r->timeout_iochan);
+    iochan_add(service->server->iochan_man, r->timeout_iochan, -1);
     http_session_use(1);
     return r;
 }
@@ -694,47 +703,6 @@ static void cmd_session_status(struct http_channel *c)
     release_session(c, s);
 }
 
-#ifdef HAVE_RESULTSETS_COUNT
-int resultsets_count(void);
-#else
-#define resultsets_count()      0
-#endif
-
-static void cmd_server_status(struct http_channel *c)
-{
-    int sessions   = sessions_count();
-    int clients    = clients_count();
-    int resultsets = resultsets_count();
-
-    response_open_ok(c, "server-status");
-    wrbuf_printf(c->wrbuf, "\n  <sessions>%u</sessions>\n", sessions);
-    wrbuf_printf(c->wrbuf, "  <clients>%u</clients>\n",   clients);
-    /* Only works if yaz has been compiled with enabling of this */
-    wrbuf_printf(c->wrbuf, "  <resultsets>%u</resultsets>\n",resultsets);
-    print_meminfo(c->wrbuf);
-
-/* TODO add all sessions status                         */
-/*    http_sessions_t http_sessions = c->http_sessions; */
-/*    struct http_session *p;                           */
-/*
-    yaz_mutex_enter(http_sessions->mutex);
-    for (p = http_sessions->session_list; p; p = p->next)
-    {
-        p->activity_counter++;
-        wrbuf_puts(c->wrbuf, "<session-status>\n");
-        wrbuf_printf(c->wrbuf, "<id>%s</id>\n", p->session_id);
-        yaz_mutex_leave(http_sessions->mutex);
-        session_status(c, p);
-        wrbuf_puts(c->wrbuf, "</session-status>\n");
-        yaz_mutex_enter(http_sessions->mutex);
-        p->activity_counter--;
-    }
-    yaz_mutex_leave(http_sessions->mutex);
-*/
-    response_close(c, "server-status");
-    xmalloc_trav(0);
-}
-
 static void bytarget_response(struct http_channel *c, struct http_session *s,
                               const char *cmd_status)
 {
@@ -1513,6 +1481,9 @@ static void cmd_info(struct http_channel *c)
         }
     }
 #endif
+    wrbuf_printf(c->wrbuf, " <sessions>%d</sessions>\n", sessions_get_count());
+    wrbuf_printf(c->wrbuf, " <clients>%d</clients>\n",   clients_get_count());
+    print_meminfo(c->wrbuf);
     info_services(c->server, c->wrbuf);
 
     response_close(c, "info");
@@ -1531,7 +1502,6 @@ struct {
     { "termlist", cmd_termlist },
     { "exit", cmd_exit },
     { "session-status", cmd_session_status },
-    { "server-status", cmd_server_status },
     { "service", cmd_service },
     { "ping", cmd_ping },
     { "record", cmd_record },