I think I found the problem. It is when the MTU is 4096, the send size is set to 3896 (200 for the overhead). So the last 200 did not get send and it remember as "pre-fill" for the next transfer. The code did try to move the data but incorrectly. clinet/session.c put_xfer_progress() ----- origional memmove(session->buffer + written, session->buffer, session->filled); /* try to move from the remaining from the bottom of the buffer to the beginning of buffer but memove is (*dest, * src, len) not as normally most people, including me, will guess (*src, *dest, len) -------- should be memmove(session->buffer, session->buffer + written, session->filled); with the change, it seem working now? Ed ----- Original Message ---- From: Bastien Nocera <hadess@xxxxxxxxxx> To: Luiz Augusto von Dentz <luiz.dentz@xxxxxxxxx> Cc: Ed Tsang <netdesign_98@xxxxxxxxx>; Bluettooth Linux <linux-bluetooth@xxxxxxxxxxxxxxx> Sent: Fri, March 5, 2010 11:31:14 AM Subject: Re: obexd 0.14 "put" file corruption On Fri, 2010-02-26 at 10:41 +0200, Luiz Augusto von Dentz wrote: > Hi, > > On Thu, Feb 25, 2010 at 12:23 AM, Ed Tsang <netdesign_98@xxxxxxxxx> wrote: > > > > > >>I am using obexd 0.14 to push files into phone. The image file received by some phone seem a bit strange and in some phone it could not be >display at all. So I tried a simple text file with line number as text. Then I saw the file received from the phone is corrupted. Looking into the >hcidump look like the second "Put cmd" and forward, the first "0xc8" bytes was not copied (stay the same as the firs put cmd). > >> Anyone know if this is a known problem in 0.14 or fixed in the latest (obexd 0.20). > > Installed the obexd o.20. Same problem??? > > -------------------------- first put > > RFCOMM(d): UIH: cr 1 dlci 12 pf 0 ilen 303 fcs 0x4f > > OBEX: Put cmd(c): len 3922 > > Name (0x01) = Unicode length 12 > > 0000: 00 74 00 2e 00 74 00 78 00 74 00 00 .t...t.x.t.. > > Length (0xc3) = 8208 > > Body (0x48) = Sequence length 3896 > > 0000: 30 30 20 66 69 72 73 74 20 6c 69 6e 65 20 20 0a 00 first line . > > 0010: 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 1 . > > > > ...................... second put (after 0xc8 is fine) > > RFCOMM(d): UIH: cr 1 dlci 12 pf 0 ilen 283 fcs 0x4f > > OBEX: Put cmd(c): len 3902 (continue) > > Body (0x48) = Sequence length 3896 > > 0000: 30 30 20 66 69 72 73 74 20 6c 69 6e 65 20 20 0a 00 first line . > > 0010: 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 1 . > > 0020: 32 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 2 . > > 0030: 33 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 3 . > > 0040: 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 4 . > > 0050: 35 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 5 . > > 0060: 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 6 . > > 0070: 37 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 7 . > > 0080: 38 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 8 . > > 0090: 39 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 9 . > > 00a0: 41 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a A . > > 00b0: 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a B . > > 00c0: 43 20 20 20 20 20 20 20 31 30 30 20 73 65 63 6f C 100 seco > > 00d0: 6e 64 20 70 61 67 65 0a 31 20 20 20 20 20 20 20 nd page.1 > > 00e0: 20 20 20 20 20 20 32 0a 32 20 20 20 20 20 20 20 2.2 > > > > Anyone bump into this?? look like the start of copying problem... > > Weird, are you sure the client is sending this properly? Anyway we do > store the data in a buffer even if was sent together with put cmd, Im > very suspicious that this is not the problem since we would have > notice this before. Btw obexd does not push/send files obex-client > does, are you talking about obex-client? This has been reported to me as well, with obexd 0.19: https://bugzilla.redhat.com/show_bug.cgi?id=550538 Ideas on how to debug this? Cheers __________________________________________________________________ The new Internet Explorer® 8 - Faster, safer, easier. Optimized for Yahoo! Get it Now for Free! at http://downloads.yahoo.com/ca/internetexplorer/ -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html