[sip-comm-dev] [PATCH][sip-comm-dev] Ad-hoc multi user chat


#1

PATCH:
Provides MSN, ICQ and Yahoo! implementations for ad-hoc multi user chat.

Information about this can be found here:
https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6707

Cheers,
Valentin

adhoc-rooms.txt (336 KB)


#2

Hi Valentin, guys,

Please excuse my ignorance but who's overseeing this development, is
anyone looking into these patches, are they planned for integration
into trunk?

Thank you,
Lubomir

···

On Thu, Aug 13, 2009 at 6:46 PM, Valentin MARTINET<vmartinet.sipcommunicator@gmail.com> wrote:

PATCH:
Provides MSN, ICQ and Yahoo! implementations for ad-hoc multi user chat.

Information about this can be found here:
https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6707

Cheers,
Valentin

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#3

Hi Valentin,

Thanks for the Ad-hoc chat room implementation! It's a pretty big contribution and you've done a good job.

However, before being able to commit it I'd like to discuss here some of the following points :

- In the OperationSetAdHocMultiUserChat we have the method:

public AdHocChatRoom createAdHocChatRoom(String adHocRoomName,
                                   Map<String, Object> adHocRoomProperties)

Something that bothers me here is that for now we're using the roomProperties only to transmit the initial list of chat room members. I was wondering if it won't be more convenient to either define a second method that gets directly a List of members as a parameter or if we won't need this room properties for anything else, just modify this method. What do you think?

Otherwise if we decide to keep the above, you should modify the OperationSetAdHocMultiUserChatYahooImpl.createAdHocChatRoom in order to check if the incoming properties are really the members we're waiting:

if(roomProperties != null)
       {
         invitedContacts = new String[roomProperties.size()];
         for(Object value : roomProperties.values())
         {
           ContactYahooImpl contact = (ContactYahooImpl)value;
           ......
         }
       }

- I find that the definition and the different implementations of the findRoom method are a little confusing. The thing that bothers me is that in the interface we state that it:

Returns a reference to an AdHocChatRoom named <tt>adHocRoomName</> or
null if no ad-hoc room with the given name exist on the server.

but then in the Msn implementation we check if a room with this name exist in the chat room cache and otherwise we create it ! In the Yahoo and Icq implementations we're just looking in the cache and we return what we find, so null if we don't find it.

Tell me if I'm wrong, but I personally think that Yahoo and Icq implementations are the proper one and all other implementations and javadoc comments should follow this behavior.

- Valentin, I see that you're using tabs (instead of spaces) and wanted just to point you to our code conventions page (http://www.sip-communicator.org/index.php/Documentation/CodeConvention). If you're using Eclipse you could use our predefined formatter which could be found here: http://www.sip-communicator.org/wiki/pub/sip-communicator/Formatter.

- I have tried the Msn and Yahoo chat rooms and have experienced some problems with them. The Msn chat room freezes when I click on the members. I'm pasting the exception I get, though I'm not sure it's related:

java.net.MalformedURLException: invalid url: reference:file:sc-bundles/protocol-msn.jar!/ (java.net.MalformedURLException: Unknown protocol: reference)
     [java] at java.net.URL.<init>(URL.java:601)
     [java] at org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:281)
     [java] at java.net.URL.<init>(URL.java:596)
     [java] at java.net.URL.<init>(URL.java:464)
     [java] at java.net.URL.<init>(URL.java:413)
     [java] at javax.crypto.SunJCE_d.b(DashoA12275)
     [java] at javax.crypto.SunJCE_d.a(DashoA12275)
     [java] at javax.crypto.SunJCE_b.a(DashoA12275)
     [java] at javax.crypto.SunJCE_n.a(DashoA12275)
     [java] at javax.crypto.Cipher.c(DashoA12275)
     [java] at javax.crypto.Cipher.b(DashoA12275)
     [java] at javax.crypto.Cipher.a(DashoA12275)
     [java] at javax.crypto.Cipher.init(DashoA12275)
     [java] at net.sf.jml.protocol.soap.SSO$SSOticket.DES3(SSO.java:520)
     [java] at net.sf.jml.protocol.soap.SSO$SSOticket.<init>(SSO.java:454)
     [java] at net.sf.jml.protocol.soap.SSO.getTicketFromResponseXml(SSO.java:360)
     [java] at net.sf.jml.protocol.soap.SSO.getTicket(SSO.java:308)
     [java] at net.sf.jml.protocol.soap.SSO.getTicket(SSO.java:82)
     [java] at net.sf.jml.protocol.incoming.IncomingUSR$1.run(IncomingUSR.java:287)

With Yahoo all chat room members appeared doubled. I have also some exceptions appearing:

