diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-10-06 16:56:24 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-10-06 16:56:24 +0200 |
commit | 4e50b413d5237e3fcfa44780ab2207a871686bd2 (patch) | |
tree | 85959fbbd8b0f8a64f8105a136102a295092b8e5 | |
parent | 2e6dd6427406c6c255703f5998ef2bf9db14c68e (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.
-rw-r--r-- | lib/sdp.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -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); |