[svn-commits] kharwell: branch kharwell/pimp_sip_media_neg r386663 - /team/kharwell/pimp_si...
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Fri Apr 26 16:24:13 CDT 2013
Author: kharwell
Date: Fri Apr 26 16:24:09 2013
New Revision: 386663
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=386663
Log:
changed function name to start with GULP. also refactored media write thread data allocation to on be on stack.
Modified:
team/kharwell/pimp_sip_media_neg/channels/chan_gulp.c
Modified: team/kharwell/pimp_sip_media_neg/channels/chan_gulp.c
URL: http://svnview.digium.com/svn/asterisk/team/kharwell/pimp_sip_media_neg/channels/chan_gulp.c?view=diff&rev=386663&r1=386662&r2=386663
==============================================================================
--- team/kharwell/pimp_sip_media_neg/channels/chan_gulp.c (original)
+++ team/kharwell/pimp_sip_media_neg/channels/chan_gulp.c Fri Apr 26 16:24:09 2013
@@ -77,7 +77,7 @@
<para>Returns a properly formatted dial string for dialing all contacts on an AOR.</para>
</description>
</function>
- <function name="MEDIA_OFFER" language="en_US">
+ <function name="GULP_MEDIA_OFFER" language="en_US">
<synopsis>
Media and codec offerings to be set on an outbound SIP channel prior to dialing.
</synopsis>
@@ -275,7 +275,7 @@
name = ast_getformatname(&fmt);
if (ast_strlen_zero(name)) {
- ast_log(LOG_WARNING, "MEDIA_OFFER unrecognized format %s\n", name);
+ ast_log(LOG_WARNING, "GULP_MEDIA_OFFER unrecognized format %s\n", name);
continue;
}
@@ -302,37 +302,12 @@
struct media_offer_data {
struct ast_sip_session *session;
enum ast_format_type media_type;
- char value[0];
+ const char *value;
};
-static void media_offer_data_destroy(void *obj)
+static int media_offer_write_av(void *obj)
{
struct media_offer_data *data = obj;
- ao2_ref(data->session, -1);
-}
-
-static struct media_offer_data* media_offer_data_create(struct ast_sip_session *session, const char *value,
- enum ast_format_type media_type)
-{
- int size = strlen(value) + 1;
- struct media_offer_data *data = ao2_alloc(sizeof(*data)+size, media_offer_data_destroy);
-
- if (!data) {
- return NULL;
- }
-
- data->session = session;
- data->media_type = media_type;
- ast_copy_string(data->value, value, size);
-
- ao2_ref(data->session, +1);
- return data;
-}
-
-static int media_offer_write_av(void *obj)
-{
- RAII_VAR(struct media_offer_data *, data, obj, ao2_cleanup);
-
int i;
struct ast_format fmt;
/* remove all of the given media type first */
@@ -363,23 +338,23 @@
static int media_offer_write(struct ast_channel *chan, const char *cmd, char *data, const char *value)
{
struct gulp_pvt *pvt = ast_channel_tech_pvt(chan);
- struct media_offer_data *mdata = NULL;
+
+ struct media_offer_data mdata = {
+ .session = pvt->session,
+ .value = value
+ };
if (!strcmp(data, "audio")) {
- mdata = media_offer_data_create(pvt->session, value, AST_FORMAT_TYPE_AUDIO);
+ mdata.media_type = AST_FORMAT_TYPE_AUDIO;
} else if (!strcmp(data, "video")) {
- mdata = media_offer_data_create(pvt->session, value, AST_FORMAT_TYPE_VIDEO);
- }
-
- if (mdata && ast_sip_push_task_synchronous(pvt->session->serializer, media_offer_write_av, mdata)) {
- ao2_ref(mdata, -1);
- return -1;
- }
- return 0;
+ mdata.media_type = AST_FORMAT_TYPE_VIDEO;
+ }
+
+ return ast_sip_push_task_synchronous(pvt->session->serializer, media_offer_write_av, &mdata);
}
static struct ast_custom_function media_offer_function = {
- .name = "MEDIA_OFFER",
+ .name = "GULP_MEDIA_OFFER",
.read = media_offer_read,
.write = media_offer_write
};
@@ -1538,7 +1513,7 @@
}
if (ast_custom_function_register(&media_offer_function)) {
- ast_log(LOG_WARNING, "Unable to register MEDIA_OFFER dialplan function\n");
+ ast_log(LOG_WARNING, "Unable to register GULP_MEDIA_OFFER dialplan function\n");
}
if (ast_sip_session_register_supplement(&gulp_supplement)) {
More information about the svn-commits
mailing list