Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

re: iChat file transfer protocol



From: Imran Patel <email@hidden>

I am currently writing a iChat protocol plugin for the GAIM instant messenger. Ihave mostly implemented/tested the basic messaging functionality and would like
to work on the file-transfer part. Instead of further analyzing the protocol
dumps, I am just going to be lazy here and ask a question: is the file transfer
protocol in iChat based on the newer JEPs 0095/0096 or the older OOB protocol?

Sorry for the late reply; I was on vacation.

Cool to hear about the iChat Rendezvous support for GAIM!

The implementation in iChat is based on the older Jabber OOB protocol. The sender of the file starts a mini HTTP server to serve the file/directory, and sends the URL to the receiver. There are a couple of custom extensions since Jabber didn't support everything I wanted to do:

1. Some custom attributes on the OOB tag give hints for the file's size, MIME type, etc. This is to allow the incoming file notifier to show that information to the recipient before s/he decides to download the file. This should be pretty self-explanatory if you look at the XML stream dumps. (Which is a polite way of saying "I long ago forgot about the details".)

2. Transferring directories is done by specifying a magic MIME type in the OOB tag; retrieving the directory's URL from the sender results in XML data that describes the recursive contents of the directory. The recipient then traverses that and makes a separate GET request to download each file.

3. iChat accepts a content-encoding of "AppleSingle", which is a Mac-specific way of folding the file's contents and all metadata into a single stream. On the sending side, iChat only sends the files in that format if the GET request indicates it supports that content-encoding. On the receiving side, I am not certain whether iChat will be happy if the sender won't send it AppleSingle data. If you run into trouble with that, you may need to indicate support for AppleSingle and then just ignore the metadata (it's pretty easy to do.)

This is getting pretty off-topic for a general Rendezvous list, so reply to me directly if you have more questions about iChat's use of Jabber protocol.

--Jens
_______________________________________________
rendezvous mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/rendezvous
Do not post admin requests to the list. They will be ignored.




Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.