Skip to content

Commit

Permalink
chore: pr comments
Browse files Browse the repository at this point in the history
  • Loading branch information
achingbrain committed Jan 17, 2025
1 parent 9157c0c commit b8ccdc4
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 27 deletions.
11 changes: 3 additions & 8 deletions include/rtc/global.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,16 @@ RTC_CPP_EXPORT void InitLogger(LogLevel level, LogCallback callback = nullptr);
RTC_CPP_EXPORT void Preload();
RTC_CPP_EXPORT std::shared_future<void> Cleanup();

struct UnhandledStunRequest {
struct IceUdpMuxRequest {
std::string localUfrag;
std::string remoteUfrag;
std::string remoteHost;
uint16_t remotePort;
};

RTC_CPP_EXPORT typedef std::function<void(UnhandledStunRequest request, void* userPtr)> UnhandledStunRequestCallback;
RTC_CPP_EXPORT typedef std::function<void(IceUdpMuxRequest request)> IceUdpMuxCallback;

struct UnhandledStunRequestHandler {
UnhandledStunRequestCallback callback;
void *userPtr;
};

RTC_CPP_EXPORT void OnUnhandledStunRequest(std::string host, int port, UnhandledStunRequestCallback callback = nullptr, void *userPtr = nullptr);
RTC_CPP_EXPORT void ListenIceUdpMux (int port, IceUdpMuxCallback *callback, std::optional<std::string> bindAddress = nullptr);

struct SctpSettings {
// For the following settings, not set means optimized default
Expand Down
31 changes: 12 additions & 19 deletions src/global.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,41 +93,40 @@ std::shared_future<void> Cleanup() { return impl::Init::Instance().cleanup(); }

void SetSctpSettings(SctpSettings s) { impl::Init::Instance().setSctpSettings(std::move(s)); }

std::map<int, UnhandledStunRequestHandler *> unboundStunCallbacks;

#if !USE_NICE

void InvokeUnhandledStunRequestCallback (const juice_mux_binding_request *info, void *user_ptr) {
PLOG_DEBUG << "Invoking unhandled STUN request callback";

UnhandledStunRequestHandler *handler = (struct UnhandledStunRequestHandler*)user_ptr;
IceUdpMuxCallback *callback = (IceUdpMuxCallback*)user_ptr;

if (handler->callback) {
handler->callback({
if (callback) {
printf("invoking callback\n");
(*callback)({
std::string(info->local_ufrag),
std::string(info->remote_ufrag),
std::string(info->address),
info->port
}, handler->userPtr);
});
} else {
PLOG_DEBUG << "No unhandled STUN request callback configured for port " << info->port;
}
}

#endif

void OnUnhandledStunRequest ([[maybe_unused]] std::string host, [[maybe_unused]] int port, [[maybe_unused]] UnhandledStunRequestCallback callback, [[maybe_unused]] void *userPtr) {
void ListenIceUdpMux ([[maybe_unused]] int port, [[maybe_unused]] IceUdpMuxCallback *callback, [[maybe_unused]] std::optional<std::string> bindAddress) {
#if USE_NICE
PLOG_WARNING << "BindStunListener is not supported with libnice, please use libjuice";
#else
// NULL host binds to all available addresses
const char *host = bindAddress.has_value() ? bindAddress.value().c_str() : NULL;

if (callback == NULL) {
PLOG_DEBUG << "Removing unhandled STUN request listener";

free(unboundStunCallbacks.at(port));
unboundStunCallbacks.erase(port);

// call with NULL callback to unbind
if (juice_mux_listen(host.c_str(), port, NULL, NULL) < 0) {
// call with NULL callback to remove the listener for the host/port
if (juice_mux_listen(host, port, NULL, NULL) < 0) {
throw std::runtime_error("Could not unbind STUN listener");
}

Expand All @@ -136,13 +135,7 @@ void OnUnhandledStunRequest ([[maybe_unused]] std::string host, [[maybe_unused]]

PLOG_DEBUG << "Adding listener for unhandled STUN requests";

UnhandledStunRequestHandler *handler = (UnhandledStunRequestHandler*)calloc(1, sizeof(UnhandledStunRequestHandler));
handler->callback = std::move(callback);
handler->userPtr = userPtr;

unboundStunCallbacks[port] = handler;

if (juice_mux_listen(host.c_str(), port, &InvokeUnhandledStunRequestCallback, handler) < 0) {
if (juice_mux_listen(host, port, &InvokeUnhandledStunRequestCallback, callback) < 0) {
throw std::invalid_argument("Could not add listener for unhandled STUN requests");
}
#endif
Expand Down

0 comments on commit b8ccdc4

Please sign in to comment.