[java] 15:22:23.747 SEVERE: impl.protocol.yahoo.ProtocolProviderServiceYahooImpl.inputExceptionThrown().468 Yahoo protocol exception occured exception
     [java] ymsg.network.YMSG9BadFormatException: Bad parse of conference invite packet
     [java] at ymsg.network.Session.receiveConfInvite(Session.java:1757)
     [java] at ymsg.network.Session$InputThread.process(Session.java:2902)
     [java] at ymsg.network.Session$InputThread.run(Session.java:2850)
     [java] Caused by: java.lang.NullPointerException
     [java] at ymsg.network.Session.receiveConfInvite(Session.java:1754)
     [java] ... 2 more
     [java] 15:22:23.748 SEVERE: util.UtilActivator.uncaughtException().81 An uncaught exception occurred in thread=Thread[Event Fired,6,YMSG Threads] and message was: java.lang.NullPointerException
     [java] java.lang.ClassCastException: java.lang.NullPointerException
     [java] at net.java.sip.communicator.impl.protocol.yahoo.ProtocolProviderServiceYahooImpl$YahooConnectionListener.inputExceptionThrown(ProtocolProviderServiceYahooImpl.java:470)
     [java] at ymsg.network.Session$FireEvent.run(Session.java:3122)
     [java] 15:22:52.141 INFO: impl.gui.main.chat.conference.ConferenceChatManager.messageDelivered().1728 MESSAGE DELIVERED to ad-hoc chat room: yana_stamcheva-0
     [java] 15:22:53.658 INFO: impl.gui.main.chat.conference.ConferenceChatManager.messageDelivered().1728 MESSAGE DELIVERED to ad-hoc chat room: yana_stamcheva-0
     [java] 15:23:34.503 SEVERE: impl.protocol.yahoo.ProtocolProviderServiceYahooImpl.inputExceptionThrown().468 Yahoo protocol exception occured exception
     [java] ymsg.network.YMSG9BadFormatException: Bad parse of conference invite packet
     [java] at ymsg.network.Session.receiveConfInvite(Session.java:1757)
     [java] at ymsg.network.Session$InputThread.process(Session.java:2902)
     [java] at ymsg.network.Session$InputThread.run(Session.java:2850)
     [java] Caused by: java.lang.NullPointerException
     [java] at ymsg.network.Session.receiveConfInvite(Session.java:1754)
     [java] ... 2 more
     [java] 15:23:34.504 SEVERE: util.UtilActivator.uncaughtException().81 An uncaught exception occurred in thread=Thread[Event Fired,6,YMSG Threads] and message was: java.lang.NullPointerException
     [java] java.lang.ClassCastException: java.lang.NullPointerException
     [java] at net.java.sip.communicator.impl.protocol.yahoo.ProtocolProviderServiceYahooImpl$YahooConnectionListener.inputExceptionThrown(ProtocolProviderServiceYahooImpl.java:470)
     [java] at ymsg.network.Session$FireEvent.run(Session.java:3122)

Another problem we encountered on Msn is that I didn't receive the reject message of a contact the rejected my invitation.

I think that's all for the moment. I didn't have the time to look at these problems myself, but if you need any help or more testing with this one let me know.

Valentin, as I said in the beginning of my mail, this is pretty big and complicated task, so don't get discouraged at all from these remarks!

Cheers,
Yana

···

On Aug 13, 2009, at 6:46 PM, Valentin MARTINET wrote:

PATCH:
Provides MSN, ICQ and Yahoo! implementations for ad-hoc multi user chat.

Information about this can be found here:
https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6707

Cheers,
Valentin

<adhoc-rooms.txt>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#4

Hi Lubomir,

Both me and Emil are following the work of Valentin. Actually I'm currently revising his patches and will send my comments on the list soon.

Cheers,
Yana

···

On Aug 13, 2009, at 5:50 PM, Lubomir Marinov wrote:

Hi Valentin, guys,

Please excuse my ignorance but who's overseeing this development, is
anyone looking into these patches, are they planned for integration
into trunk?

Thank you,
Lubomir

On Thu, Aug 13, 2009 at 6:46 PM, Valentin > MARTINET<vmartinet.sipcommunicator@gmail.com> wrote:

PATCH:
Provides MSN, ICQ and Yahoo! implementations for ad-hoc multi user chat.

Information about this can be found here:
https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6707

Cheers,
Valentin

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#5

Hi Lubomir,

As it's said in the link I've joined in my last e-mail, I'm working with Emil and Yana on this.

I'm working on multi user chat in order to fix bugs, with Emil and Yana's help.

We have noticed that multi user chat in some protocols (MSN, ICQ, Yahoo!, ...) isn't as evolved as in other protocols (Jabber, IRC,...)

