diff --git a/daemon/sdp.c b/daemon/sdp.c index 5ea62c28d..4ddebd2cb 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -153,6 +153,11 @@ static str ice_foundation_str_alt; +static inline struct sdp_attribute *attr_get_by_id(struct sdp_attributes *a, int id) { + return g_hash_table_lookup(a->id_hash, &id); +} + + /* hack hack */ static inline int inet_pton_str(int af, str *src, void *dst) { char *s = src->s; @@ -764,7 +769,7 @@ int sdp_streams(const GQueue *sessions, GQueue *streams, GHashTable *streamhash, struct stream_input *si; GList *l, *k; const char *errstr; - int i, num, id; + int i, num; struct sdp_attribute *attr; enum transport_protocol tp; struct crypto_context cctx; @@ -778,8 +783,7 @@ int sdp_streams(const GQueue *sessions, GQueue *streams, GHashTable *streamhash, tp = transport_protocol(&media->transport); ZERO(cctx); - id = ATTR_CRYPTO; - attr = g_hash_table_lookup(media->attributes.id_hash, &id); + attr = attr_get_by_id(&media->attributes, ATTR_CRYPTO); if (attr) { cctx.crypto_suite = attr->u.crypto.crypto_suite; cctx.mki = attr->u.crypto.mki; @@ -817,8 +821,7 @@ int sdp_streams(const GQueue *sessions, GQueue *streams, GHashTable *streamhash, if (!si || media->port_count != 1) continue; - id = ATTR_RTCP; - attr = g_hash_table_lookup(media->attributes.id_hash, &id); + attr = attr_get_by_id(&media->attributes, ATTR_RTCP); if (!attr || !attr->u.rtcp.port_num) continue; if (attr->u.rtcp.port_num == si->stream.port + 1) @@ -1257,20 +1260,17 @@ static int has_ice(GQueue *sessions) { GList *l, *m; struct sdp_session *session; struct sdp_media *media; - int id; - - id = ATTR_ICE_UFRAG; for (l = sessions->head; l; l = l->next) { session = l->data; - if (g_hash_table_lookup(session->attributes.id_hash, &id)) + if (attr_get_by_id(&session->attributes, ATTR_ICE_UFRAG)) return 1; for (m = session->media_streams.head; m; m = m->next) { media = m->data; - if (g_hash_table_lookup(media->attributes.id_hash, &id)) + if (attr_get_by_id(&media->attributes, ATTR_ICE_UFRAG)) return 1; } } @@ -1282,7 +1282,6 @@ static int generate_crypto(struct sdp_media *media, struct sdp_ng_flags *flags, struct streamrelay *rtp, struct streamrelay *rtcp, struct sdp_chopper *chop) { - int id; struct crypto_context *c, *src = NULL; char b64_buf[64]; char *p; @@ -1292,8 +1291,7 @@ static int generate_crypto(struct sdp_media *media, struct sdp_ng_flags *flags, && flags->transport_protocol != PROTO_RTP_SAVPF) return 0; - id = ATTR_CRYPTO; - if (g_hash_table_lookup(media->attributes.id_hash, &id)) { + if (attr_get_by_id(&media->attributes, ATTR_CRYPTO)) { /* SRTP <> SRTP case, copy from other stream * and leave SDP untouched */ src = &rtp->other->crypto.in;