[Nice] Compatibility with MS Office Communicator 2007 R2

Youness Alaoui youness.alaoui at collabora.co.uk
Thu Sep 2 14:37:08 PDT 2010


On 08/30/2010 06:36 PM, Jakub Adam wrote:
> Hi Youness,
> 
> I'm attaching new version of MSOC 2007R2 compatibility patch. I also
> made some progress
> in compatibility with Office Communicator release 1, see below.
> 
>> There is just one more thing that I'm thinking about now.. considering
>> that the
>> OC2007R2 compatibility is the same as the WLM2009 (since you delegate
>> the STUN
>> compat to WLM2009 even in OC2007R2 mode), and that the only difference
>> is adding
>> the candidate-identifier (which is harmless to have) and since you're
>> not using
>> it yourself when receiving data, then I'd like to suggest the following :
>> 1 - add the candidate-identifier in WLM2009 mode (it might require it
>> in the
>> future if they update their dll)
>> 2 - do a NICE_COMPATIBILITY_OC2007R2 = NICE_COMPATIBILITY_WLM2009
>> This way you get your compatiblity mode, but less code/paths to
>> maintain, and
>> it's harmless.
>> What do you think?
> 
> That's a good idea, merging these compatibilities shortened code a bit.
> Still,
> I left STUN_USAGE_ICE_COMPATIBILITY_OC2007R2 there (renamed to
> STUN_USAGE_ICE_COMPATIBILITY_WLM2009) because I somewhat don't like sending
> CANDIDATE-IDENTIFIER in RFC5245 mode. Even it would work, someone
> reading the
> code might be confused why an argument not mentioned in the RFC is added to
> messages. Sending CANDIDATE-IDENTIFIER only in mode of compatibility with
> Microsoft communicators will be nicer.

Right, sorry, I thought there was a STUN_USAGE_ICE_COMPATIBILITY_WLM2009.. since
there wasn't, yes, you did good, like I said, send that CANDIDATE-IDENTIFIER
with wlm mode, so that's good.. I've reviewed the code, it's all good, apart
from one thing.. the second point I asked for previously...
You see how I did for DRAFT19 compatibility ?
  NICE_COMPATIBILITY_DRAFT19 = NICE_COMPATIBILITY_RFC5245,
I suggest you do the same
  NICE_COMPATIBILITY_OC2007R2 = NICE_COMPATIBILITY_WLM2009,
This way, you can use compatibility mode OC2007R2 in your code, would make your
code more readable and would make it easier for people looking to add OC2007R2
compatiblity to see it there, rather than try to figure out if WLM2009 would
work or not...
Don't worry about this, you don't need to send another patch, I'll add it myself.

> 
> 
>>> OC2007 (release 1) uses ICEv6 (IETFDRAFT-ICENAT-06) which is an older
>>> version of ICE draft, that, as far as I know, is not supported by
> libnice.
>>> Please correct me if I'm wrong.
>>
>> hehe, actually, it is! the "MSN" compatiblity is a derivative of ICE
> draft 6,
>> the WLM2009 is the derivative from ICE draft 19.. so basically, the
> older MSN
>> version uses the dll from OC2007, and the new WLM2009 used the dll
> from OC2007R2!
> 
> Thanks, this information was very valuable to me. I implemented support
> for OC2007
> in SIPE. Unfortunatelly, "MSN" mode of libnice is not fully compatible,
> difference
> is in USERNAME attribute. When sending binding request for connectivity
> check,
> USERNAME is sent as remote_ufrag:component:local_ufrag:component using
> remote password
> for computation of MESSAGE-INTEGRITY.
ha! cool, I'm glad it works the same.. the MSN compatibility mode is crazy it
does a lot of weird things (like the base64 stuff), and I'm surprised that all
of that stuff stayed the same... it's almost the same compatiblity!

> 
> When the other OC2007 peer receives binding request, its reply uses the
> very same USERNAME
> as the request, also using same key for MESSAGE-INTEGRITY. But libnice's
> MSN compatibility
> swaps ufrags, also using different key for message integrity. From the
> request sender's
> point of view, received reply has username as
> local_ufrag:component:remote_ufrag:component.
> I made separate patch for this, adding a new compatibility mode
> NICE_COMPATIBILITY_OC2007.

Yeah, that was annoying to do when I wrote the MSN compatiblity... I'm guessing
that whatever gets released in MSN/WLM is a 'beta' of the OC2007 version (msn
makes faster releases, so..) that's why we see this stuff.. the username thing
was annoying and they realized it was stupid, so they fixed it in OC2007, the
candidate-identifier was important and they realized it after WLM2009 was
released, so they added it to OC2007R2...

> 
> This change touches Farsight where new compatibility mode must be added.
> I see no solution
> where this or similar change can be avoided. As I know you are also
> working on Farsight,
> I post that very small patch here, but please let me know if I should
> use a different
> mailing list.

Well, it's supposed to go into the farsight mailing list, but it's ok, I can
push that to farsight directly. but before, I need to release a new version of
libnice with your changes (otherwise farsight won't build).
Right now, I have a lot of work to do unrelated to libnice.. I should have some
free time maybe in a week or two, then I'll put in some time to work on
libnice.. there is the TURN support patches from  mlundblad that I need to
review, there are the issues of the STUN timer to fix, and the issue Tom
Kaminski raised about the local_addresses when doing a gather_candidates.
Once all that is fixed, I'll release a new version, I don't like doing releases,
so I'll try to pack in as much changes in the next release as possible!
Especially since your patch breaks the API, so I'd like to break it only once.

Thanks again,
Youness.

> 
> Jakub
> 
> 
> 
> _______________________________________________
> Nice mailing list
> Nice at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/nice


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freedesktop.org/archives/nice/attachments/20100902/ffba2cac/attachment.pgp>


More information about the Nice mailing list