So we've decided to make a difference between protocols, regarded to the supported functionalities they have in multi user chat.

Now, there is a new OperationSet for MUC, and a new interface for chat rooms, which are both used by ICQ, MSN and Yahoo!.

In fact, both are a copy of actuals, but without useless methods such as kick or ban (not supported in these three protocols).

Hope it will answer to your questions :slight_smile:

Regards,
Valentin

···

Le 13 août 09 à 17:50, Lubomir Marinov a écrit :

Hi Valentin, guys,

Please excuse my ignorance but who's overseeing this development, is
anyone looking into these patches, are they planned for integration
into trunk?

Thank you,
Lubomir

On Thu, Aug 13, 2009 at 6:46 PM, Valentin > MARTINET<vmartinet.sipcommunicator@gmail.com> wrote:

PATCH:
Provides MSN, ICQ and Yahoo! implementations for ad-hoc multi user chat.

Information about this can be found here:
https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6707

Cheers,
Valentin

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#6

Yana and Valentin,

Thank you for the great responses to my question!

I'm sorry for spamming this list with unnecessary questions. It's just
that I've been seeing these patches arriving for some time always as
separate threads, then nobody answers them... I did read the dev
archive reference given in this last e-mail but then I didn't read the
reference given in it because it was beginning to take too much of
digging to get to the root of it, I'm sorry.

Best regards,
Lubomir

···

On Thu, Aug 13, 2009 at 7:15 PM, Valentin MARTINET<vmartinet.sipcommunicator@gmail.com> wrote:

Hi Lubomir,

As it's said in the link I've joined in my last e-mail, I'm working with
Emil and Yana on this.

I'm working on multi user chat in order to fix bugs, with Emil and Yana's
help.

We have noticed that multi user chat in some protocols (MSN, ICQ, Yahoo!,
...) isn't as evolved as in other protocols (Jabber, IRC,...)

So we've decided to make a difference between protocols, regarded to the
supported functionalities they have in multi user chat.

Now, there is a new OperationSet for MUC, and a new interface for chat
rooms, which are both used by ICQ, MSN and Yahoo!.

In fact, both are a copy of actuals, but without useless methods such as
kick or ban (not supported in these three protocols).

Hope it will answer to your questions :slight_smile:

Regards,
Valentin

Le 13 août 09 à 17:50, Lubomir Marinov a écrit :

Hi Valentin, guys,

Please excuse my ignorance but who's overseeing this development, is
anyone looking into these patches, are they planned for integration
into trunk?

Thank you,
Lubomir

On Thu, Aug 13, 2009 at 6:46 PM, Valentin >> MARTINET<vmartinet.sipcommunicator@gmail.com> wrote:

PATCH:
Provides MSN, ICQ and Yahoo! implementations for ad-hoc multi user chat.

Information about this can be found here:

https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6707

Cheers,
Valentin

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#7

Hi Yana,

However, before being able to commit it I'd like to discuss here some of the following points :

- In the OperationSetAdHocMultiUserChat we have the method:

public AdHocChatRoom createAdHocChatRoom(String adHocRoomName,
                                  Map<String, Object> adHocRoomProperties)

Something that bothers me here is that for now we're using the roomProperties only to transmit the initial list of chat room members. I was wondering if it won't be more convenient to either define a second method that gets directly a List of members as a parameter or if we won't need this room properties for anything else, just modify this method. What do you think?

Agree! I was not sure if this method was supposed to be used with a list of contacts, and when I've done it, I was almost sure to do something "wrong" :slight_smile:

Otherwise if we decide to keep the above, you should modify the OperationSetAdHocMultiUserChatYahooImpl.createAdHocChatRoom in order to check if the incoming properties are really the members we're waiting:

if(roomProperties != null)
      {
        invitedContacts = new String[roomProperties.size()];
        for(Object value : roomProperties.values())
        {
          ContactYahooImpl contact = (ContactYahooImpl)value;
          ......
        }
      }

Do you mean by doing *value instanceof Contact* ?
But anyway, I would go for defining a new method, as you said earlier.
Is it ok for you/others?

- I find that the definition and the different implementations of the findRoom method are a little confusing. The thing that bothers me is that in the interface we state that it:

Returns a reference to an AdHocChatRoom named <tt>adHocRoomName</> or
null if no ad-hoc room with the given name exist on the server.

but then in the Msn implementation we check if a room with this name exist in the chat room cache and otherwise we create it ! In the Yahoo and Icq implementations we're just looking in the cache and we return what we find, so null if we don't find it.

Tell me if I'm wrong, but I personally think that Yahoo and Icq implementations are the proper one and all other implementations and javadoc comments should follow this behavior.

Agree too. I will change this.

