*/
#define switch_core_destroy_memory_pool(p) switch_core_perform_destroy_memory_pool(p, __FILE__, __SWITCH_FUNC__, __LINE__)
+
+SWITCH_DECLARE(void) switch_core_memory_pool_set_data(switch_memory_pool_t *pool, const char *key, void *data);
+SWITCH_DECLARE(void *) switch_core_memory_pool_get_data(switch_memory_pool_t *pool, const char *key);
+
+
/*!
\brief Start the session's state machine
\param session the session on which to start the state machine
/*! the originating source of the frame */
const char *source;
/*! the raw packet */
- void *packet;
+ void *packet;
/*! the size of the raw packet when applicable */
uint32_t packetlen;
+ /*! the extra frame data */
+ void *extra_data;
/*! the frame data */
void *data;
/*! the size of the buffer that is in use */
SFF_PLC = (1 << 3),
SFF_RFC2833 = (1 << 4),
SFF_PROXY_PACKET = (1 << 5),
- SFF_DYNAMIC = (1 << 6)
+ SFF_DYNAMIC = (1 << 6),
+ SFF_ZRTP = (1 << 7)
} switch_frame_flag_enum_t;
typedef uint32_t switch_frame_flag_t;
return duped;
}
+SWITCH_DECLARE(void) switch_core_memory_pool_set_data(switch_memory_pool_t *pool, const char *key, void *data)
+{
+ apr_pool_userdata_set(data, key, NULL, pool);
+}
+
+SWITCH_DECLARE(void *) switch_core_memory_pool_get_data(switch_memory_pool_t *pool, const char *key)
+{
+ void *data = NULL;
+
+ apr_pool_userdata_get(&data, key, pool);
+
+ return data;
+}
+
SWITCH_DECLARE(void) switch_core_memory_pool_tag(switch_memory_pool_t *pool, const char *tag)
{
apr_pool_tag(pool, tag);
session = switch_core_alloc(usepool, sizeof(*session));
session->pool = usepool;
+
+ switch_core_memory_pool_set_data(session->pool, "__session", session);
if (switch_channel_alloc(&session->channel, direction, session->pool) != SWITCH_STATUS_SUCCESS) {
abort();