Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Cherokee: commits

[3836] cherokee/trunk/cherokee: Report better errors whenever something goes wrong.

 

 

Cherokee commits RSS feed   Index | Next | Previous | View Threaded


cherokee at cherokee-project

Nov 18, 2009, 1:55 AM

Post #1 of 1 (102 views)
Permalink
[3836] cherokee/trunk/cherokee: Report better errors whenever something goes wrong.

Revision: 3836
http://svn.cherokee-project.com/changeset/3836
Author: alo
Date: 2009-11-18 10:55:10 +0100 (Wed, 18 Nov 2009)

Log Message:
-----------
Report better errors whenever something goes wrong. Now the client
will receive the RRD error in a 503 "Service Unavailable" response.

Modified Paths:
--------------
cherokee/trunk/cherokee/handler_render_rrd.c
cherokee/trunk/cherokee/handler_render_rrd.h

Modified: cherokee/trunk/cherokee/handler_render_rrd.c
===================================================================
--- cherokee/trunk/cherokee/handler_render_rrd.c 2009-11-17 06:07:21 UTC (rev 3835)
+++ cherokee/trunk/cherokee/handler_render_rrd.c 2009-11-18 09:55:10 UTC (rev 3836)
@@ -91,7 +91,8 @@


static ret_t
-command_rrdtool (cherokee_buffer_t *buf)
+command_rrdtool (cherokee_handler_render_rrd_t *hdl,
+ cherokee_buffer_t *buf)
{
ret_t ret;

@@ -111,7 +112,9 @@
return ret_error;

} else if (strncmp (buf->buf, "ERROR", 5) == 0) {
+ cherokee_buffer_add_buffer (&hdl->rrd_error, buf);
LOG_ERROR (CHEROKEE_ERROR_HANDLER_RENDER_RRD_MSG, buf->buf);
+
return ret_error;
}

@@ -121,7 +124,8 @@


static ret_t
-render_srv_accepts (cherokee_collector_rrd_interval_t *interval)
+render_srv_accepts (cherokee_handler_render_rrd_t *hdl,
+ cherokee_collector_rrd_interval_t *interval)
{
cherokee_buffer_t *tmp = &rrd_connection->tmp;

@@ -147,7 +151,7 @@
cherokee_buffer_add_str (tmp, "LINE1.5:accepts#224499:Average ");
cherokee_buffer_add_str (tmp, "\n");

- command_rrdtool (tmp);
+ command_rrdtool (hdl, tmp);
cherokee_buffer_clean (tmp);

return ret_ok;
@@ -155,7 +159,8 @@


static ret_t
-render_srv_timeouts (cherokee_collector_rrd_interval_t *interval)
+render_srv_timeouts (cherokee_handler_render_rrd_t *hdl,
+ cherokee_collector_rrd_interval_t *interval)
{
cherokee_buffer_t *tmp = &rrd_connection->tmp;

@@ -181,7 +186,7 @@
cherokee_buffer_add_str (tmp, "LINE1.5:timeouts#900:Average ");
cherokee_buffer_add_str (tmp, "\n");

- command_rrdtool (tmp);
+ command_rrdtool (hdl, tmp);
cherokee_buffer_clean (tmp);

return ret_ok;
@@ -189,7 +194,8 @@


static ret_t
-render_srv_traffic (cherokee_collector_rrd_interval_t *interval)
+render_srv_traffic (cherokee_handler_render_rrd_t *hdl,
+ cherokee_collector_rrd_interval_t *interval)
{
cherokee_buffer_t *tmp = &rrd_connection->tmp;

@@ -220,7 +226,7 @@
cherokee_buffer_add_str (tmp, "GPRINT:rx_total:\" Total\\:%8.2lf%s\\n\" ");
cherokee_buffer_add_str (tmp, "\n");

- command_rrdtool (tmp);
+ command_rrdtool (hdl, tmp);
cherokee_buffer_clean (tmp);

return ret_ok;
@@ -228,7 +234,8 @@


static ret_t
-render_vsrv_traffic (cherokee_collector_rrd_interval_t *interval,
+render_vsrv_traffic (cherokee_handler_render_rrd_t *hdl,
+ cherokee_collector_rrd_interval_t *interval,
cherokee_buffer_t *vserver_name)
{
cherokee_buffer_t *tmp = &rrd_connection->tmp;
@@ -269,7 +276,7 @@
cherokee_buffer_add_str (tmp, "GPRINT:srv_tx_total:\" Total\\:%8.2lf%s\\n\" ");
cherokee_buffer_add_str (tmp, "\n");

- command_rrdtool (tmp);
+ command_rrdtool (hdl, tmp);
cherokee_buffer_clean (tmp);

return ret_ok;
@@ -340,7 +347,7 @@
return ret_eagain;
}

- ret = render_srv_accepts (interval);
+ ret = render_srv_accepts (hdl, interval);
if (ret != ret_ok) {
TRACE (ENTRIES, "Couldn't render image: %s\n", conn->request.buf);

@@ -370,7 +377,7 @@
return ret_eagain;
}

- ret = render_srv_timeouts (interval);
+ ret = render_srv_timeouts (hdl, interval);
if (ret != ret_ok) {
TRACE (ENTRIES, "Couldn't render image: %s\n", conn->request.buf);

@@ -400,7 +407,7 @@
return ret_eagain;
}

- ret = render_srv_traffic (interval);
+ ret = render_srv_traffic (hdl, interval);
if (ret != ret_ok) {
TRACE (ENTRIES, "Couldn't render image: %s\n", conn->request.buf);

@@ -448,7 +455,7 @@

/* Render
*/
- ret = render_vsrv_traffic (interval, &vserver_buf);
+ ret = render_vsrv_traffic (hdl, interval, &vserver_buf);
cherokee_buffer_mrproper (&vserver_buf);

if (ret != ret_ok) {
@@ -468,6 +475,17 @@
return ret_error;
}

+ /* Has everything gone alright?
+ */
+ if (! cherokee_buffer_is_empty (&hdl->rrd_error)) {
+ cherokee_connection_t *conn = HANDLER_CONN(hdl);
+
+ conn->error_code = http_service_unavailable;
+ BIT_SET (HANDLER(hdl)->support, hsupport_error);
+
+ return ret_ok;
+ }
+
return cherokee_handler_file_init (hdl->file_hdl);
}

@@ -476,6 +494,12 @@
handler_add_headers (cherokee_handler_render_rrd_t *hdl,
cherokee_buffer_t *buffer)
{
+ if (! cherokee_buffer_is_empty (&hdl->rrd_error)) {
+ cherokee_buffer_add_str (buffer, "Content-Type: text/html" CRLF);
+ cherokee_buffer_add_va (buffer, "Content-Length: %d" CRLF, hdl->rrd_error.len);
+ return ret_ok;
+ }
+
if (HANDLER_RENDER_RRD_PROPS(hdl)->disabled) {
cherokee_buffer_add_str (buffer, "Content-Type: text/html" CRLF);
cherokee_buffer_add_va (buffer, "Content-Length: %d" CRLF, strlen(DISABLED_MSG));
@@ -490,6 +514,11 @@
handler_step (cherokee_handler_render_rrd_t *hdl,
cherokee_buffer_t *buffer)
{
+ if (! cherokee_buffer_is_empty (&hdl->rrd_error)) {
+ cherokee_buffer_add_buffer (buffer, &hdl->rrd_error);
+ return ret_eof_have_data;
+ }
+
if (HANDLER_RENDER_RRD_PROPS(hdl)->disabled) {
cherokee_buffer_add_str (buffer, DISABLED_MSG);
return ret_eof_have_data;
@@ -502,6 +531,8 @@
static ret_t
handler_free (cherokee_handler_render_rrd_t *hdl)
{
+ cherokee_buffer_mrproper (&hdl->rrd_error);
+
if (hdl->file_hdl != NULL) {
cherokee_handler_file_free (hdl->file_hdl);
}
@@ -534,6 +565,7 @@
/* Properties
*/
n->file_hdl = NULL;
+ cherokee_buffer_init (&n->rrd_error);

/* Instance file sub-handler
*/

Modified: cherokee/trunk/cherokee/handler_render_rrd.h
===================================================================
--- cherokee/trunk/cherokee/handler_render_rrd.h 2009-11-17 06:07:21 UTC (rev 3835)
+++ cherokee/trunk/cherokee/handler_render_rrd.h 2009-11-18 09:55:10 UTC (rev 3836)
@@ -38,6 +38,7 @@

typedef struct {
cherokee_handler_t base;
+ cherokee_buffer_t rrd_error;
cherokee_handler_file_t *file_hdl;
} cherokee_handler_render_rrd_t;

Cherokee commits RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.