[jdev] File Transfer Interoperability

Justin Karneges justin-keyword-jabber.093179 at affinix.com
Wed Aug 8 01:40:46 CDT 2007


On Tuesday 07 August 2007 10:29 pm, Sergei Golovan wrote:
> On 8/8/07, Peter Saint-Andre <stpeter at jabber.org> wrote:
> > 3. IBB (XEP-0047) is a great fallback if all else fails.
>
> IBB couldn't be a great fallback. It's very inconvenient to use in the
> fillowing circumstances (which don't so rarely happen):
>
> 1) JID A offers file to JID B and waits for the answer (note that to
> answer, B must return an IQ result, and the time interval might be
> quite long).
>
> 2) JID A decides to abort file transfer and closes the
> file-transfer-window-or-whatever-GUI-she-has.
>
> 3) JID B replies with IQ result, but
>         a) File transfer doesn't start (A aborted it)
>         b) JID B will NEVER know about A aborted file transfer and
> will stuck with file-receiving-GUI forever since there's no mechanism
> to recognize this unwilling to transfer.
>
> Wouldn't it better to add an extra query from B to A after stream
> negotiation part? If A doesn't want to send file anymore, she will
> return error to B.

I wouldn't put this at the IBB level.  A negotiation timeout will work well 
enough there.

The problem you speak of, which does indeed happen a lot, has more to do with 
the SI exchange.  If someone offers a file, and you take too long to accept, 
they may cancel the file offer and you'll never know.  This will happen 
regardless of whether you use S5B or IBB or anything.

In Psi we solved this by adding a timeout to the accept phase.  The sender 
must begin the S5B negotiation within 30 seconds of the receiver 
pressing "Accept".  If the timeout expires, a dialog is presented to the 
receiver that says something along the lines of "the sender probably 
cancelled".

I believe Jive added a protocol extension so that the receiver can know if a 
file transfer was cancelled.  Maybe it is worth documenting.

-Justin



More information about the JDev mailing list