]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-4332: --resolve
authorWilliam King <william.king@quentustech.com>
Fri, 3 May 2013 05:01:24 +0000 (00:01 -0500)
committerWilliam King <william.king@quentustech.com>
Fri, 3 May 2013 05:02:05 +0000 (00:02 -0500)
src/mod/endpoints/mod_rtmp/mod_rtmp.c

index 36c295a27499c9f232c0e9c062cab2c5d1273f76..4f865926b0f22cb79d41c894233e95f1e268d94c 100644 (file)
@@ -1106,11 +1106,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);
@@ -1119,7 +1125,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);
        }
 
 }
@@ -1162,9 +1171,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 {