added debug steps for whipclient
This commit is contained in:
@@ -62,6 +62,14 @@ namespace snoop
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
const std::string offer = std::string(desc);
|
const std::string offer = std::string(desc);
|
||||||
|
spdlog::info("Local SDP (first 8 lines):");
|
||||||
|
{
|
||||||
|
std::istringstream is(offer);
|
||||||
|
for (int i=0; i<8 && is; ++i) {
|
||||||
|
std::string line; std::getline(is, line);
|
||||||
|
spdlog::info(" {}", line);
|
||||||
|
}
|
||||||
|
}
|
||||||
auto [answer, resourceUrl] = PostOfferWHIP(offer);
|
auto [answer, resourceUrl] = PostOfferWHIP(offer);
|
||||||
m_resourceUrl = resourceUrl;
|
m_resourceUrl = resourceUrl;
|
||||||
m_pc->setRemoteDescription(rtc::Description(answer, "answer"));
|
m_pc->setRemoteDescription(rtc::Description(answer, "answer"));
|
||||||
@@ -81,14 +89,14 @@ namespace snoop
|
|||||||
m_track = m_pc->addTrack(audioDesc);
|
m_track = m_pc->addTrack(audioDesc);
|
||||||
|
|
||||||
// IMPORTANT: wait for SRTP sender to be ready
|
// IMPORTANT: wait for SRTP sender to be ready
|
||||||
m_track->onOpen([this] {
|
m_track->onOpen([this]
|
||||||
|
{
|
||||||
spdlog::info("WHIP track opened");
|
spdlog::info("WHIP track opened");
|
||||||
m_trackOpen = true;
|
m_trackOpen = true; });
|
||||||
});
|
m_track->onClosed([this]
|
||||||
m_track->onClosed([this] {
|
{
|
||||||
spdlog::info("WHIP track closed");
|
spdlog::info("WHIP track closed");
|
||||||
m_trackOpen = false;
|
m_trackOpen = false; });
|
||||||
});
|
|
||||||
// Initialize RTP state (random SSRC/seq)
|
// Initialize RTP state (random SSRC/seq)
|
||||||
std::mt19937 rng{std::random_device{}()};
|
std::mt19937 rng{std::random_device{}()};
|
||||||
m_ssrc = std::uniform_int_distribution<uint32_t>()(rng);
|
m_ssrc = std::uniform_int_distribution<uint32_t>()(rng);
|
||||||
@@ -185,12 +193,42 @@ namespace snoop
|
|||||||
return {answer, resourceUrl};
|
return {answer, resourceUrl};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// std::pair<std::string, std::string> PostOfferWHIP(const std::string &sdpOffer)
|
||||||
|
// {
|
||||||
|
// auto [cli, path] = MakeClientForUrl(sdpOffer, m_p.whipUrl);
|
||||||
|
// auto res = cli->Post(path.c_str(), sdpOffer, "application/sdp");
|
||||||
|
// auto [answer, resUrl] = ExtractAnswerAndLocation(res);
|
||||||
|
// return {answer, resUrl};
|
||||||
|
// }
|
||||||
|
|
||||||
std::pair<std::string, std::string> PostOfferWHIP(const std::string &sdpOffer)
|
std::pair<std::string, std::string> PostOfferWHIP(const std::string &sdpOffer)
|
||||||
{
|
{
|
||||||
auto [cli, path] = MakeClientForUrl(sdpOffer, m_p.whipUrl);
|
auto [cli, path] = MakeClientForUrl(sdpOffer, m_p.whipUrl);
|
||||||
auto res = cli->Post(path.c_str(), sdpOffer, "application/sdp");
|
|
||||||
auto [answer, resUrl] = ExtractAnswerAndLocation(res);
|
httplib::Headers hs{
|
||||||
return {answer, resUrl};
|
{"Content-Type", "application/sdp"},
|
||||||
|
{"Accept", "application/sdp"}};
|
||||||
|
|
||||||
|
spdlog::info("WHIP POST url='{}' path='{}' offer-bytes={}", m_p.whipUrl, path, sdpOffer.size());
|
||||||
|
auto res = cli->Post(path.c_str(), hs, sdpOffer, "application/sdp");
|
||||||
|
if (!res)
|
||||||
|
throw std::runtime_error("No HTTP result (network?)");
|
||||||
|
|
||||||
|
spdlog::info("WHIP POST -> status={} len={} location='{}'",
|
||||||
|
res->status, res->body.size(),
|
||||||
|
res->has_header("Location") ? res->get_header_value("Location") : "<none>");
|
||||||
|
|
||||||
|
if (res->status != 201 && res->status != 200)
|
||||||
|
{
|
||||||
|
spdlog::error("WHIP POST body:\n{}", res->body);
|
||||||
|
throw std::runtime_error("Unexpected WHIP status: " + std::to_string(res->status));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string answer = res->body;
|
||||||
|
std::string resourceUrl;
|
||||||
|
if (res->has_header("Location"))
|
||||||
|
resourceUrl = res->get_header_value("Location");
|
||||||
|
return {answer, resourceUrl};
|
||||||
}
|
}
|
||||||
|
|
||||||
void PatchCandidateWHIP(const rtc::Candidate &cand)
|
void PatchCandidateWHIP(const rtc::Candidate &cand)
|
||||||
|
|||||||
Reference in New Issue
Block a user