Fix non-existing endpoint on ApiListener error

refs #6724
This commit is contained in:
Michael Friedrich 2014-08-04 14:03:37 +02:00
parent 9c9982616b
commit 7b8dc1d97e
2 changed files with 25 additions and 6 deletions

View File

@ -1009,6 +1009,7 @@ void Application::MakeVariablesConstant(void)
ScriptVariable::GetByName("PrefixDir")->SetConstant(true); ScriptVariable::GetByName("PrefixDir")->SetConstant(true);
ScriptVariable::GetByName("SysconfDir")->SetConstant(true); ScriptVariable::GetByName("SysconfDir")->SetConstant(true);
ScriptVariable::GetByName("LocalStateDir")->SetConstant(true); ScriptVariable::GetByName("LocalStateDir")->SetConstant(true);
ScriptVariable::GetByName("RunDir")->SetConstant(true);
ScriptVariable::GetByName("PkgDataDir")->SetConstant(true); ScriptVariable::GetByName("PkgDataDir")->SetConstant(true);
ScriptVariable::GetByName("StatePath")->SetConstant(false); ScriptVariable::GetByName("StatePath")->SetConstant(false);
ScriptVariable::GetByName("PidPath")->SetConstant(false); ScriptVariable::GetByName("PidPath")->SetConstant(false);

View File

@ -898,6 +898,12 @@ void ApiEvents::RepositoryTimerHandler(void)
} }
Endpoint::Ptr my_endpoint = Endpoint::GetLocalEndpoint(); Endpoint::Ptr my_endpoint = Endpoint::GetLocalEndpoint();
if (!my_endpoint) {
Log(LogWarning, "ApiEvents", "No local endpoint defined. Bailing out.");
return;
}
Zone::Ptr my_zone = my_endpoint->GetZone(); Zone::Ptr my_zone = my_endpoint->GetZone();
Dictionary::Ptr params = make_shared<Dictionary>(); Dictionary::Ptr params = make_shared<Dictionary>();
@ -965,14 +971,26 @@ Value ApiEvents::UpdateRepositoryAPIHandler(const MessageOrigin& origin, const D
String ApiEvents::GetVirtualHostName(const Host::Ptr& host) String ApiEvents::GetVirtualHostName(const Host::Ptr& host)
{ {
String host_name = host->GetName(); String host_name = host->GetName();
if (host_name == "localhost") if (host_name == "localhost") {
host_name = Endpoint::GetLocalEndpoint()->GetName(); Endpoint::Ptr local = Endpoint::GetLocalEndpoint();
if (!local)
return Empty;
host_name = local->GetName();
}
return host_name; return host_name;
} }
Host::Ptr ApiEvents::FindHostByVirtualName(const String& hostName) Host::Ptr ApiEvents::FindHostByVirtualName(const String& hostName)
{ {
if (hostName == Endpoint::GetLocalEndpoint()->GetName()) Endpoint::Ptr local = Endpoint::GetLocalEndpoint();
if (!local)
return Host::Ptr();
if (hostName == local->GetName())
return Host::GetByName("localhost"); return Host::GetByName("localhost");
else else
return Host::GetByName(hostName); return Host::GetByName(hostName);