Can you copy and paste the exception here.
LATER: I suspect the exception is occuring on the PUT. ObexClientSession will send the correct Connection Id so there's no need to send it, so we'll get a duplicate there. Also the rest of the PUT is too complex. :-) Just do:
... ...
session.PutFrom(src, name, type, src.Length));
That should work... (untested!)
(It also leave the contents unmodified, rather than the implicit read-as-utf8-send-as-ansi-codepage conversion happening in the code currently)
EVEN LATER: From a quick glance at syncml_obex_v11_20020215.pdf it appears that no Name header is required, so just send null for the name parameter in the Put call.