Hi all, Good news - there's a one-line fix for the MSN over HTTP problem we've had for the past few weeks - see below for the report from the ticket in their trac.
I think we should apply this one-line patch to our private copy of libgaim, in both the 2.1 and 2.2 branches, and consider upgrading to libpurple (or consider depending on the system copy of libpurple) between now and the 2.2 release. Cheers, Dave. -------- Original Message -------- Subject: Re: [Pidgin] #2638: "Message could not be sent because a connection error occurred:" (w/ MSN HTTP Method) Date: Wed, 12 Sep 2007 18:08:52 -0000 From: Pidgin <[EMAIL PROTECTED]> Reply-To: [EMAIL PROTECTED] CC: [EMAIL PROTECTED] References: <[EMAIL PROTECTED]> #2638: "Message could not be sent because a connection error occurred:" (w/ MSN HTTP Method) ---------------------------+------------------------------------------------ Reporter: ThorbjornTux | Owner: Type: defect | Status: new Priority: major | Milestone: Merge MSNP14 Branch Component: libpurple | Version: 2.1.0 Resolution: | Keywords: Pending: 0 | ---------------------------+------------------------------------------------ Comment (by laszlok): I think I have solved it. This works perfectly for me behind a corporate firewall that only allows port 80 out. == Here is the issue: == The default value for the msn server address is messenger.hotmail.com. You can see this is filled in beside "Server:" in the "Advanced" tab of the "Modify Account" dialog. However this server is only used for non-http connections. To use HTTP and bypass a corporate firewall, you must use gateway.messenger.hotmail.com. This address is hard-coded in the msn_httpconn_connect() function in libpurple/protocols/msn/httpconn.c. So no matter what host and port are given as arguments to msn_httpconn_connect(), it will always connect to gateway.messenger.hotmail.com on port 80. The problem arises when the msn server tells us to use another host. This only recently stopped working, so I am guessing up until then microsoft used the same server for everything. When you want to start chatting to someone, the client sends a switchboard request to the server: {{{ XFR 12 SB }}} Then the server responds with the information on how to connect to the switchboard: {{{ XFR 12 SB 65.54.171.30:1863 CKI 151986110.22113252.20218652 }}} You can see there is a host and port given for the switchboard in "65.54.171.30:1863". The other two arguments are authentication method and session ID. Of course this was designed before the HTTP method was in use, because as you know we can't connect to port 1863 because of our corporate firewall; we have to use port 80. However the server still expects us to connect to the given host on port 80. So we need to connect to 65.54.171.30:80. The pidgin code parses the host and port nicely, and requests a new connection to that server, but these arguments are ignored because both the host and port are hard-coded in msn_httpconn_connect(). It tried to connect to the switchboard at gateway.messenger.hotmail.com, but that server is not a switchboard, and sends HTTP 400 Bad Request. Pidgin then reports this to the user as "Message could not be sent because a connection error occurred". == How to fix it: == First you have to apply my patch, which removes the hard-coded gateway.messenger.hotmail.com, and allows it to use the one in the "Advanced" tab of the "Modify Account" dialog. It's a simple one line patch: {{{ --- libpurple/protocols/msn/httpconn.c 2007-08-20 14:12:48.000000000 -0400 +++ libpurple-http-fixed/protocols/msn/httpconn.c 2007-09-12 13:26:25.000000000 -0400 @@ -725,7 +725,7 @@ msn_httpconn_disconnect(httpconn); httpconn->connect_data = purple_proxy_connect(NULL, httpconn->session->account, - "gateway.messenger.hotmail.com", 80, connect_cb, httpconn); + host, 80, connect_cb, httpconn); if (httpconn->connect_data != NULL) { }}} 1. Apply the patch to the 2.1.1 release (I haven't tested it out with anything else). 1. Make, make install. 1. Run Pidgin, and open Account -> Add/Edit. Select you MSN account and click Modify. 1. Go the the Advanced tab, and change Server to "gateway.messenger.hotmail.com" without the quotes. 1. Make sure Port is 80, and "Use HTTP Method" is selected. 1. Logout and login again. You should be able to chat now. -- Ticket URL: <http://developer.pidgin.im/ticket/2638#comment:47> Pidgin <http://pidgin.im> Pidgin -- Dave Neary OpenWengo Community Development Manager Email: [EMAIL PROTECTED] Tel: +33 9 51 13 46 45 Mob: +33 6 28 09 73 11 _______________________________________________ Wengophone-devel mailing list Wengophone-devel@lists.openwengo.com http://dev.openwengo.com/mailman/listinfo/wengophone-devel