- va_list ap;
- char *ret;
- va_start (ap, fmtpfmt);
- ret = vAddSDPMedia (type, dport, protocol, pt, rtpmap, fmtpfmt, ap);
- va_end (ap);
- return ret;
+ size_t cfglen = strlen (cfgpref);
+ if (cfglen > 100)
+ return NULL;
+
+ char varname[cfglen + sizeof ("description")], *subvar = varname + cfglen;
+ strcpy (varname, cfgpref);
+
+ strcpy (subvar, "name");
+ char *name = var_GetNonEmptyString (obj, varname);
+ strcpy (subvar, "description");
+ char *description = var_GetNonEmptyString (obj, varname);
+ strcpy (subvar, "url");
+ char *url = var_GetNonEmptyString (obj, varname);
+ strcpy (subvar, "email");
+ char *email = var_GetNonEmptyString (obj, varname);
+ strcpy (subvar, "phone");
+ char *phone = var_GetNonEmptyString (obj, varname);
+
+ char *sdp = sdp_Start (name, description, url, email, phone,
+ src, srclen, addr, addrlen);
+ free (name);
+ free (description);
+ free (url);
+ free (email);
+ free (phone);
+
+ if (sdp == NULL)
+ return NULL;
+
+ /* Totally non-standard */
+ strcpy (subvar, "group");
+ char *group = var_GetNonEmptyString (obj, varname);
+ if (group != NULL)
+ {
+ sdp_AddAttribute (&sdp, "x-plgroup", "%s", group);
+ free (group);
+ }
+
+ return sdp;