obexapp get failure
Iain Hibbert
plunky at rya-online.net
Mon Oct 25 21:37:58 UTC 2010
On Mon, 25 Oct 2010, Maksim Yevmenkin wrote:
> not really. the way i read the spec, connection id header is not
> required on 'continue GET' however, wm6 server might require it (for
> some reason). i'd like to see PUT dump, i.e. what does wm6 server
> sends back in 'continue' when obexapp does multi-PUT
Well, that works fine naturally and shows nothing interesting alas. What
is more revealing is if I use wm6 to issue a multi-GET from obexapp server
(which does work fine)
> ACL data: handle 13 flags 0x02 dlen 42
L2CAP(d): cid 0x0044 len 38 [psm 3]
RFCOMM(d): UIH: cr 1 dlci 20 pf 1 ilen 33 fcs 0x2d credits 1
OBEX: Get cmd(f): len 33
Connection ID (0xcb) = 1
Name (0x01) = Unicode length 22
0000: 00 74 00 65 00 73 00 74 00 2e 00 6c 00 61 00 72 .t.e.s.t...l.a.r
0010: 00 67 00 65 00 00 .g.e..
< ACL data: handle 13 flags 0x02 dlen 58
L2CAP(d): cid 0x00b8 len 54 [psm 3]
RFCOMM(d): UIH: cr 0 dlci 20 pf 0 ilen 50 fcs 0xeb
OBEX: Get rsp(f): status 100 len 4096
Status 100 = Continue
Length (0xc3) = 65529
Body (0x48) = Sequence length 4085
0000: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
0010: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
[...]
0fe0: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
0ff0: 61 61 61 61 61 aaaaa
so the Get command starts and we return the first segment with status 100
(Continued)
> ACL data: handle 13 flags 0x02 dlen 17
L2CAP(d): cid 0x0044 len 13 [psm 3]
RFCOMM(d): UIH: cr 1 dlci 20 pf 1 ilen 8 fcs 0x2d credits 2
OBEX: Get cmd(f): len 8 (continue)
Connection ID (0xcb) = 1
< ACL data: handle 13 flags 0x02 dlen 58
L2CAP(d): cid 0x00b8 len 54 [psm 3]
RFCOMM(d): UIH: cr 0 dlci 20 pf 0 ilen 50 fcs 0xeb
OBEX: Get rsp(f): status 100 len 4096
Status 100 = Continue
Body (0x48) = Sequence length 4090
0000: 61 61 61 61 61 61 61 61 0a 61 61 61 61 61 61 61 aaaaaaaa.aaaaaaa
0010: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
[...]
0fe0: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
0ff0: 61 61 61 61 61 61 61 61 61 61 aaaaaaaaaa
and wm6 phone issues a Get continuation cmd as it should, but it does
always put the Connection ID in the packet. [and this repeats quite a few
times]
> ACL data: handle 13 flags 0x02 dlen 17
L2CAP(d): cid 0x0044 len 13 [psm 3]
RFCOMM(d): UIH: cr 1 dlci 20 pf 1 ilen 8 fcs 0x2d credits 2
OBEX: Get cmd(f): len 8 (continue)
Connection ID (0xcb) = 1
< ACL data: handle 13 flags 0x02 dlen 108
L2CAP(d): cid 0x00b8 len 104 [psm 3]
RFCOMM(d): UIH: cr 0 dlci 20 pf 0 ilen 100 fcs 0xeb
OBEX: Get rsp(f): status 200 len 100
Status 200 = Success
End of Body (0x49) = Sequence length 94
0000: 61 61 61 61 61 61 61 61 61 61 61 61 61 0a 61 61 aaaaaaaaaaaaa.aa
0010: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
[...]
0040: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 0a 62 aaaaaaaaaaaaaa.b
0050: 62 62 62 62 62 62 62 62 62 62 62 62 62 0a bbbbbbbbbbbbb.
until the final segment where we return 200 as normal
So, I think there is a good chance that the phone is losing because there
is no Connection ID included.. it seems to be allowed (but not required)
by the spec to include such a thing but I find openobex documentation (!)
to be more or less incomprehensible and I don't even see how that packet
is being generated..
iain
More information about the freebsd-bluetooth
mailing list