Fix crash

This commit is contained in:
badaix 2025-01-25 18:03:13 +01:00
parent d7ddfc8b88
commit 3d5744c6b0
3 changed files with 18 additions and 11 deletions

View file

@ -173,15 +173,15 @@ void ClientConnection::connect(const ResultHandler& handler)
void ClientConnection::sendNext()
{
auto& message = messages_.front();
boost::asio::streambuf streambuf;
std::ostream stream(&streambuf);
std::ostream stream(&streambuf_);
tv t;
message.msg->sent = t;
message.msg->serialize(stream);
ResultHandler handler = message.handler;
write(streambuf, [this, handler](boost::system::error_code ec, std::size_t length)
write(streambuf_, [this, handler](boost::system::error_code ec, std::size_t length)
{
streambuf_.consume(length);
if (ec)
LOG(ERROR, LOG_TAG) << "Failed to send message, error: " << ec.message() << "\n";
else

View file

@ -173,6 +173,8 @@ protected:
ClientSettings::Server server_;
/// Size of a base message (= message header)
const size_t base_msg_size_;
/// Send stream buffer
boost::asio::streambuf streambuf_;
/// A pending request
struct PendingMessage

View file

@ -204,14 +204,6 @@ int main(int argc, char** argv)
exit(EXIT_FAILURE);
}
if (!op.non_option_args().empty())
{
streamreader::StreamUri uri(op.non_option_args().front());
settings.server.host = uri.host;
settings.server.port = uri.port.value_or(settings.server.port);
settings.server.protocol = uri.scheme;
}
if (versionSwitch->is_set())
{
cout << "snapclient v" << version::code << (!version::rev().empty() ? (" (rev " + version::rev(8) + ")") : ("")) << "\n"
@ -313,6 +305,19 @@ int main(int argc, char** argv)
else
throw SnapException("Invalid log sink: " + settings.logging.sink);
if (!op.non_option_args().empty())
{
streamreader::StreamUri uri(op.non_option_args().front());
settings.server.host = uri.host;
settings.server.protocol = uri.scheme;
if (uri.port.has_value())
settings.server.port = uri.port.value();
else if (settings.server.protocol == "ws")
settings.server.port = 1780;
else if (settings.server.protocol == "wss")
settings.server.port = 1788;
}
#if !defined(HAS_AVAHI) && !defined(HAS_BONJOUR)
if (settings.server.host.empty())
throw SnapException("Snapserver host not configured and mDNS not available, please configure with \"--host\".");