[Spread-cvs] commit: r248 - trunk/daemon
jonathan at spread.org
jonathan at spread.org
Fri Jul 15 11:43:00 EDT 2005
Author: jonathan
Date: 2005-07-15 11:43:00 -0400 (Fri, 15 Jul 2005)
New Revision: 248
Modified:
trunk/daemon/configuration.c
Log:
Add spread daemon version number to configuration hash.
This will prevent daemons with different version from inter-operating.
Modified: trunk/daemon/configuration.c
===================================================================
--- trunk/daemon/configuration.c 2005-07-15 15:42:01 UTC (rev 247)
+++ trunk/daemon/configuration.c 2005-07-15 15:43:00 UTC (rev 248)
@@ -266,12 +266,52 @@
return(need_partition);
}
+/* conf_convert_version_to_string()
+ * char * segstr : output string
+ * int strsize : length of output string space
+ * int return : length of string written or -1 if error (like string not have room)
+ *
+ *
+ * The string will have appended to it the spread version number in the following format.
+ *
+ * "Version: 3.17.3\n"
+ *
+ */
+static int conf_convert_version_to_string(char *segstr, int strsize)
+{
+ size_t curlen = 0;
+ char temp_str[30];
+
+ sprintf(temp_str, "Version: %d.%d.%d",
+ SP_MAJOR_VERSION,
+ SP_MINOR_VERSION,
+ SP_PATCH_VERSION );
+
+ strncat( segstr, temp_str, strsize - curlen);
+ curlen += strlen(temp_str);
+
+ /* terminate each segment by a newline */
+ strncat( segstr, "\n", strsize - curlen);
+ curlen += 1;
+
+ if (curlen > strsize) {
+ /* ran out of space in string -- should never happen. */
+ Alarmp( SPLOG_ERROR, CONF, "The conf hash string is too long! %d characters attemped is more then %d characters allowed", curlen, strsize);
+ Alarmp( SPLOG_ERROR, CONF, "The error occured when adding the version number. Successful string was: %s\n", segstr);
+ return(-1);
+ }
+
+ Alarmp( SPLOG_DEBUG, CONF, "The version string is %d characters long:\n%s", curlen, segstr);
+ return(curlen);
+}
+
void Conf_load_conf_file( char *file_name, char *my_name )
{
struct hostent *host_ptr;
char machine_name[256];
char ip[16];
int i,j;
+ int added_len;
unsigned int name_len;
char configfile_location[MAXPATHLEN];
@@ -327,11 +367,18 @@
}
}
+ /* Add Spread daemon version number to hash string */
+ added_len = conf_convert_version_to_string(&ConfStringRep[ConfStringLen], MAX_CONF_STRING - ConfStringLen );
+ if (added_len == -1 )
+ Alarmp( SPLOG_FATAL, CONF, "Failed to update string with version number!\n");
+ ConfStringLen += added_len;
+
/* calculate hash value of configuration.
* This daemon will only work with other daemons who have an identical hash value.
*/
Config->hash_code = conf_hash_string(ConfStringRep, ConfStringLen);
- Alarmp(SPLOG_DEBUG, CONF, "Hash value for this configuration is: %u\n", Config->hash_code);
+ Alarmp( SPLOG_DEBUG, CONF, "Full hash string is %d characters long:\n%s", ConfStringLen, ConfStringRep);
+ Alarmp( SPLOG_DEBUG, CONF, "Hash value for this configuration is: %u\n", Config->hash_code);
/* Match my IP address to entry in configuration file */
if( my_name == NULL ){
More information about the Spread-cvs
mailing list