packages: cacti-spine/cacti-spine.spec, cacti-spine/unified_issues.patch (N...
skibi
skibi at pld-linux.org
Sun Oct 10 02:30:19 CEST 2010
Author: skibi Date: Sun Oct 10 00:30:19 2010 GMT
Module: packages Tag: HEAD
---- Log message:
- Add patches released on 2010/08/31 http://www.cacti.net/spine_download_patches.php
---- Files affected:
packages/cacti-spine:
cacti-spine.spec (1.34 -> 1.35) , unified_issues.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: packages/cacti-spine/cacti-spine.spec
diff -u packages/cacti-spine/cacti-spine.spec:1.34 packages/cacti-spine/cacti-spine.spec:1.35
--- packages/cacti-spine/cacti-spine.spec:1.34 Thu Aug 19 17:26:41 2010
+++ packages/cacti-spine/cacti-spine.spec Sun Oct 10 02:30:14 2010
@@ -3,12 +3,13 @@
Summary(pl.UTF-8): Backend gromadzący dane dla Cacti
Name: cacti-spine
Version: 0.8.7g
-Release: 3
+Release: 4
License: GPL
Group: Applications
Source0: http://www.cacti.net/downloads/spine/%{name}-%{version}.tar.gz
# Source0-md5: 22c2b1986c880b9c587876c18d5c3f9f
Patch0: %{name}-paths.patch
+Patch1: unified_issues.patch
URL: http://www.cacti.net/
BuildRequires: autoconf
BuildRequires: automake
@@ -41,6 +42,7 @@
%prep
%setup -q
%patch0 -p1
+%patch1 -p1
%build
%{__libtoolize}
@@ -77,6 +79,9 @@
All persons listed below can be reached at <cvs_login>@pld-linux.org
$Log$
+Revision 1.35 2010/10/10 00:30:14 skibi
+- Add patches released on 2010/08/31 http://www.cacti.net/spine_download_patches.php
+
Revision 1.34 2010/08/19 15:26:41 glen
- obsolete cacti-cactid
================================================================
Index: packages/cacti-spine/unified_issues.patch
diff -u /dev/null packages/cacti-spine/unified_issues.patch:1.1
--- /dev/null Sun Oct 10 02:30:19 2010
+++ packages/cacti-spine/unified_issues.patch Sun Oct 10 02:30:14 2010
@@ -0,0 +1,348 @@
+diff -ruBbd cacti-spine-0.8.7g.old/ChangeLog cacti-spine-0.8.7g/ChangeLog
+--- cacti-spine-0.8.7g.old/ChangeLog 2010-07-09 19:25:56.000000000 -0400
++++ cacti-spine-0.8.7g/ChangeLog 2010-08-31 20:21:22.000000000 -0400
+@@ -1,5 +1,13 @@
+ The Cacti Group | spine
+
++Patched 0.8.7g
++-bug#0001669: Problems with getting data from script using SPINE on Windows Server 2003 x32
++-bug#0001829: Wrong string numerical value got from Spine SNMP poller
++-bug: Net-snmp API issues cause spine crashes with some SNMP agents
++-bug: Host list not properly initialized
++-bug: Mutex locking issues cause deadlocks in Windows
++-bug: Escape windows type back slashes in scripts
++
+ 0.8.7g
+ -feature: Multi threaded host polling
+
+diff -ruBbd cacti-spine-0.8.7g.old/poller.c cacti-spine-0.8.7g/poller.c
+--- cacti-spine-0.8.7g.old/poller.c 2010-07-09 17:39:53.000000000 -0400
++++ cacti-spine-0.8.7g/poller.c 2010-08-31 20:18:58.000000000 -0400
+@@ -57,21 +57,26 @@
+ host_data_ids = poller_details.host_data_ids;
+ snprintf(host_time, SMALL_BUFSIZE, "%s", poller_details.host_time);
+
+- thread_mutex_unlock(LOCK_THREAD);
+-
+ free(arg);
+
++ thread_ready = TRUE;
++
+ SPINE_LOG_DEBUG(("DEBUG: In Poller, About to Start Polling of Host"));
+
+ poll_host(host_id, host_thread, last_host_thread, host_data_ids, host_time);
+
+- thread_mutex_lock(LOCK_THREAD);
+-
++ while (TRUE) {
++ if (thread_mutex_trylock(LOCK_THREAD) == 0) {
+ active_threads--;
++ thread_mutex_unlock(LOCK_THREAD);
+
+- SPINE_LOG_DEBUG(("DEBUG: The Value of Active Threads is %i" ,active_threads));
++ break;
++ }
+
+- thread_mutex_unlock(LOCK_THREAD);
++ usleep(100);
++ }
++
++ SPINE_LOG_DEBUG(("DEBUG: The Value of Active Threads is %i" ,active_threads));
+
+ /* end the thread */
+ pthread_exit(0);
+@@ -965,7 +970,7 @@
+ poll_result = exec_poll(host, poller_items[i].arg1);
+
+ /* process the result */
+- if ((is_numeric(poll_result)) || (is_multipart_output(poll_result))) {
++ if ((is_numeric(poll_result)) || (is_multipart_output(trim(poll_result)))) {
+ snprintf(poller_items[i].result, RESULTS_BUFFER, "%s", poll_result);
+ }else if (is_hexadecimal(snmp_oids[j].result, TRUE)) {
+ snprintf(poller_items[i].result, RESULTS_BUFFER, "%lld", hex2dec(poll_result));
+@@ -998,7 +1003,7 @@
+ poll_result = php_cmd(poller_items[i].arg1, php_process);
+
+ /* process the output */
+- if ((is_numeric(poll_result)) || (is_multipart_output(poll_result))) {
++ if ((is_numeric(poll_result)) || (is_multipart_output(trim(poll_result)))) {
+ snprintf(poller_items[i].result, RESULTS_BUFFER, "%s", poll_result);
+ }else if (is_hexadecimal(snmp_oids[j].result, TRUE)) {
+ snprintf(poller_items[i].result, RESULTS_BUFFER, "%lld", hex2dec(poll_result));
+@@ -1247,7 +1252,7 @@
+ if (is_numeric(result)) {
+ return TRUE;
+ }else{
+- if (is_multipart_output(result)) {
++ if (is_multipart_output(trim(result))) {
+ return TRUE;
+ }else{
+ return FALSE;
+@@ -1290,7 +1295,7 @@
+
+ /* compensate for back slashes in arguments */
+ #if defined(__CYGWIN__)
+- proc_command = add_slashes(command, 2);
++ proc_command = add_slashes(command);
+ #else
+ proc_command = command;
+ #endif
+@@ -1340,7 +1345,7 @@
+ FD_SET(cmd_fd, &fds);
+
+ /* wait x seonds for pipe response */
+- switch (select(cmd_fd+1, &fds, NULL, NULL, &timeout)) {
++ switch (select(FD_SETSIZE, &fds, NULL, NULL, &timeout)) {
+ case -1:
+ switch (errno) {
+ case EBADF:
+@@ -1381,11 +1386,13 @@
+ break;
+ }
+ case 0:
++ #ifdef USING_TPOPEN
+ SPINE_LOG(("Host[%i] ERROR: The POPEN timed out", current_host->id));
+
+- #ifdef USING_TPOPEN
+ close_fd = FALSE;
+ #else
++ SPINE_LOG(("Host[%i] ERROR: The NIFTY POPEN timed out", current_host->id));
++
+ pid = nft_pchild(cmd_fd);
+ kill(pid, SIGKILL);
+ #endif
+diff -ruBbd cacti-spine-0.8.7g.old/snmp.c cacti-spine-0.8.7g/snmp.c
+--- cacti-spine-0.8.7g.old/snmp.c 2010-07-09 17:39:53.000000000 -0400
++++ cacti-spine-0.8.7g/snmp.c 2010-08-31 20:18:58.000000000 -0400
+@@ -499,13 +499,9 @@
+ size_t out_len = 0;
+
+ if ((buf = (u_char *) calloc(buf_len, 1)) != 0) {
+- if (sprint_realloc_value(&buf, &buf_len, &out_len, 1,
+- objid, objidlen, variable)) {
++ sprint_realloc_by_type(&buf, &buf_len, &out_len, 1, variable, NULL, NULL, NULL);
+ snprintf(obuf, buf_len, "%s", buf);
+ }else{
+- snprintf(obuf, buf_len, "%s [TRUNCATED]", buf);
+- }
+- }else{
+ SET_UNDEFINED(obuf);
+ }
+
+@@ -528,6 +524,7 @@
+ int i;
+ int array_count;
+ int index_count;
++ char temp_result[RESULTS_BUFFER];
+
+ struct nameStruct {
+ oid name[MAX_OID_LEN];
+@@ -570,11 +567,13 @@
+ for(i = 0; i < num_oids && vars; i++) {
+ if (!IS_UNDEFINED(snmp_oids[i].result)) {
+ #ifdef USE_NET_SNMP
+- snmp_snprint_value(snmp_oids[i].result, RESULTS_BUFFER, vars->name, vars->name_length, vars);
++ snmp_snprint_value(temp_result, RESULTS_BUFFER, vars->name, vars->name_length, vars);
+ #else
+- sprint_value(snmp_oids[i].result, vars->name, vars->name_length, vars);
++ sprint_value(temp_result, vars->name, vars->name_length, vars);
+ #endif
+
++ snprintf(snmp_oids[i].result, RESULTS_BUFFER, "%s", trim(temp_result));
++
+ vars = vars->next_variable;
+ }
+ }
+diff -ruBbd cacti-spine-0.8.7g.old/spine.c cacti-spine-0.8.7g/spine.c
+--- cacti-spine-0.8.7g.old/spine.c 2010-07-09 17:39:53.000000000 -0400
++++ cacti-spine-0.8.7g/spine.c 2010-08-31 20:18:58.000000000 -0400
+@@ -94,6 +94,7 @@
+ int num_hosts = 0;
+ int active_threads = 0;
+ int active_scripts = 0;
++int thread_ready = FALSE;
+
+ config_t set;
+ php_t *php_processes = 0;
+@@ -134,7 +135,7 @@
+ int poller_counter = 0;
+ int last_active_threads = 0;
+ int valid_conf_file = FALSE;
+- long int EXTERNAL_THREAD_SLEEP = 5000;
++ long int EXTERNAL_THREAD_SLEEP = 50;
+ long int internal_thread_sleep;
+ char querybuf[BIG_BUFSIZE], *qp = querybuf;
+ char *host_time = NULL;
+@@ -196,6 +197,7 @@
+
+ /* we attempt to support scripts better in cygwin */
+ #if defined(__CYGWIN__)
++ setenv("CYGWIN", "nodosfilewarning", 1);
+ if (file_exists("./sh.exe")) {
+ set.cygwinshloc = 0;
+ printf("NOTE: The Shell Command Exists in the current directory\n");
+@@ -281,7 +283,7 @@
+
+ else if (STRMATCH(arg, "-H") ||
+ STRIMATCH(arg, "--hostlist")) {
+- snprintf(set.host_id_list, BIG_BUFSIZE, getarg(opt, &argv));
++ snprintf(set.host_id_list, BIG_BUFSIZE, "%s", getarg(opt, &argv));
+ }
+
+ else if (STRMATCH(arg, "-h") ||
+@@ -584,6 +586,11 @@
+ poller_details->host_data_ids = itemsPT;
+ poller_details->host_time = host_time;
+
++ /* this variable tells us that the child had loaded the poller
++ * poller_details structure and we can move on to the next thread
++ */
++ thread_ready = FALSE;
++
+ /* create child process */
+ thread_status = pthread_create(&threads[device_counter], &attr, child, poller_details);
+
+@@ -596,6 +603,11 @@
+ }
+ active_threads++;
+
++ /* wait for the child to read and process the structure */
++ while (!thread_ready) {
++ usleep(internal_thread_sleep);
++ }
++
+ SPINE_LOG_DEBUG(("DEBUG: The Value of Active Threads is %i", active_threads));
+
+ break;
+@@ -603,7 +615,7 @@
+ SPINE_LOG(("ERROR: The System Lacked the Resources to Create a Thread"));
+ break;
+ case EFAULT:
+- SPINE_LOG(("ERROR: The Thread or Attribute Was Invalid"));
++ SPINE_LOG(("ERROR: The Thread or Attribute were Invalid"));
+ break;
+ case EINVAL:
+ SPINE_LOG(("ERROR: The Thread Attribute is Not Initialized"));
+@@ -613,6 +625,8 @@
+ break;
+ }
+
++ thread_mutex_unlock(LOCK_THREAD);
++
+ /* get current time and exit program if time limit exceeded */
+ if (poller_counter >= 20) {
+ current_time = get_time_as_double();
+diff -ruBbd cacti-spine-0.8.7g.old/spine.h cacti-spine-0.8.7g/spine.h
+--- cacti-spine-0.8.7g.old/spine.h 2010-07-09 17:39:53.000000000 -0400
++++ cacti-spine-0.8.7g/spine.h 2010-08-31 20:18:58.000000000 -0400
+@@ -504,5 +504,6 @@
+ extern char start_datetime[20];
+ extern char config_paths[CONFIG_PATHS][BUFSIZE];
+ extern int active_threads;
++extern int thread_ready;
+
+ #endif /* not _SPINE_H_ */
+diff -ruBbd cacti-spine-0.8.7g.old/util.c cacti-spine-0.8.7g/util.c
+--- cacti-spine-0.8.7g.old/util.c 2010-07-09 17:39:53.000000000 -0400
++++ cacti-spine-0.8.7g/util.c 2010-08-31 20:18:58.000000000 -0400
+@@ -755,7 +755,7 @@
+ /* empty string is not all digits */
+ if ( *string == '\0' ) return FALSE;
+
+- while ( isdigit(*string) )
++ while ( isdigit((int)*string) )
+ string++;
+
+ return *string == '\0';
+@@ -773,7 +773,7 @@
+ */
+ int is_ipaddress(const char *string) {
+ while (*string) {
+- if ((isdigit(*string)) ||
++ if ((isdigit((int)*string)) ||
+ (*string == '.') ||
+ (*string == ':')) {
+ string++;
+@@ -887,7 +887,7 @@
+ i = strlen(string);
+
+ while (i >= 0) {
+- if (isdigit(string[i])) {
++ if (isdigit((int)string[i])) {
+ break;
+ }else{
+ string[i] = '\0';
+@@ -898,17 +898,15 @@
+ return string;
+ }
+
+-/*! \fn char *add_slashes(char *string, int arguments_2_strip)
+- * \brief change all backslashes to forward slashes for the first n arguements.
++/*! \fn char *add_slashes(char *string)
++ * \brief add escaping to back slashes on for Windows type commands.
+ * \param string the string to replace slashes
+- * \param arguments_2_strip the number of space delimited arguments to reverse
+ *
+ * \return a pointer to the modified string. Variable must be freed by parent.
+ *
+ */
+-char *add_slashes(char *string, int arguments_2_strip) {
++char *add_slashes(char *string) {
+ int length;
+- int space_count;
+ int position;
+ int new_position;
+ char *return_str;
+@@ -919,9 +917,8 @@
+ return_str[0] = '\0';
+
+ length = strlen(string);
+- space_count = 0;
+ position = 0;
+- new_position = position;
++ new_position = 0;
+
+ /* simply return on blank string */
+ if (!length) {
+@@ -931,17 +928,9 @@
+ while (position < length) {
+ /* backslash detected, change to forward slash */
+ if (string[position] == '\\') {
+- /* only add slashes for first x arguments */
+- if (space_count < arguments_2_strip) {
+- return_str[new_position] = '/';
+- }else{
+- return_str[new_position] = string[position];
+- }
+- /* end of argument detected */
+- }else if (string[position] == ' ') {
+- return_str[new_position] = ' ';
+- space_count++;
+- /* normal character detected */
++ return_str[new_position] = '\\';
++ new_position++;
++ return_str[new_position] = '\\';
+ }else{
+ return_str[new_position] = string[position];
+ }
+@@ -1248,7 +1237,7 @@
+ seteuid(0);
+
+ if (geteuid() != 0) {
+- SPINE_LOG_DEBUG(("WARNING: Spine NOT running asroot. This is require if using ICMP. Please run \"chmod +s;chown root:root spine\" to resolve."));
++ SPINE_LOG_DEBUG(("WARNING: Spine NOT running asroot. This is required if using ICMP. Please run \"chmod +s;chown root:root spine\" to resolve."));
+ set.icmp_avail = FALSE;
+ }else{
+ SPINE_LOG_DEBUG(("DEBUG: Spine is running asroot."));
+diff -ruBbd cacti-spine-0.8.7g.old/util.h cacti-spine-0.8.7g/util.h
+--- cacti-spine-0.8.7g.old/util.h 2010-07-09 17:39:53.000000000 -0400
++++ cacti-spine-0.8.7g/util.h 2010-08-31 20:18:58.000000000 -0400
+@@ -54,7 +54,7 @@
+ extern int is_hexadecimal(const char * str, const short ignore_space);
+
+ /* string and file functions */
+-extern char *add_slashes(char *string, int arguments_2_strip);
++extern char *add_slashes(char *string);
+ extern int file_exists(const char *filename);
+ extern char *strip_alpha(char *string);
+ extern char *strncopy(char *dst, const char *src, size_t n);
================================================================
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/cacti-spine/cacti-spine.spec?r1=1.34&r2=1.35&f=u
More information about the pld-cvs-commit
mailing list