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);
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);
}
}
/* 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 {