]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/configuration/sgconfig/configproto.cpp
Handle failures in Conn ctor.
[stg.git] / projects / stargazer / plugins / configuration / sgconfig / configproto.cpp
index d28ece173c4aba4ecd6d5d50b764d6c17528b068..847e1ebc7e2feeac81c22ef2b6332f783cba09f9 100644 (file)
@@ -230,9 +230,16 @@ void CONFIGPROTO::AcceptConnection()
     assert(m_users != NULL);
     assert(m_tariffs != NULL);
 
     assert(m_users != NULL);
     assert(m_tariffs != NULL);
 
-    m_conns.push_back(new STG::Conn(*m_settings, *m_admins, *m_users, *m_tariffs, sock, outerAddr));
-
-    printfd(__FILE__, "New connection from %s:%d\n", inet_ntostring(m_conns.back()->IP()).c_str(), m_conns.back()->Port());
+    try
+    {
+        m_conns.push_back(new STG::Conn(*m_settings, *m_admins, *m_users, *m_tariffs, sock, outerAddr));
+        printfd(__FILE__, "New connection from %s:%d\n", inet_ntostring(m_conns.back()->IP()).c_str(), m_conns.back()->Port());
+    }
+    catch (const STG::Conn::Error & error)
+    {
+        // Unlikely.
+        m_logger(std::string("Failed to create new client connection: '") + error.what() + "'.");
+    }
 }
 /*
 void CONFIGPROTO::WriteLogAccessFailed(uint32_t ip)
 }
 /*
 void CONFIGPROTO::WriteLogAccessFailed(uint32_t ip)