///////////////////////////////cc.p////////////////////////////////////////
prefix_ senf::console::UDPServer::UDPServer(senf::INet4SocketAddress const & address)
- : replies_ (true), target_ (), handle_ (senf::UDPv4ClientSocketHandle(address)),
+ : replies_ (true), emptyReplies_ (true), target_ (),
+ handle_ (senf::UDPv4ClientSocketHandle(address)),
readevent_ ("senf::console::UDPServer::readevent",
senf::membind(&UDPServer::handleInput, this),
handle_,
{
if (address.address().multicast())
handle_.facet<senf::INet4MulticastSocketProtocol>().mcAddMembership(address.address());
- SENF_LOG(("UDP Console server started at " << address));
+ SENF_LOG(("UDP Console server started at " << address ));
}
prefix_ senf::console::UDPServer::UDPServer(senf::INet6SocketAddress const & address)
{
if (address.address().multicast())
handle_.facet<senf::INet6MulticastSocketProtocol>().mcAddMembership(address.address());
- SENF_LOG(("UDP Console server started at " << address));
+ SENF_LOG(("UDP Console server started at " << address ));
}
prefix_ senf::console::UDPServer & senf::console::UDPServer::replies(bool enable)
return *this;
}
+prefix_ senf::console::UDPServer & senf::console::UDPServer::emptyReplies(bool enable)
+{
+ emptyReplies_ = enable;
+ return *this;
+}
+
prefix_ senf::console::DirectoryNode & senf::console::UDPServer::root()
const
{
senf::GenericBSDSocketAddress address;
handle_.readfrom(data, address, 0u);
boost::trim(data);
-
+
executor_.cwd(executor_.chroot());
std::stringstream stream;
try {
catch (Executor::ExitException &) {
// Ignored
}
+ catch (ExceptionMixin & ex) {
+ stream << ex.message() << '\n';
+ SENF_LOG((senf::log::IMPORTANT)("Error: " << ex.message()));
+ SENF_LOG((senf::log::NOTICE)(ex.backtrace()));
+ }
catch (std::exception & ex) {
- std::string msg (ex.what());
- std::string::size_type i (msg.find("-- \n"));
- if (i != std::string::npos)
- msg = msg.substr(i+4);
- stream << msg << std::endl;
+ stream << ex.what() << '\n';
+ SENF_LOG((senf::log::IMPORTANT)("Error: " << ex.what()));
}
- if (replies_) {
+ if (replies_ && (emptyReplies_ || ! stream.str().empty())) {
if (target_)
address = target_;
if (stream.str().empty())