summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-10-06 16:56:24 +0200
committerMarcel Holtmann <marcel@holtmann.org>2008-10-06 16:56:24 +0200
commit4e50b413d5237e3fcfa44780ab2207a871686bd2 (patch)
tree85959fbbd8b0f8a64f8105a136102a295092b8e5 /lib
parent2e6dd6427406c6c255703f5998ef2bf9db14c68e (diff)
Include protocol UUIDs in the pattern otherwise complex searches fail
> ACL data: handle 11 flags 0x02 dlen 34 L2CAP(d): cid 0x0040 len 30 [psm 1] SDP SSA Req: tid 0x6c len 0x19 pat uuid-16 0x110a (AudioSource) uuid-16 0x0100 (L2CAP) uuid-16 0x0019 (AVDTP) max 100 aid(s) 0x0004 (ProtocolDescList) 0x0009 (BTProfileDescList) 0x0311 (SuppFeatures) cont 00 < ACL data: handle 11 flags 0x02 dlen 14 L2CAP(d): cid 0x0040 len 10 [psm 1] SDP SSA Rsp: tid 0x6c len 0x5 count 2 cont 00 Without this fix even searching for the L2CAP UUID fails.
Diffstat (limited to 'lib')
-rw-r--r--lib/sdp.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/sdp.c b/lib/sdp.c
index 705b03c1..14c08ad9 100644
--- a/lib/sdp.c
+++ b/lib/sdp.c
@@ -1956,19 +1956,23 @@ static sdp_data_t *access_proto_to_dataseq(sdp_record_t *rec, sdp_list_t *proto)
for (i = 0, p = proto; p; p = p->next, i++) {
sdp_list_t *elt = (sdp_list_t *)p->data;
sdp_data_t *s;
+ uuid_t *uuid = NULL;
int pslen = 0;
for (; elt && pslen < sizeof(dtds); elt = elt->next, pslen++) {
sdp_data_t *d = (sdp_data_t *)elt->data;
dtds[pslen] = &d->dtd;
switch (d->dtd) {
case SDP_UUID16:
- values[pslen] = &((uuid_t *)d)->value.uuid16;
+ uuid = (uuid_t *) d;
+ values[pslen] = &uuid->value.uuid16;
break;
case SDP_UUID32:
- values[pslen] = &((uuid_t *)d)->value.uuid32;
+ uuid = (uuid_t *) d;
+ values[pslen] = &uuid->value.uuid32;
break;
case SDP_UUID128:
- values[pslen] = &((uuid_t *)d)->value.uuid128;
+ uuid = (uuid_t *) d;
+ values[pslen] = &uuid->value.uuid128;
break;
case SDP_UINT8:
values[pslen] = &d->val.uint8;
@@ -1988,6 +1992,8 @@ static sdp_data_t *access_proto_to_dataseq(sdp_record_t *rec, sdp_list_t *proto)
if (s) {
seqDTDs[i] = &s->dtd;
seqs[i] = s;
+ if (uuid)
+ sdp_pattern_add_uuid(rec, uuid);
}
}
seq = sdp_seq_alloc(seqDTDs, seqs, seqlen);