From 88454983fd030d7f79db0628bb3dea14733ac862 Mon Sep 17 00:00:00 2001
From: meini <meini@meini-desktop.ARBEITSGRUPPE>
Date: Thu, 26 Mar 2009 11:43:05 +0100
Subject: Node not found bugfix & unnecessary classref removed

---
 src/awds/config.h |    2 +-
 src/config.cc     |   30 +++++++++++++++++-------------
 2 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/src/awds/config.h b/src/awds/config.h
index ee197a671473887d687e9a05f4491bc62ab20c6e..5741a2b8e4ad3c1b384959f6174ea0f3102e7f64 100644
--- a/src/awds/config.h
+++ b/src/awds/config.h
@@ -28,7 +28,7 @@ public:
 	//int remoteConfigAnnounce(char* name,ConfigVariableType cvt,void* thisref,variableGetHandler vgh,variableSetHandler vsh,void* value=NULL);
 	virtual int registerVar(ConfigVariable* cv);
 	int configAddCommand();
-	int remoteCall(Config* classref,std::string variableName,std::string variableValue,std::string nodeList);
+	int remoteCall(std::string variableName,std::string variableValue,std::string nodeList);
 
 	static int remoteconfig_command_fn(ShellClient &sc, void *data, int argc, char **argv);
 	static int requestHandler (void *data, ReadMarshalStream*  msIn, WriteMarshalStream* msOut, const awds::NodeId& src);
diff --git a/src/config.cc b/src/config.cc
index b413557b6446a1e564aa591d94c49d47281d3cf0..555fd24409e96e871e7e8f9f2ab1541759b00b56 100644
--- a/src/config.cc
+++ b/src/config.cc
@@ -97,7 +97,7 @@ int Config::configAddCommand() {
 		       config_cmd_usage);
     return 0;
 }
-int Config::remoteCall(Config* classref,std::string nodeList,std::string variableName,std::string variableValue)
+int Config::remoteCall(std::string nodeList,std::string variableName,std::string variableValue)
 {
 	REP_MAP_OBJ(SppManager2 *,sppManager);
 	if(!sppManager)
@@ -119,17 +119,17 @@ int Config::remoteCall(Config* classref,std::string nodeList,std::string variabl
 	}
 	if(!nodeList.compare("..")) //broadcast
 	{
-		if(classref->shellClient!=NULL)
-			if(classref->shellClient->state==ShellClient::CS_Idle)
-				classref->shellClient->block();
+		if(shellClient!=NULL)
+			if(shellClient->state==ShellClient::CS_Idle)
+				shellClient->block();
 		gea::AbsTime t_start = gea::AbsTime(GEA.lastEventTime);
 		sppManager->sendRequestAll( 9876, (void*) &rcmo, Config::requestCreator, &t_start, Config::responseHandler,&t_start,Config::finishedHandler);
 	}
 	else
 	{
-		if(classref->shellClient)
-			if(classref->shellClient->state==ShellClient::CS_Idle)
-				classref->shellClient->block();
+		if(shellClient)
+			if(shellClient->state==ShellClient::CS_Idle)
+				shellClient->block();
 		char nodes[nodeList.length()+1];
 		memset(nodes,0,nodeList.length()+1);
 		memcpy(nodes,nodeList.c_str(),nodeList.length());
@@ -142,9 +142,13 @@ int Config::remoteCall(Config* classref,std::string nodeList,std::string variabl
 			REP_MAP_OBJ(awds::Routing *,awdsRouting);
 			if(awdsRouting)
 			{
-				awdsRouting->getNodeByName(dest,pch);
-				classref->requestCount++;
-				sppManager->sendRequest(dest,9876,(void*) &rcmo, Config::requestCreator, &t_start, Config::responseHandler);
+				if(awdsRouting->getNodeByName(dest,pch))
+				{
+					requestCount++;
+					sppManager->sendRequest(dest,9876,(void*) &rcmo, Config::requestCreator, &t_start, Config::responseHandler);
+				}
+				else
+					*(shellClient->sockout) << "Unknown Node: " << pch << std::endl;
 			}
 			pch = strtok_r(NULL, ",", &p);
 		}
@@ -164,7 +168,7 @@ int Config::remoteconfig_command_fn(ShellClient &sc, void *data, int argc, char
 	}
 	else
 	if(argc==4)
-		self->remoteCall(self,argv[1],argv[2],argv[3]);
+		self->remoteCall(argv[1],argv[2],argv[3]);
 	else
 	{
 		VariablesMap::iterator it = self->remoteVariables.find(argv[1]);
@@ -183,9 +187,9 @@ int Config::remoteconfig_command_fn(ShellClient &sc, void *data, int argc, char
 		else
 		{
 			if(argc==2)		
-				self->remoteCall(self,argv[1],"","");
+				self->remoteCall(argv[1],"","");
 			else 
-				self->remoteCall(self,argv[1],argv[2],"");
+				self->remoteCall(argv[1],argv[2],"");
 		}
 	}
 	return 0;
-- 
1.6.2.1