With Yahoo all chat room members appeared doubled. I have also some exceptions appearing:

[java] 15:22:23.747 SEVERE: impl.protocol.yahoo.ProtocolProviderServiceYahooImpl.inputExceptionThrown().468 Yahoo protocol exception occured exception
    [java] ymsg.network.YMSG9BadFormatException: Bad parse of conference invite packet
    [java] at ymsg.network.Session.receiveConfInvite(Session.java:1757)
    [java] at ymsg.network.Session$InputThread.process(Session.java:2902)
    [java] at ymsg.network.Session$InputThread.run(Session.java:2850)
    [java] Caused by: java.lang.NullPointerException
    [java] at ymsg.network.Session.receiveConfInvite(Session.java:1754)
    [java] ... 2 more
    [java] 15:22:23.748 SEVERE: util.UtilActivator.uncaughtException().81 An uncaught exception occurred in thread=Thread[Event Fired,6,YMSG Threads] and message was: java.lang.NullPointerException
    [java] java.lang.ClassCastException: java.lang.NullPointerException
    [java] at net.java.sip.communicator.impl.protocol.yahoo.ProtocolProviderServiceYahooImpl$YahooConnectionListener.inputExceptionThrown(ProtocolProviderServiceYahooImpl.java:470)
    [java] at ymsg.network.Session$FireEvent.run(Session.java:3122)
    [java] 15:22:52.141 INFO: impl.gui.main.chat.conference.ConferenceChatManager.messageDelivered().1728 MESSAGE DELIVERED to ad-hoc chat room: yana_stamcheva-0
    [java] 15:22:53.658 INFO: impl.gui.main.chat.conference.ConferenceChatManager.messageDelivered().1728 MESSAGE DELIVERED to ad-hoc chat room: yana_stamcheva-0
    [java] 15:23:34.503 SEVERE: impl.protocol.yahoo.ProtocolProviderServiceYahooImpl.inputExceptionThrown().468 Yahoo protocol exception occured exception
    [java] ymsg.network.YMSG9BadFormatException: Bad parse of conference invite packet
    [java] at ymsg.network.Session.receiveConfInvite(Session.java:1757)
    [java] at ymsg.network.Session$InputThread.process(Session.java:2902)
    [java] at ymsg.network.Session$InputThread.run(Session.java:2850)
    [java] Caused by: java.lang.NullPointerException
    [java] at ymsg.network.Session.receiveConfInvite(Session.java:1754)
    [java] ... 2 more
    [java] 15:23:34.504 SEVERE: util.UtilActivator.uncaughtException().81 An uncaught exception occurred in thread=Thread[Event Fired,6,YMSG Threads] and message was: java.lang.NullPointerException
    [java] java.lang.ClassCastException: java.lang.NullPointerException
    [java] at net.java.sip.communicator.impl.protocol.yahoo.ProtocolProviderServiceYahooImpl$YahooConnectionListener.inputExceptionThrown(ProtocolProviderServiceYahooImpl.java:470)
    [java] at ymsg.network.Session$FireEvent.run(Session.java:3122)

I think I've never saw this before: I'll check and send comments or patch about this.

Another problem we encountered on Msn is that I didn't receive the reject message of a contact the rejected my invitation.

Invitations on MSN??

I think that's all for the moment. I didn't have the time to look at these problems myself, but if you need any help or more testing with this one let me know.

I check all that.
Don't worry about, I'm not discouraged yet and don't feel the need to cry :slight_smile:

Thanks for your comments, and for following my work carefully!

Best regards,
Valentin

···

Le 20 août 09 à 16:57, Yana Stamcheva a écrit :


#8

Hi,

about this Exception you can ignore it. We discussed it some time ago. It has something to do with sun crypto implementations and felix classloaders but its harmless , everything is working despite of it.

Cheers
damencho

Yana Stamcheva wrote:

···

java.net.MalformedURLException: invalid url: reference:file:sc-bundles/protocol-msn.jar!/ (java.net.MalformedURLException: Unknown protocol: reference)
     [java] at java.net.URL.<init>(URL.java:601)
     [java] at org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:281)

     [java] at java.net.URL.<init>(URL.java:596)
     [java] at java.net.URL.<init>(URL.java:464)
     [java] at java.net.URL.<init>(URL.java:413)
     [java] at javax.crypto.SunJCE_d.b(DashoA12275)
     [java] at javax.crypto.SunJCE_d.a(DashoA12275)
     [java] at javax.crypto.SunJCE_b.a(DashoA12275)
     [java] at javax.crypto.SunJCE_n.a(DashoA12275)
     [java] at javax.crypto.Cipher.c(DashoA12275)
     [java] at javax.crypto.Cipher.b(DashoA12275)
     [java] at javax.crypto.Cipher.a(DashoA12275)
     [java] at javax.crypto.Cipher.init(DashoA12275)
     [java] at net.sf.jml.protocol.soap.SSO$SSOticket.DES3(SSO.java:520)
     [java] at net.sf.jml.protocol.soap.SSO$SSOticket.<init>(SSO.java:454)
     [java] at net.sf.jml.protocol.soap.SSO.getTicketFromResponseXml(SSO.java:360)
     [java] at net.sf.jml.protocol.soap.SSO.getTicket(SSO.java:308)
     [java] at net.sf.jml.protocol.soap.SSO.getTicket(SSO.java:82)
     [java] at net.sf.jml.protocol.incoming.IncomingUSR$1.run(IncomingUSR.java:287)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#9

