diff --git a/libtransmission/peer-socket.cc b/libtransmission/peer-socket.cc index 31f1d9b5a..6bd867504 100644 --- a/libtransmission/peer-socket.cc +++ b/libtransmission/peer-socket.cc @@ -80,19 +80,19 @@ size_t tr_peer_socket::try_write(Buffer& buf, size_t max, tr_error** error) cons #ifdef WITH_UTP if (is_utp()) { - auto iov = buf.vecs(max); + auto [data, datalen] = buf.pullup(); errno = 0; - auto const n = utp_writev(handle.utp, reinterpret_cast(std::data(iov)), std::size(iov)); + auto const n_written = utp_write(handle.utp, data, std::min(datalen, max)); auto const error_code = errno; - if (n > 0) + if (n_written > 0) { - buf.drain(n); - return static_cast(n); + buf.drain(n_written); + return static_cast(n_written); } - if (n < 0 && error_code != 0) + if (n_written < 0 && error_code != 0) { tr_error_set(error, error_code, tr_strerror(error_code)); } diff --git a/libtransmission/tr-buffer.h b/libtransmission/tr-buffer.h index 5f7d98963..e9b9c8125 100644 --- a/libtransmission/tr-buffer.h +++ b/libtransmission/tr-buffer.h @@ -158,18 +158,6 @@ public: return evbuffer_get_length(buf_.get()) == 0; } - [[nodiscard]] auto vecs(size_t n_bytes) const - { - auto chains = std::vector(evbuffer_peek(buf_.get(), n_bytes, nullptr, nullptr, 0)); - evbuffer_peek(buf_.get(), n_bytes, nullptr, std::data(chains), std::size(chains)); - return chains; - } - - [[nodiscard]] auto vecs() const - { - return vecs(size()); - } - [[nodiscard]] auto begin() noexcept { return Iterator{ buf_.get(), 0U };