On Thursday 06 October 2005 16:36, Jason Kim wrote: > > What is your suggested resolution of the problem? > > I propose: a) querying cfagent for the correct VUQNAME/VDOMAIN from within > GetCfStuff (it already queries for VFQNAME) instead of using calls to > GetNameInfo(), and b) possibly making the 'domain' variable mandatory > within all cfagent confs. My reasoning for this is that according to my > tests, cfagent will always come to the correct name/domain conclusions _as > long as_ a 'domain' var is set, regardless of whether or not the hostname > is fully qualified or not. > > One possible issue with this is that GetNameInfo() seems to set certain > classes as a side effect, and I'm not sure whether this behavior is > required in cfexecd. I didn't see any obvious need for it, but I'm sure I > don't know the code as well as you... > I've patched cfexecd from the latest subversion code and tested it using both qualified and unqualified hostnames, it's been working fine for a few hours now. The patch wasn't as invasive as I'd originally feared, but it does affect GetCfStuff() and ScheduleRun() functions.
-JayKim
Index: src/cfexecd.c =================================================================== --- src/cfexecd.c (revision 140) +++ src/cfexecd.c (working copy) @@ -244,9 +244,8 @@ strncpy(VLOGDIR,CFWORKDIR,CF_BUFSIZE-1); VCANONICALFILE = strdup(CanonifyName(VINPUTFILE)); -GetNameInfo(); -strcpy(VUQNAME,VSYSNAME.nodename); +GetCfStuff(); MAILTO[0] = '\0'; MAILFROM[0] = '\0'; @@ -411,7 +410,7 @@ /* Do not init variables here, in case we can use previous values. */ -snprintf(cfcom,CF_BUFSIZE-1,"%s/bin/cfagent -Q smtpserver,sysadm,fqhost,ipaddress,EmailMaxLines,EmailFrom,EmailTo -D from_cfexecd",CFWORKDIR); +snprintf(cfcom,CF_BUFSIZE-1,"%s/bin/cfagent -Q smtpserver,sysadm,fqhost,host,domain,ipaddress,EmailMaxLines,EmailFrom,EmailTo -D from_cfexecd",CFWORKDIR); if ((pp=cfpopen(cfcom,"r")) == NULL) { @@ -449,6 +448,20 @@ continue; } + if (strcmp(name,"host") == 0) + { + Debug("%s/%s\n",name,content); + strncpy(VUQNAME,content,CF_MAXVARSIZE-1); + continue; + } + + if (strcmp(name,"domain") == 0) + { + Debug("%s/%s\n",name,content); + strncpy(VDOMAIN,content,CF_MAXVARSIZE-1); + continue; + } + if (strcmp(name,"ipaddress") == 0) { Debug("%s/%s\n",name,content); @@ -496,7 +509,7 @@ cfpclose(pp); -Debug("Got(to:%s,serv:%s,host:%s,ip:%s,max:%d,from:%s)\n",MAILTO,VMAILSERVER,VFQNAME,VIPADDRESS,MAXLINES,MAILFROM); +Debug("Got(to:%s,serv:%s,fqhost:%s,host:%s,domain:%s,ip:%s,max:%d,from:%s)\n",MAILTO,VMAILSERVER,VFQNAME,VUQNAME,VDOMAIN,VIPADDRESS,MAXLINES,MAILFROM); /* Now get schedule */ @@ -563,16 +576,12 @@ Verbose("Waking up the agent at %s ~ %s \n",timekey,ip->name); DeleteItemList(VHEAP); VHEAP = NULL; - GetNameInfo(); - strcpy(VUQNAME,VSYSNAME.nodename); return true; } } DeleteItemList(VHEAP); VHEAP = NULL; -GetNameInfo(); -strcpy(VUQNAME,VSYSNAME.nodename); return false; }
_______________________________________________ Bug-cfengine mailing list Bug-cfengine@gnu.org http://lists.gnu.org/mailman/listinfo/bug-cfengine