diff --git a/src/mod/endpoints/mod_rtmp/mod_rtmp.c b/src/mod/endpoints/mod_rtmp/mod_rtmp.c index 002b17bbc8..9168a902cb 100644 --- a/src/mod/endpoints/mod_rtmp/mod_rtmp.c +++ b/src/mod/endpoints/mod_rtmp/mod_rtmp.c @@ -1104,11 +1104,17 @@ void rtmp_add_registration(rtmp_session_t *rsession, const char *auth, const cha if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, RTMP_EVENT_REGISTER) == SWITCH_STATUS_SUCCESS) { char *user, *domain, *dup; + char *url = NULL; + char *token = NULL; + char network_port_c[6]; + snprintf(network_port_c, sizeof(network_port_c), "%d", rsession->remote_port); rtmp_event_fill(rsession, event); dup = strdup(auth); switch_split_user_domain(dup, &user, &domain); + url = switch_mprintf("rtmp/%s/%s@%s", rsession->uuid, user, domain); + token = switch_mprintf("rtmp/%s/%s@%s/%s", rsession->uuid, user, domain, nickname); reg->user = switch_core_strdup(rsession->pool, user); reg->domain = switch_core_strdup(rsession->pool, domain); @@ -1117,7 +1123,10 @@ void rtmp_add_registration(rtmp_session_t *rsession, const char *auth, const cha switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Domain", domain); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Nickname", switch_str_nil(nickname)); switch_event_fire(&event); + switch_core_add_registration(user, domain, token, url, 0, rsession->remote_address, network_port_c, "tcp", ""); free(dup); + switch_safe_free(url); + switch_safe_free(token); } } @@ -1160,9 +1169,13 @@ void rtmp_clear_registration(rtmp_session_t *rsession, const char *auth, const c /* Reg data is pool-allocated, no need to free them */ switch_thread_rwlock_rdlock(rsession->account_rwlock); for (account = rsession->account; account; account = account->next) { + char *token = NULL; char buf[1024]; snprintf(buf, sizeof(buf), "%s@%s", account->user, account->domain); rtmp_clear_reg_auth(rsession, buf, nickname); + token = switch_mprintf("rtmp/%s/%s@%s/%s", rsession->uuid, account->user, account->domain, nickname); + switch_core_del_registration(account->user, account->domain, token); + switch_safe_free(token); } switch_thread_rwlock_unlock(rsession->account_rwlock); } else {