Hey Valentin,

Valentin MARTINET wrote:

Otherwise if we decide to keep the above, you should modify the
OperationSetAdHocMultiUserChatYahooImpl.createAdHocChatRoom in order
to check if the incoming properties are really the members we're waiting:

if(roomProperties != null)
      {
      invitedContacts = new String[roomProperties.size()];
      for(Object value : roomProperties.values())
      {
      ContactYahooImpl contact = (ContactYahooImpl)value;
      ......
      }
      }

Do you mean by doing *value instanceof Contact* ?

Didn't understand this part.

But anyway, I would go for defining a new method, as you said earlier.
Is it ok for you/others?

Yes, sounds reasonable.

Emil

···

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#10

Hi Yana, all,

I've done some modifications in my patch regarding to the points we talk about.

Therefore, I still don't have find a way to deal with this exception (even if it seems to be harmless):

ymsg.network.YMSG9BadFormatException: Bad parse of conference invite packet

Regards,
Valentin

adhoc-rooms.txt (342 KB)


#11

Damian,

I'm not sure if we can simply ignore this. At least MSN uses, for some
parts, crypto functions. The exception below shows that the JCE crypto
functions do not work, most probably because of restricted Java crypto
policies. Such an exception may lead to other follow-up problems. In this
specific case JCE cannot initialize the DES3 cipher. AFAIK MSN uses the
DES3 cipher and some functions may not work as expected if DES3 is not
available. To ceck this:
try to install the "unrestricted crypto policy files" (availabe at Sun
Java download area) and test again.

If it works with the umlimited/unrestricted policy files installed then
we need to have a look it we need to replace the JCE AES3 cipher with some
other DES3 implementation - the installation of the policy files require
root/Windows admin privileges and this is a problem for "normal" users
that like to install SC.

Regards,
Werner

Damian Minkov schrieb:

···

Hi,

about this Exception you can ignore it. We discussed it some time ago.
It has something to do with sun crypto implementations and felix
classloaders but its harmless , everything is working despite of it.

Cheers
damencho

Yana Stamcheva wrote:

java.net.MalformedURLException: invalid url:
reference:file:sc-bundles/protocol-msn.jar!/
(java.net.MalformedURLException: Unknown protocol: reference)
     [java] at java.net.URL.<init>(URL.java:601)
     [java] at
org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:281)

     [java] at java.net.URL.<init>(URL.java:596)
     [java] at java.net.URL.<init>(URL.java:464)
     [java] at java.net.URL.<init>(URL.java:413)
     [java] at javax.crypto.SunJCE_d.b(DashoA12275)
     [java] at javax.crypto.SunJCE_d.a(DashoA12275)
     [java] at javax.crypto.SunJCE_d.a(DashoA12275)
     [java] at javax.crypto.SunJCE_b.a(DashoA12275)
     [java] at javax.crypto.SunJCE_n.a(DashoA12275)
     [java] at javax.crypto.SunJCE_n.a(DashoA12275)
     [java] at javax.crypto.Cipher.c(DashoA12275)
     [java] at javax.crypto.Cipher.b(DashoA12275)
     [java] at javax.crypto.Cipher.a(DashoA12275)
     [java] at javax.crypto.Cipher.init(DashoA12275)
     [java] at javax.crypto.Cipher.init(DashoA12275)
     [java] at
net.sf.jml.protocol.soap.SSO$SSOticket.DES3(SSO.java:520)
     [java] at
net.sf.jml.protocol.soap.SSO$SSOticket.<init>(SSO.java:454)
     [java] at
net.sf.jml.protocol.soap.SSO.getTicketFromResponseXml(SSO.java:360)
     [java] at net.sf.jml.protocol.soap.SSO.getTicket(SSO.java:308)
     [java] at net.sf.jml.protocol.soap.SSO.getTicket(SSO.java:82)
     [java] at
net.sf.jml.protocol.incoming.IncomingUSR$1.run(IncomingUSR.java:287)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#12

