Skip to content
Snippets Groups Projects
Commit e85652e7 authored by trilene's avatar trilene
Browse files

Fix percent-encoding of TURN server URI

parent c73cfe18
No related branches found
No related tags found
No related merge requests found
......@@ -274,7 +274,8 @@ CallManager::retrieveTurnServer()
void
CallManager::setTurnServers()
{
// gstreamer expects (percent-encoded): turn(s)://username:password@host:port?transport=udp(tcp)
// gstreamer expects: turn(s)://username:password@host:port?transport=udp(tcp)
// where username and password are percent-encoded
std::vector<std::string> uris;
for (const auto &uri : turnServer_.uris) {
if (auto c = uri.find(':'); c == std::string::npos) {
......@@ -287,9 +288,11 @@ CallManager::setTurnServers()
nhlog::ui()->error("Invalid TURN server uri: {}", uri);
continue;
}
std::string res = scheme + "://" + turnServer_.username + ":" + turnServer_.password
+ "@" + std::string(uri, ++c);
QString encodedUri = QUrl::toPercentEncoding(QString::fromStdString(res));
QString encodedUri = QString::fromStdString(scheme) + "://" +
QUrl::toPercentEncoding(QString::fromStdString(turnServer_.username)) + ":" +
QUrl::toPercentEncoding(QString::fromStdString(turnServer_.password)) + "@" +
QString::fromStdString(std::string(uri, ++c));
uris.push_back(encodedUri.toStdString());
}
}
......
......@@ -143,7 +143,7 @@ WebRTCSession::startPipeline(int opusPayloadType)
webrtc_ = gst_bin_get_by_name(GST_BIN(pipe_), "webrtcbin");
if (!stunServer_.empty()) {
nhlog::ui()->info("WebRTC: Setting stun server: {}", stunServer_);
nhlog::ui()->info("WebRTC: Setting STUN server: {}", stunServer_);
g_object_set(webrtc_, "stun-server", stunServer_.c_str(), nullptr);
}
addTurnServers();
......@@ -265,12 +265,9 @@ WebRTCSession::addTurnServers()
return;
for (const auto &uri : turnServers_) {
gboolean res;
g_signal_emit_by_name(webrtc_, "add-turn-server", uri.c_str(), (gpointer)(&res));
if (res)
nhlog::ui()->info("WebRTC: Set TURN server: {}", uri);
else
nhlog::ui()->error("WebRTC: Failed to set TURN server: {}", uri);
nhlog::ui()->info("WebRTC: Setting TURN server: {}", uri);
gboolean udata;
g_signal_emit_by_name(webrtc_, "add-turn-server", uri.c_str(), (gpointer)(&udata));
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment