mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-25 18:25:42 +08:00
Fix assert in DBus if dbus_server_listen returned NULL
ref T589
This commit is contained in:
committed by
Mat Sutcliffe
parent
77acffb73e
commit
821e0b10b6
@@ -34,23 +34,30 @@ namespace XSwiftBus
|
|||||||
DBusError error;
|
DBusError error;
|
||||||
dbus_error_init(&error);
|
dbus_error_init(&error);
|
||||||
m_server.reset(dbus_server_listen(address.c_str(), &error));
|
m_server.reset(dbus_server_listen(address.c_str(), &error));
|
||||||
|
|
||||||
|
if (! m_server)
|
||||||
|
{
|
||||||
|
ERROR_LOG("DBus failed to listen for new connections on given address: " + std::string(error.message));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
dbus_server_set_new_connection_function(m_server.get(), onNewConnection, this, nullptr);
|
dbus_server_set_new_connection_function(m_server.get(), onNewConnection, this, nullptr);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CDBusServer::isConnected() const
|
bool CDBusServer::isConnected() const
|
||||||
{
|
{
|
||||||
return dbus_server_get_is_connected(m_server.get());
|
return m_server ? dbus_server_get_is_connected(m_server.get()) : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDBusServer::close()
|
void CDBusServer::close()
|
||||||
{
|
{
|
||||||
dbus_server_disconnect(m_server.get());
|
if (m_server) { dbus_server_disconnect(m_server.get()); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDBusServer::setDispatcher(CDBusDispatcher *dispatcher)
|
void CDBusServer::setDispatcher(CDBusDispatcher *dispatcher)
|
||||||
{
|
{
|
||||||
assert(dispatcher);
|
assert(dispatcher);
|
||||||
|
assert(m_server);
|
||||||
|
|
||||||
m_dispatcher = dispatcher;
|
m_dispatcher = dispatcher;
|
||||||
|
|
||||||
|
|||||||
@@ -103,7 +103,11 @@ namespace XSwiftBus
|
|||||||
|
|
||||||
// FIXME: make listen address configurable
|
// FIXME: make listen address configurable
|
||||||
std::string listenAddress = "tcp:host=" + m_pluginConfig.getDBusAddress() + ",port=" + std::to_string(m_pluginConfig.getDBusPort());
|
std::string listenAddress = "tcp:host=" + m_pluginConfig.getDBusAddress() + ",port=" + std::to_string(m_pluginConfig.getDBusPort());
|
||||||
m_dbusP2PServer->listen(listenAddress);
|
if (! m_dbusP2PServer->listen(listenAddress))
|
||||||
|
{
|
||||||
|
m_service->addTextMessage("XSwiftBus startup failed!", 255, 0, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
m_dbusP2PServer->setDispatcher(&m_dbusDispatcher);
|
m_dbusP2PServer->setDispatcher(&m_dbusDispatcher);
|
||||||
|
|
||||||
m_dbusP2PServer->setNewConnectionFunc([this](const std::shared_ptr<CDBusConnection> &conn)
|
m_dbusP2PServer->setNewConnectionFunc([this](const std::shared_ptr<CDBusConnection> &conn)
|
||||||
@@ -140,7 +144,9 @@ namespace XSwiftBus
|
|||||||
m_weather->registerDBusObjectPath(m_weather->InterfaceName(), m_weather->ObjectPath());
|
m_weather->registerDBusObjectPath(m_weather->InterfaceName(), m_weather->ObjectPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! todo RR: Send all logs to the the message window.
|
||||||
INFO_LOG("XSwiftBus started.");
|
INFO_LOG("XSwiftBus started.");
|
||||||
|
m_service->addTextMessage("XSwiftBus started.", 0, 255, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPlugin::onAircraftModelChanged()
|
void CPlugin::onAircraftModelChanged()
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ namespace XSwiftBus
|
|||||||
|
|
||||||
CService::CService() : CDBusObject()
|
CService::CService() : CDBusObject()
|
||||||
{
|
{
|
||||||
addTextMessage("xswiftbus started.", 0, 255, 255);
|
|
||||||
updateAirportsInRange();
|
updateAirportsInRange();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,8 +67,8 @@ namespace XSwiftBus
|
|||||||
case WarningMsg:
|
case WarningMsg:
|
||||||
ss << "Warning";
|
ss << "Warning";
|
||||||
break;
|
break;
|
||||||
case FatalMsg:
|
case ErrorMsg:
|
||||||
ss << "Fatal";
|
ss << "Error";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ss << ' ';
|
ss << ' ';
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace XSwiftBus
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//! Message type
|
//! Message type
|
||||||
enum MsgType { DebugMsg, WarningMsg, FatalMsg, InfoMsg };
|
enum MsgType { DebugMsg, WarningMsg, ErrorMsg, InfoMsg };
|
||||||
|
|
||||||
Logger() = delete;
|
Logger() = delete;
|
||||||
|
|
||||||
@@ -44,6 +44,7 @@ namespace XSwiftBus
|
|||||||
#define DEBUG_LOG(msg) Logger::print(__FILE__, __LINE__, Logger::DebugMsg, msg)
|
#define DEBUG_LOG(msg) Logger::print(__FILE__, __LINE__, Logger::DebugMsg, msg)
|
||||||
#define INFO_LOG(msg) Logger::print(__FILE__, __LINE__, Logger::InfoMsg, msg)
|
#define INFO_LOG(msg) Logger::print(__FILE__, __LINE__, Logger::InfoMsg, msg)
|
||||||
#define WARNING_LOG(msg) Logger::print(__FILE__, __LINE__, Logger::WarningMsg, msg)
|
#define WARNING_LOG(msg) Logger::print(__FILE__, __LINE__, Logger::WarningMsg, msg)
|
||||||
|
#define ERROR_LOG(msg) Logger::print(__FILE__, __LINE__, Logger::ErrorMsg, msg)
|
||||||
//! @}
|
//! @}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user