Hey Valentin,

Valentin MARTINET wrote:

Otherwise if we decide to keep the above, you should modify the
OperationSetAdHocMultiUserChatYahooImpl.createAdHocChatRoom in order
to check if the incoming properties are really the members we're waiting:

if(roomProperties != null)
     {
     invitedContacts = new String[roomProperties.size()];
     for(Object value : roomProperties.values())
     {
     ContactYahooImpl contact = (ContactYahooImpl)value;
     ......
     }

Do you mean by doing *value instanceof Contact* ?

Didn't understand this part.

  We have:
public AdHocChatRoom createAdHocChatRoom( String roomName,
                                    Map<String, Object> roomProperties)

In fact, I used roomProperties as a *Map<String , Contact>* for the Yahoo! impl, because it was
more convenient to create a Yahoo! room by already giving room members to the Yahoo constructor.

So I substituted the room properties for Contacts.

anyway, I would go for defining a new method, as you said earlier.
Is it ok for you/others?

Yes, sounds reasonable.

It's done, and I was about to re-send my patch today (moments ago), but I currently can't check some things with ICQ.
It's not able to create a room with ICQ software and Adium, so I think ICQ may currently have problems (never failed before).

I'm gonna wait and check later...

···

Le 24 août 09 à 18:14, Emil Ivov a écrit :


#13

Hi Valentin,

Thanks for this new patch! We're almost there.

As we've discussed off-list these days, here are the last issues I experienced with ICQ (attached screenshots):

Use case (screenshot.tiff):

I'm talking to iana and I invite damencho-dev through the "Add to chat" button in the chat tool bar. iana and damencho-dev both receive and accept the invitations. The interface changes to the chat room interface and they appear in the list on the right. Everything looks normal until here. Then when someone of them sends a message a new tab appears (you can see it on the right), which is identical to the first one and all received messages appear there, but not in the first tab. When I try to send a message from the first tab, again it appears in the second tab and if I try to send message from the second tab the message appears two times (screenshot2.tiff).

You'll probably notice that in screenshot2.tiff the chat room list has disappeared. This happened when I closed the chat window and tried to establish the same chat room as explained above, again. I don't have any related exceptions in the console.

I'll also try to have a look and will let you know if I find the problem.

Thanks!
Yana


#14

Hi,

I'm busy right now but I will try testing this and will report the results.
Thanks for the suggestions

damencho

Werner Dittmann wrote:

···

Damian,

I'm not sure if we can simply ignore this. At least MSN uses, for some
parts, crypto functions. The exception below shows that the JCE crypto
functions do not work, most probably because of restricted Java crypto
policies. Such an exception may lead to other follow-up problems. In this
specific case JCE cannot initialize the DES3 cipher. AFAIK MSN uses the
DES3 cipher and some functions may not work as expected if DES3 is not
available. To ceck this:
try to install the "unrestricted crypto policy files" (availabe at Sun
Java download area) and test again.

If it works with the umlimited/unrestricted policy files installed then
we need to have a look it we need to replace the JCE AES3 cipher with some
other DES3 implementation - the installation of the policy files require
root/Windows admin privileges and this is a problem for "normal" users
that like to install SC.

Regards,
Werner

Damian Minkov schrieb:
  

Hi,

about this Exception you can ignore it. We discussed it some time ago.
It has something to do with sun crypto implementations and felix
classloaders but its harmless , everything is working despite of it.

Cheers
damencho

Yana Stamcheva wrote:
    

java.net.MalformedURLException: invalid url:
reference:file:sc-bundles/protocol-msn.jar!/
(java.net.MalformedURLException: Unknown protocol: reference)
     [java] at java.net.URL.<init>(URL.java:601)
     [java] at
org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:281)

     [java] at java.net.URL.<init>(URL.java:596)
     [java] at java.net.URL.<init>(URL.java:464)
     [java] at java.net.URL.<init>(URL.java:413)
     [java] at javax.crypto.SunJCE_d.b(DashoA12275)
     [java] at javax.crypto.SunJCE_d.a(DashoA12275)
     [java] at javax.crypto.SunJCE_b.a(DashoA12275)
     [java] at javax.crypto.SunJCE_n.a(DashoA12275)
     [java] at javax.crypto.Cipher.c(DashoA12275)
     [java] at javax.crypto.Cipher.b(DashoA12275)
     [java] at javax.crypto.Cipher.a(DashoA12275)
     [java] at javax.crypto.Cipher.init(DashoA12275)
     [java] at
net.sf.jml.protocol.soap.SSO$SSOticket.DES3(SSO.java:520)
     [java] at
