return NULL;
}
-int sdp_get_access_protos(const sdp_record_t *rec, sdp_list_t **pap)
+static int sdp_get_proto_descs(uint16_t attr_id, const sdp_record_t *rec,
+ sdp_list_t **pap)
{
sdp_data_t *pdlist, *curr;
sdp_list_t *ap = 0;
- pdlist = sdp_data_get(rec, SDP_ATTR_PROTO_DESC_LIST);
+ pdlist = sdp_data_get(rec, attr_id);
if (pdlist == NULL) {
errno = ENODATA;
return -1;
}
SDPDBG("AP type : 0%x\n", pdlist->dtd);
+ if (attr_id == SDP_ATTR_ADD_PROTO_DESC_LIST)
+ pdlist = pdlist->val.dataseq;
+
for (; pdlist; pdlist = pdlist->next) {
sdp_list_t *pds = 0;
for (curr = pdlist->val.dataseq; curr; curr = curr->next)
return 0;
}
-int sdp_get_add_access_protos(const sdp_record_t *rec, sdp_list_t **pap)
+int sdp_get_access_protos(const sdp_record_t *rec, sdp_list_t **pap)
{
- sdp_data_t *pdlist, *curr;
- sdp_list_t *ap = 0;
-
- pdlist = sdp_data_get(rec, SDP_ATTR_ADD_PROTO_DESC_LIST);
- if (pdlist == NULL) {
- errno = ENODATA;
- return -1;
- }
- SDPDBG("AP type : 0%x\n", pdlist->dtd);
-
- pdlist = pdlist->val.dataseq;
+ return sdp_get_proto_descs(SDP_ATTR_PROTO_DESC_LIST, rec, pap);
+}
- for (; pdlist; pdlist = pdlist->next) {
- sdp_list_t *pds = 0;
- for (curr = pdlist->val.dataseq; curr; curr = curr->next)
- pds = sdp_list_append(pds, curr->val.dataseq);
- ap = sdp_list_append(ap, pds);
- }
- *pap = ap;
- return 0;
+int sdp_get_add_access_protos(const sdp_record_t *rec, sdp_list_t **pap)
+{
+ return sdp_get_proto_descs(SDP_ATTR_ADD_PROTO_DESC_LIST, rec, pap);
}
int sdp_get_uuidseq_attr(const sdp_record_t *rec, uint16_t attr,