diff --git a/src/ice_transport.cpp b/src/ice_transport.cpp index 302db1b3ec7a5f9fd37502bd1a153d543b39531e..3db6a92559e80a2f26f8f14de8e64b5528511c67 100644 --- a/src/ice_transport.cpp +++ b/src/ice_transport.cpp @@ -554,9 +554,9 @@ IceTransport::Impl::handleEvents(unsigned max_msec) void IceTransport::Impl::onComplete(pj_ice_strans* ice_st, pj_ice_strans_op op, pj_status_t status) { - const char* opname = op == PJ_ICE_STRANS_OP_INIT - ? "initialization" - : op == PJ_ICE_STRANS_OP_NEGOTIATION ? "negotiation" : "unknown_op"; + const char* opname = op == PJ_ICE_STRANS_OP_INIT ? "initialization" + : op == PJ_ICE_STRANS_OP_NEGOTIATION ? "negotiation" + : "unknown_op"; const bool done = status == PJ_SUCCESS; if (done) { @@ -1243,9 +1243,6 @@ IceTransport::getLocalCandidates(unsigned comp_id) const res.reserve(cand_cnt); for (unsigned i = 0; i < cand_cnt; ++i) { - std::ostringstream val; - char ipaddr[PJ_INET6_ADDRSTRLEN]; - /** Section 4.5, RFC 6544 (https://tools.ietf.org/html/rfc6544) * candidate-attribute = "candidate" ":" foundation SP component-id * SP "TCP" SP priority SP connection-address SP port SP cand-type [SP @@ -1256,31 +1253,33 @@ IceTransport::getLocalCandidates(unsigned comp_id) const * tcp-type-ext = "tcptype" SP tcp-type * tcp-type = "active" / "passive" / "so" */ - val.write(cand[i].foundation.ptr, cand[i].foundation.slen); - val << " " << std::to_string(cand[i].comp_id); - val << (cand[i].transport == PJ_CAND_UDP ? " UDP " : " TCP "); - val << std::to_string(cand[i].prio); - val << " " << pj_sockaddr_print(&cand[i].addr, ipaddr, sizeof(ipaddr), 0); - val << " " << std::to_string((unsigned) pj_sockaddr_get_port(&cand[i].addr)); - val << " typ " << pj_ice_get_cand_type_name(cand[i].type); - + char ipaddr[PJ_INET6_ADDRSTRLEN]; + std::string tcp_type; if (cand[i].transport != PJ_CAND_UDP) { - val << " tcptype"; + tcp_type += " tcptype"; switch (cand[i].transport) { case PJ_CAND_TCP_ACTIVE: - val << " active"; + tcp_type += " active"; break; case PJ_CAND_TCP_PASSIVE: - val << " passive"; + tcp_type += " passive"; break; case PJ_CAND_TCP_SO: default: - val << " so"; + tcp_type += " so"; break; } } - - res.emplace_back(val.str()); + res.emplace_back( + fmt::format("{} {} {} {} {} {} typ {}{}", + std::string_view(cand[i].foundation.ptr, cand[i].foundation.slen), + cand[i].comp_id, + (cand[i].transport == PJ_CAND_UDP ? "UDP" : "TCP"), + cand[i].prio, + pj_sockaddr_print(&cand[i].addr, ipaddr, sizeof(ipaddr), 0), + pj_sockaddr_get_port(&cand[i].addr), + pj_ice_get_cand_type_name(cand[i].type), + tcp_type)); } return res;