mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-29 14:18:49 +03:00
Fix percent-encoding of TURN server URI
This commit is contained in:
parent
c73cfe1810
commit
e85652e7e7
2 changed files with 11 additions and 11 deletions
|
@ -274,7 +274,8 @@ CallManager::retrieveTurnServer()
|
||||||
void
|
void
|
||||||
CallManager::setTurnServers()
|
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;
|
std::vector<std::string> uris;
|
||||||
for (const auto &uri : turnServer_.uris) {
|
for (const auto &uri : turnServer_.uris) {
|
||||||
if (auto c = uri.find(':'); c == std::string::npos) {
|
if (auto c = uri.find(':'); c == std::string::npos) {
|
||||||
|
@ -287,9 +288,11 @@ CallManager::setTurnServers()
|
||||||
nhlog::ui()->error("Invalid TURN server uri: {}", uri);
|
nhlog::ui()->error("Invalid TURN server uri: {}", uri);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
std::string res = scheme + "://" + turnServer_.username + ":" + turnServer_.password
|
|
||||||
+ "@" + std::string(uri, ++c);
|
QString encodedUri = QString::fromStdString(scheme) + "://" +
|
||||||
QString encodedUri = QUrl::toPercentEncoding(QString::fromStdString(res));
|
QUrl::toPercentEncoding(QString::fromStdString(turnServer_.username)) + ":" +
|
||||||
|
QUrl::toPercentEncoding(QString::fromStdString(turnServer_.password)) + "@" +
|
||||||
|
QString::fromStdString(std::string(uri, ++c));
|
||||||
uris.push_back(encodedUri.toStdString());
|
uris.push_back(encodedUri.toStdString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,7 +143,7 @@ WebRTCSession::startPipeline(int opusPayloadType)
|
||||||
webrtc_ = gst_bin_get_by_name(GST_BIN(pipe_), "webrtcbin");
|
webrtc_ = gst_bin_get_by_name(GST_BIN(pipe_), "webrtcbin");
|
||||||
|
|
||||||
if (!stunServer_.empty()) {
|
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);
|
g_object_set(webrtc_, "stun-server", stunServer_.c_str(), nullptr);
|
||||||
}
|
}
|
||||||
addTurnServers();
|
addTurnServers();
|
||||||
|
@ -265,12 +265,9 @@ WebRTCSession::addTurnServers()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (const auto &uri : turnServers_) {
|
for (const auto &uri : turnServers_) {
|
||||||
gboolean res;
|
nhlog::ui()->info("WebRTC: Setting TURN server: {}", uri);
|
||||||
g_signal_emit_by_name(webrtc_, "add-turn-server", uri.c_str(), (gpointer)(&res));
|
gboolean udata;
|
||||||
if (res)
|
g_signal_emit_by_name(webrtc_, "add-turn-server", uri.c_str(), (gpointer)(&udata));
|
||||||
nhlog::ui()->info("WebRTC: Set TURN server: {}", uri);
|
|
||||||
else
|
|
||||||
nhlog::ui()->error("WebRTC: Failed to set TURN server: {}", uri);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue