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