net.sf.jml.protocol.soap.SSO$SSOticket.<init>(SSO.java:454)
     [java] at
net.sf.jml.protocol.soap.SSO.getTicketFromResponseXml(SSO.java:360)
     [java] at net.sf.jml.protocol.soap.SSO.getTicket(SSO.java:308)
     [java] at net.sf.jml.protocol.soap.SSO.getTicket(SSO.java:82)
     [java] at
net.sf.jml.protocol.incoming.IncomingUSR$1.run(IncomingUSR.java:287)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#15

Hi Valentin,

First, thanks for helping me (off-list) in resolving the duplicate tab issue and all the other issues we discussed when reviewing the patch.

Your patch is now applied, committed and ack-ed!

The group chat with Msn, Icq and Yahoo now goes through the Ad-hoc interfaces.

There were quite a lot of modifications though and I've noticed that we've missed some things. I've listed below some of the features/methods we forgot. Let me know if you prefer that I take care of some of them.

- Missing removeInvitationListener() and removeInvitationRejectionListener() in the OperationSetAdHocMultiUserChat interface and all corresponding implementations.

- There's no methods previewed for leaving or closing an AdHocChatRoom.

- Nobody fires the AdHocChatRoomDestroyedEvent.

- We don't appear as a participant of the ad hoc chat room. I'm not sure if we should but I think that this could be a good way to show that we actually joined the room (for example Pidgin also shows it this way).

- The chat room stays connected when the window is closed. I have added some code in the ChatWindowManager that should close the chat when the window or the tab is closed, but we should first add the possibility in the AdHocChatRoom interface (the second point).

- When the room stays with two participants the interface doesn't return to a single chat interface.

- I didn't saw an AdHocChatRoomInvitationMsnImpl and we don't fire an invitation event for Msn. Is this on purpose?

- I was looking at this join method in the AdHocChatRoomIcqImpl:

public void join() throws OperationFailedException
   {
       if (chatRoomSession == null && chatInvitation == null)
       { // the session is not set and we don't have a chatInvitatoin
           // so we try to join the chatRoom again
           ChatRoomManager chatRoomManager = provider.getAimConnection()
                   .getChatRoomManager();
           chatRoomSession = chatRoomManager.joinRoom(this.getName());
           chatRoomSession.addListener(
               new AdHocChatRoomSessionListenerImpl(this));
       }
       else if (chatInvitation != null)
       {
           chatRoomSession = chatInvitation.accept();
           chatRoomSession.addListener(
               new AdHocChatRoomSessionListenerImpl(this));
       }

       // We don't specify a reason.
       opSetMuc.fireLocalUserPresenceEvent(this,
           LocalUserAdHocChatRoomPresenceChangeEvent.LOCAL_USER_JOINED, null);
   }

The thing that bothers me here is that we fire LocalUser...PresenceEvent, but we're not yet sure if we've successfully joined the room. Shouldn't we fire this event in the handleStateChange() or even in handleUsersJoined()?

Valentin, let me know if you have questions or you'd like that we discuss some of these some more.

Cheers,
Yana

···

On Sep 9, 2009, at 12:19 PM, Yana Stamcheva wrote:

Hi Valentin,

Thanks for this new patch! We're almost there.

As we've discussed off-list these days, here are the last issues I experienced with ICQ (attached screenshots):

Use case (screenshot.tiff):

I'm talking to iana and I invite damencho-dev through the "Add to chat" button in the chat tool bar. iana and damencho-dev both receive and accept the invitations. The interface changes to the chat room interface and they appear in the list on the right. Everything looks normal until here. Then when someone of them sends a message a new tab appears (you can see it on the right), which is identical to the first one and all received messages appear there, but not in the first tab. When I try to send a message from the first tab, again it appears in the second tab and if I try to send message from the second tab the message appears two times (screenshot2.tiff).

You'll probably notice that in screenshot2.tiff the chat room list has disappeared. This happened when I closed the chat window and tried to establish the same chat room as explained above, again. I don't have any related exceptions in the console.

I'll also try to have a look and will let you know if I find the problem.

Thanks!
Yana

<screenshot.tiff><screenshot2.tiff>-
On Aug 24, 2009, at 7:17 PM, Valentin MARTINET wrote:

Hi Yana, all,

I've done some modifications in my patch regarding to the points we talk about.

Therefore, I still don't have find a way to deal with this exception (even if it seems to be harmless):

ymsg.network.YMSG9BadFormatException: Bad parse of conference invite packet

Regards,
Valentin

<adhoc-rooms.txt>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#16

Hello Yana, all,

Yana Stamcheva a �crit :

There were quite a lot of modifications though and I've noticed that we've missed some things. I've listed below some of the features/methods we forgot. Let me know if you prefer that I take care of some of them.

