]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix potential naughty bug you will need 'make sure'
authorBrian West <brian@freeswitch.org>
Fri, 2 Mar 2007 23:38:01 +0000 (23:38 +0000)
committerBrian West <brian@freeswitch.org>
Fri, 2 Mar 2007 23:38:01 +0000 (23:38 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4432 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_core.h
src/include/switch_module_interfaces.h
src/mod/endpoints/mod_woomera/mod_woomera.c
src/switch_core.c
src/switch_ivr.c

index 1266aed5806794df079946c69731906503bd3676..7229b046d45a92e014894475eaa962b45a6be888 100644 (file)
@@ -428,7 +428,7 @@ SWITCH_DECLARE(switch_memory_pool_t *) switch_core_session_get_pool(switch_core_
   \param pool the pool to use for the allocation (a new one will be used if NULL)
   \return the newly created session
 */
-SWITCH_DECLARE(switch_core_session_t *) switch_core_session_request(const switch_endpoint_interface_t *endpoint_interface, switch_memory_pool_t *pool);
+SWITCH_DECLARE(switch_core_session_t *) switch_core_session_request(const switch_endpoint_interface_t *endpoint_interface, switch_memory_pool_t **pool);
 
 /*! 
   \brief Destroy a session and return the memory pool to the core
@@ -449,7 +449,7 @@ SWITCH_DECLARE(uint32_t) switch_core_session_count(void);
   \param pool the pool to use
   \return the newly created session
 */
-SWITCH_DECLARE(switch_core_session_t *) switch_core_session_request_by_name(char *endpoint_name, switch_memory_pool_t *pool);
+SWITCH_DECLARE(switch_core_session_t *) switch_core_session_request_by_name(char *endpoint_name, switch_memory_pool_t **pool);
 
 /*! 
   \brief Launch the session thread (state machine) on a given session
@@ -649,7 +649,7 @@ SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_
                                                                                                                                                 char *endpoint_name,
                                                                                                                                                 switch_caller_profile_t *caller_profile,
                                                                                                                                                 switch_core_session_t **new_session,
-                                                                                                                                                switch_memory_pool_t *pool);
+                                                                                                                                                switch_memory_pool_t **pool);
 
 /*! 
   \brief Answer the channel of a given session
index ccd0ba3892e0203dfda12616520f28c308bf66ef..3c69accbe6110113c12c9c3eff0f6ce842e4db53 100644 (file)
@@ -172,7 +172,7 @@ struct switch_io_event_hooks {
 /*! \brief A table of i/o routines that an endpoint interface can implement */
 struct switch_io_routines {
        /*! creates an outgoing session from given session, caller profile */
-       switch_call_cause_t (*outgoing_channel)(switch_core_session_t *, switch_caller_profile_t *, switch_core_session_t **, switch_memory_pool_t *);
+       switch_call_cause_t (*outgoing_channel)(switch_core_session_t *, switch_caller_profile_t *, switch_core_session_t **, switch_memory_pool_t **);
        /*! answers the given session's channel */
        switch_status_t (*answer_channel)(switch_core_session_t *);
        /*! read a frame from a session */
index b06888239674364ffd3dccb8b19a8605db8a33f1..2965853dcafb4016c8fca475181f7b4ff3a2d1f5 100644 (file)
@@ -170,7 +170,7 @@ static switch_status_t woomera_on_ring(switch_core_session_t *session);
 static switch_status_t woomera_on_loopback(switch_core_session_t *session);
 static switch_status_t woomera_on_transmit(switch_core_session_t *session);
 static switch_call_cause_t woomera_outgoing_channel(switch_core_session_t *session, switch_caller_profile_t *outbound_profile,
-                                                                                                 switch_core_session_t **new_session, switch_memory_pool_t *pool);
+                                                                                                       switch_core_session_t **new_session, switch_memory_pool_t **pool);
 static switch_status_t woomera_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout,
                                                                                        switch_io_flag_t flags, int stream_id);
 static switch_status_t woomera_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout,
@@ -482,7 +482,7 @@ static const switch_loadable_module_interface_t woomera_module_interface = {
    that allocate memory or you will have 1 channel with memory allocated from another channel's pool!
 */
 static switch_call_cause_t woomera_outgoing_channel(switch_core_session_t *session, switch_caller_profile_t *outbound_profile,
-                                                                                                       switch_core_session_t **new_session, switch_memory_pool_t *pool)
+                                                                                                       switch_core_session_t **new_session, switch_memory_pool_t **pool)
 {
        if ((*new_session = switch_core_session_request(&woomera_endpoint_interface, pool)) != 0) {
                struct private_object *tech_pvt;
index 91a97e65436aed3281675686ba08fd64591bc91f..bd161757ef86e0ae44b49836951d2009f0e22bfe 100644 (file)
@@ -1596,7 +1596,7 @@ SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_
                                                                                                                                                 char *endpoint_name,
                                                                                                                                                 switch_caller_profile_t *caller_profile,
                                                                                                                                                 switch_core_session_t **new_session,
-                                                                                                                                                switch_memory_pool_t *pool)
+                                                                                                                                                switch_memory_pool_t **pool)
 {
        switch_io_event_hook_outgoing_channel_t *ptr;
        switch_status_t status = SWITCH_STATUS_FALSE;
@@ -3693,8 +3693,8 @@ SWITCH_DECLARE(void *) switch_core_alloc(switch_memory_pool_t *pool, switch_size
        return ptr;
 }
 
-SWITCH_DECLARE(switch_core_session_t *) switch_core_session_request(const switch_endpoint_interface_t *endpoint_interface,
-                                                                                                                                 switch_memory_pool_t *pool)
+SWITCH_DECLARE(switch_core_session_t *) switch_core_session_request(const switch_endpoint_interface_t *endpoint_interface, switch_memory_pool_t **pool)
+                                                                                                                                       
 {
        switch_memory_pool_t *usepool;
        switch_core_session_t *session;
@@ -3717,8 +3717,9 @@ SWITCH_DECLARE(switch_core_session_t *) switch_core_session_request(const switch
                return NULL;
        }
 
-       if (pool) {
-               usepool = pool;
+       if (*pool) {
+               usepool = *pool;
+               *pool = NULL;
        } else if (switch_core_new_memory_pool(&usepool) != SWITCH_STATUS_SUCCESS) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Could not allocate memory pool\n");
                return NULL;
@@ -3778,7 +3779,7 @@ SWITCH_DECLARE(uint32_t) switch_core_session_count(void)
        return runtime.session_count;
 }
 
-SWITCH_DECLARE(switch_core_session_t *) switch_core_session_request_by_name(char *endpoint_name, switch_memory_pool_t *pool)
+SWITCH_DECLARE(switch_core_session_t *) switch_core_session_request_by_name(char *endpoint_name, switch_memory_pool_t **pool)
 {
        const switch_endpoint_interface_t *endpoint_interface;
 
index 4b3159d868762a5355da3aba9892305da3d47947..f137c734e866058945b33204460e30de0ea56835 100644 (file)
@@ -2750,7 +2750,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
                                }
                        }
 
-                       if ((reason = switch_core_session_outgoing_channel(session, chan_type, caller_profiles[i], &peer_sessions[i], pool)) != SWITCH_CAUSE_SUCCESS) {
+                       if ((reason = switch_core_session_outgoing_channel(session, chan_type, caller_profiles[i], &peer_sessions[i], &pool)) != SWITCH_CAUSE_SUCCESS) {
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Create Outgoing Channel! cause: %s\n", switch_channel_cause2str(reason));
                                if (pool) {
                                        switch_core_destroy_memory_pool(&pool);