Life in a shell

bash$ tiagosh

one step ahead

Just for the record:

SVN commit 884493 by mattr:

Enable the new WLM plugin for Kopete.

This new plugin replaces the MSN plugin and requires an external library
called libmsn which can be gotten from
We're working towards a 0.4 release of that library but until then, please
download the beta versions.

The new WLM plugin provides support for the MSNP15 protocol version and in
general lays the groundwork for a better MSN plugin.

Thanks go to Tiago Salem Herrmann, Gustavo Boiko, and Roman Jarosz for doing
all the heavy lifting.


November 20, 2008 - Posted by | gsoc, kopete, libmsn


  1. does this mean that kopete will finally stop sucking donkey balls with msn now? 😀

    Comment by proyvind | November 20, 2008 | Reply

  2. I’d say “maybe” 🙂

    Comment by tiagosh | November 20, 2008 | Reply

  3. I don’t know if I’m alone, but from this update I have the following issues :

    – need to reconfigure my MSN account, kopete did not import the previous one.

    – no image for (some) contacts

    – no status icon

    Comment by FACORAT Fabrice | November 20, 2008 | Reply

  4. Hi,

    probably you are not alone.

    The reconfiguration is necessary due to layout issues. MSNP15 indexes the same users in another way, and probably it is better to reconfigure then messing up with your contact list.

    – the avatar is loaded on demand, it will not download everything when you are just connected or the msn server will disconnect you.

    – status icon? what you mean by that?

    Comment by tiagosh | November 20, 2008 | Reply

  5. Grats Sasa! Grats!

    Comment by Salvador | November 22, 2008 | Reply

  6. Hey,

    What’s the status of wlm webcam?

    Comment by kakalto | November 27, 2008 | Reply

  7. Hi kakalto,

    the webcam support still needs to be implemented.
    I did not find good references of the protocol yet, but certainly I’ll implement as soon as I understand the protocol.


    Comment by tiagosh | November 27, 2008 | Reply

  8. Hi, I tried to compile libmsn but it doesn’t.
    I’m speaking about rev 75 under VS2005.

    Unfortunately I have to write my application for windows and I’m getting hundreds of compile warnings and several errors.

    Maybe, if you could help me, we could get your lib compiling on VS? Or if you don’t have time, maybe you could send me a precompiled lib? Please answer ASAP as I have a deadline 🙂


    Comment by wITTus | December 4, 2008 | Reply

  9. Done.

    C2491 occured because `msn_EXPORTS’ wasn’t defined. Maybe you should mention this in your README file. As DLL n00bs like me don’t know very much about that stuff. 😉

    And for the rest:

    Index: trunk/msn/filetransferp2p.cpp
    — trunk/msn/filetransferp2p.cpp (revision 75)
    +++ trunk/msn/filetransferp2p.cpp (working copy)
    @@ -71,7 +71,7 @@
    – this->myNotificationServer()->externalCallbacks.registerSocket(this->so
    ck, 1, 0);
    + this->myNotificationServer()->externalCallbacks.registerSocket(this->so
    ck, 1, 0, 1);

    if(perspective == MSNFTP_CLIENT)

    Index: trunk/msn/soap.cpp
    — trunk/msn/soap.cpp (revision 75)
    +++ trunk/msn/soap.cpp (working copy)
    @@ -32,7 +32,7 @@
    +#include “soap.h”

    #include “xmlParser.h”

    Comment by wITTus | December 4, 2008 | Reply

  10. Damn HTML. You definitively need a [code] tag here ;).
    Forget the diffs and change it manually.

    Comment by wITTus | December 4, 2008 | Reply

  11. Hi wITTus,

    the filetransferp2p.cpp/h files are not used by the project, so you should not include them in the list of files to be compiled. (I just removed them from svn)
    The msn_EXPORTS macro is defined in libmsn_export.h

    I believe you did not use cmake, right? all these issues, but the soap.cpp header, would not happen if you use cmake. Cmake can generate project files for many versions of Visual studio if I remember correctly.

    Anyway thanks for the comment and for the patches. I have fixed the header issue in another way on svn.
    If it did not solve your problem, feel free to contact me again.


    Comment by tiagosh | December 4, 2008 | Reply

  12. Thanks.

    Actually, I didn’t even knew that cmake has this feature.
    I’m still studying your library. I like the way you managed the callbacks.

    By the way, the example app is absolutely impossible to compile on windows. Neither mingw32 nor Visual Studio have poll() implemented (except VS2008 for Vista).

    Anyway, you did a great job. Keep up the good work!


    Comment by wITTus | December 4, 2008 | Reply

  13. PS: Is there any special reason why you use 20 sockets in your example-app?

    Comment by wITTus | December 4, 2008 | Reply

  14. Ah, that example is for linux only, sorry.
    I’ve never tested the library on windows, so I can’t ensure it will work perfectly.
    If you manage to compile it on windows, please, send-me your msntest.cpp and I can add it upstream 🙂

    You can use more sockets, it was 20 in the old library and I just kept it there, but it can be increased.

    Comment by tiagosh | December 4, 2008 | Reply

  15. OK. I got far, but not far enough.
    I need your help now.

    This is the code:
    And this is the output:

    The code should be pretty similar to yours. However, there are some differences:

    * First, instead of poll() I use a WinAPI Callback:


    POLLIN and POLLOUT are handled in FD_READ and FD_WRITE in the WM_NET case somewhere in WndProc().

    * Second:

    -> struct pollfd mySockets[21]
    -> mySocketsSsl[21]

    were replaced by

    std::vector Sockets;
    std::vector SocketsSSL;


    Instead of looping trough the socket array in every ‘Callbacks’-function, I lookup the correct index of the current used socket (sock*) in the global vector with these functions:

    static int Callbacks::findIndex(SOCKET s)
    static int Callbacks::findIndex(void* s)

    Now the problem. At first, it seems to work well, but then, when SSL support comes into play, connectionWithSocket() returns always 0. And I have really no clue why that happens. There’re still messages arriving (in FD_READ) but they cannot be handled because connectionWithSocket() doesn’t find the right MSN::Connection handle. Take a look at the output, it’s near by the end.

    I’m sure this can be done somehow.
    Would be really cool if you’d take a look on my code.


    Comment by wITTus | December 5, 2008 | Reply

  16. It works! LibMSN works under Windows!

    I’ll add maybe some new example code for Win32 in a week or so.

    Comment by wITTus | December 7, 2008 | Reply

    • Hi wITTus,
      that’s awesome. You really made my day.
      I’m courious to see your msntest for win32.
      I tried to access the code in pastebin but it seems that the links do not exist anymore.
      Just added you to my msn so then we can talk about it.

      Comment by tiagosh | December 7, 2008 | Reply

  17. I’d be interested in seeing it working on Windows, just having a play with the code myself now

    Comment by Adam Dempsey | December 18, 2008 | Reply

    • Hi Adam,

      wiTTus (from the comment above) is helping me on porting it to windows. Probably the 4.0 final release will be supported on windows too.

      Comment by tiagosh | December 18, 2008 | Reply

  18. With many compliments for this work, and can you tell me something about msn file transfer with p2p support?
    Is that possible? It would be the greatest improvement for kopete, we’ve been waiting for it for years!! thanks for this great plugin

    Comment by Minolk | March 9, 2009 | Reply

  19. Hi Minolk.

    yes, p2p file transfer is possible, but it needs to be done in libmsn layer. As soon as libmsn supports it, kopete will automatically be able to do direct file transfers.

    Thanks for the comment.

    Comment by tiagosh | March 12, 2009 | Reply

  20. Keep up the good work Tiagosh, there are many of us out there that appriciates your work!

    Cheers /Chris

    Comment by Chris | March 24, 2009 | Reply

  21. Dear Mr.Tiagosh,

    The first, I’m sorry about bad English. I’m working in my project which is using libmsn 4.0. However, I’m still not compile it in windows. Please help me. I’m very thankful you. I’m really expect feedback from you.

    Please help me answer some question, thanks so much.
    1. Which version OpenSSL used in libmsn?
    2. I have read README file. I see we have to use cmake. But I dont know how to using cmake? Please help me, it doesn’t get many times of you :).
    3. I have some error C3861: ‘strncasecmp’: identifier not found in xmpParser.cpp and many C2491. How to fix them?.

    I’m really thankful you and everyone. Please help me. Thanks again.

    Comment by Manh | April 16, 2009 | Reply

    • Hi Manh,

      sorry the delay.

      Well, I do not have much expertise in windows, as I only have compiled libmsn on Linux and OSX, but some windows developers sent patches and as far as I know it compiles fine in windows. (see kopete for windows:
      About your questions:
      1) openssl here is 0.9.8k (I believe this is the latest version)
      2) Well, it is very hard to explain how to use cmake, as it can generate buildsystem for many IDE’s and compilers. But basically all you need to do is to create a new directory, join this directory and then run “cmake PATH_TO_LIBMSN_SRC”, than run make.
      3) This is something related to your compiler. I suggest you to compile libmsn using mingw gcc.

      Good luck.

      Comment by tiagosh | May 4, 2009 | Reply

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: