[rrd-developers] [PATCH] error handling in rrd_client.c
Thorsten von Eicken
tve at voneicken.com
Fri Apr 30 16:01:26 CEST 2010
The patch below explicitly closes the connection on error in
response_read. I've found it to get stuck otherwise.
TvE
# diff -u rrd_client.c.orig rrd_client.c
--- rrd_client.c.orig 2010-03-29 17:03:57.000000000 +0000
+++ rrd_client.c 2010-04-20 22:10:28.000000000 +0000
@@ -371,14 +371,17 @@
ret->lines_num = 0;
buffer_ptr = fgets (buffer, sizeof (buffer), sh);
- if (buffer_ptr == NULL)
+ if (buffer_ptr == NULL) {
+ close_connection();
return (-3);
+ }
chomp (buffer);
ret->status = strtol (buffer, &ret->message, 0);
if (buffer == ret->message)
{
response_free (ret);
+ close_connection();
return (-4);
}
/* Skip leading whitespace of the status message */
@@ -396,6 +399,7 @@
if (ret->lines == NULL)
{
response_free (ret);
+ close_connection();
return (-5);
}
memset (ret->lines, 0, sizeof (char *) * ret->status);
@@ -407,6 +411,7 @@
if (buffer_ptr == NULL)
{
response_free (ret);
+ close_connection();
return (-6);
}
chomp (buffer);
@@ -415,6 +420,7 @@
if (ret->lines[i] == NULL)
{
response_free (ret);
+ close_connection();
return (-7);
}
}
More information about the rrd-developers
mailing list