- Missing removeInvitationListener() and removeInvitationRejectionListener() in the OperationSetAdHocMultiUserChat interface and all corresponding implementations.

- There's no methods previewed for leaving or closing an AdHocChatRoom.

- Nobody fires the AdHocChatRoomDestroyedEvent.

- We don't appear as a participant of the ad hoc chat room. I'm not sure if we should but I think that this could be a good way to show that we actually joined the room (for example Pidgin also shows it this way).

I'll take care of this.

- I didn't saw an AdHocChatRoomInvitationMsnImpl and we don't fire an invitation event for Msn. Is this on purpose?

(no invitations for chatrooms in MSN)

I'll send a patch to fix this soon.

Regards,
Valentin

···

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#17

Hi Yana,

Here is the patch, with the changes we talked about.

Best regards,
Valentin

ad-hoc-fixes.txt (10.9 KB)


#18

Though it should be obvious from the commits mailing list and the
issue tracker, I'm mentioning it here for the sake of the completeness
of the thread on the subject that I think that the exception should be
properly resolved by r6155. The solution I've implemented is to
resolve reference:file:sc-bundles/protocol-msn.jar!/ so that it's
understandable to the code that used to throw the exception.

···

On Tue, Aug 25, 2009 at 10:21 AM, Damian Minkov <damencho@sip-communicator.org> wrote:

Hi,

I'm busy right now but I will try testing this and will report the results.
Thanks for the suggestions

damencho

Werner Dittmann wrote:

Damian,

I'm not sure if we can simply ignore this. At least MSN uses, for some
parts, crypto functions. The exception below shows that the JCE crypto
functions do not work, most probably because of restricted Java crypto
policies. Such an exception may lead to other follow-up problems. In this
specific case JCE cannot initialize the DES3 cipher. AFAIK MSN uses the
DES3 cipher and some functions may not work as expected if DES3 is not
available. To ceck this:
try to install the "unrestricted crypto policy files" (availabe at Sun
Java download area) and test again.

If it works with the umlimited/unrestricted policy files installed then
we need to have a look it we need to replace the JCE AES3 cipher with some
other DES3 implementation - the installation of the policy files require
root/Windows admin privileges and this is a problem for "normal" users
that like to install SC.

Regards,
Werner

Damian Minkov schrieb:

Hi,

about this Exception you can ignore it. We discussed it some time ago.
It has something to do with sun crypto implementations and felix
classloaders but its harmless , everything is working despite of it.

Cheers
damencho

Yana Stamcheva wrote:

java.net.MalformedURLException: invalid url:
reference:file:sc-bundles/protocol-msn.jar!/
(java.net.MalformedURLException: Unknown protocol: reference)
[java] at java.net.URL.<init>(URL.java:601)
[java] at

org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:281)

\[java\]     at java\.net\.URL\.&lt;init&gt;\(URL\.java:596\)
\[java\]     at java\.net\.URL\.&lt;init&gt;\(URL\.java:464\)
\[java\]     at java\.net\.URL\.&lt;init&gt;\(URL\.java:413\)
\[java\]     at javax\.crypto\.SunJCE\_d\.b\(DashoA12275\)
\[java\]     at javax\.crypto\.SunJCE\_d\.a\(DashoA12275\)
\[java\]     at javax\.crypto\.SunJCE\_d\.a\(DashoA12275\)
\[java\]     at javax\.crypto\.SunJCE\_b\.a\(DashoA12275\)
\[java\]     at javax\.crypto\.SunJCE\_n\.a\(DashoA12275\)
\[java\]     at javax\.crypto\.SunJCE\_n\.a\(DashoA12275\)
\[java\]     at javax\.crypto\.Cipher\.c\(DashoA12275\)
\[java\]     at javax\.crypto\.Cipher\.b\(DashoA12275\)
\[java\]     at javax\.crypto\.Cipher\.a\(DashoA12275\)
\[java\]     at javax\.crypto\.Cipher\.init\(DashoA12275\)
\[java\]     at javax\.crypto\.Cipher\.init\(DashoA12275\)
\[java\]     at

net.sf.jml.protocol.soap.SSO$SSOticket.DES3(SSO.java:520)
[java] at
net.sf.jml.protocol.soap.SSO$SSOticket.<init>(SSO.java:454)
[java] at
net.sf.jml.protocol.soap.SSO.getTicketFromResponseXml(SSO.java:360)
[java] at net.sf.jml.protocol.soap.SSO.getTicket(SSO.java:308)
[java] at net.sf.jml.protocol.soap.SSO.getTicket(SSO.java:82)
[java] at
net.sf.jml.protocol.incoming.IncomingUSR$1.run(IncomingUSR.java:287)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net