[asterisk-commits] rtp engine.c: Must protect mime types len with mime types lock. (asterisk[13])
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Aug 6 11:50:25 CDT 2015
Joshua Colp has submitted this change and it was merged.
Change subject: rtp_engine.c: Must protect mime_types_len with mime_types_lock.
......................................................................
rtp_engine.c: Must protect mime_types_len with mime_types_lock.
Change-Id: I44220dd369cc151ebf5281d5119d84bb9e54d54e
---
M main/rtp_engine.c
1 file changed, 10 insertions(+), 5 deletions(-)
Approvals:
Mark Michelson: Looks good to me, but someone else must approve
Joshua Colp: Looks good to me, approved
Objections:
Anonymous Coward #1000019: Fails
diff --git a/main/rtp_engine.c b/main/rtp_engine.c
index 296d84f..c46370d 100644
--- a/main/rtp_engine.c
+++ b/main/rtp_engine.c
@@ -603,6 +603,7 @@
void ast_rtp_codecs_payloads_clear(struct ast_rtp_codecs *codecs, struct ast_rtp_instance *instance)
{
ast_rtp_codecs_payloads_destroy(codecs);
+ ast_rtp_codecs_payloads_initialize(codecs);
if (instance && instance->engine && instance->engine->payload_set) {
int i;
@@ -610,8 +611,6 @@
instance->engine->payload_set(instance, i, 0, NULL, 0);
}
}
-
- ast_rtp_codecs_payloads_initialize(codecs);
}
void ast_rtp_codecs_payloads_copy(struct ast_rtp_codecs *src, struct ast_rtp_codecs *dest, struct ast_rtp_instance *instance)
@@ -1716,12 +1715,16 @@
static void set_next_mime_type(struct ast_format *format, int rtp_code, const char *type, const char *subtype, unsigned int sample_rate)
{
- int x = mime_types_len;
- if (ARRAY_LEN(ast_rtp_mime_types) == mime_types_len) {
+ int x;
+
+ ast_rwlock_wrlock(&mime_types_lock);
+
+ x = mime_types_len;
+ if (ARRAY_LEN(ast_rtp_mime_types) <= x) {
+ ast_rwlock_unlock(&mime_types_lock);
return;
}
- ast_rwlock_wrlock(&mime_types_lock);
/* Make sure any previous value in ast_rtp_mime_types is cleaned up */
memset(&ast_rtp_mime_types[x], 0, sizeof(struct ast_rtp_mime_type));
if (format) {
@@ -1734,6 +1737,7 @@
ast_copy_string(ast_rtp_mime_types[x].subtype, subtype, sizeof(ast_rtp_mime_types[x].subtype));
ast_rtp_mime_types[x].sample_rate = sample_rate;
mime_types_len++;
+
ast_rwlock_unlock(&mime_types_lock);
}
@@ -2095,6 +2099,7 @@
rtp_engine_mime_type_cleanup(x);
}
}
+ mime_types_len = 0;
ast_rwlock_unlock(&mime_types_lock);
}
--
To view, visit https://gerrit.asterisk.org/1006
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I44220dd369cc151ebf5281d5119d84bb9e54d54e
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-Owner: Richard Mudgett <rmudgett at digium.com>
Gerrit-Reviewer: Anonymous Coward #1000019
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Mark Michelson <mmichelson at digium.com>
Gerrit-Reviewer: Richard Mudgett <rmudgett at digium.com>
More information about the asterisk-commits
mailing list