Fix assert in DBus if dbus_server_listen returned NULL

ref T589
This commit is contained in:
Roland Rossgotterer
2019-04-03 08:59:54 +02:00
committed by Mat Sutcliffe
parent 77acffb73e
commit 821e0b10b6
5 changed files with 20 additions and 7 deletions

View File

@@ -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;

View File

@@ -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()

View File

@@ -22,7 +22,6 @@ namespace XSwiftBus
CService::CService() : CDBusObject() CService::CService() : CDBusObject()
{ {
addTextMessage("xswiftbus started.", 0, 255, 255);
updateAirportsInRange(); updateAirportsInRange();
} }

View File

@@ -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 << ' ';

View File

@@ -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)
//! @} //! @}
} }