]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Avoid leaking data_buf in mod_conference
authorTravis Cross <tc@traviscross.com>
Fri, 2 May 2014 03:38:14 +0000 (03:38 +0000)
committerTravis Cross <tc@traviscross.com>
Fri, 2 May 2014 03:48:10 +0000 (03:48 +0000)
When we couldn't acquire the rwlock on the conference we were leaking
a buffer we just allocated.  On a 48k/10ms conference we would leak
960 bytes per attempt.

src/mod/applications/mod_conference/mod_conference.c

index 87cf7a6d3cbf71d96303eafbaa8b659561ebbe23..8efff9bd19540aaca90927d7289020a2340659f8 100644 (file)
@@ -4515,15 +4515,14 @@ static void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *th
        int lead_in = 20;
        switch_size_t len = 0;
 
-       data_buf_len = samples * sizeof(int16_t);
-
-       switch_zmalloc(data_buf, data_buf_len);
-
        if (switch_thread_rwlock_tryrdlock(conference->rwlock) != SWITCH_STATUS_SUCCESS) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Read Lock Fail\n");
                return NULL;
        }
 
+       data_buf_len = samples * sizeof(int16_t);
+       switch_zmalloc(data_buf, data_buf_len);
+
        switch_mutex_lock(globals.hash_mutex);
        globals.threads++;
        switch_mutex_unlock(globals.hash_mutex);