Opened 11 years ago

Closed 8 years ago

Last modified 6 years ago

#247 closed patch (fixed)

MSN Direct File Transfers

Reported by: gbil Owned by: QuLogic
Milestone: 2.7.1 Component: MSN
Version: 2.0 Keywords:
Cc: arudil, Tythsai, jisakiel, Dedalus, tbhimdi, eternam, ferk, phannent, morfeasrev, merihakar, frasten, ohmanger, belegdol, Pindakaas, VRonin, sydro, ffdragon2, lolwut, salinasv, kranjcec

Description

Since the ticket in sf.net closed due to the migration to pidgin I reopen this bug - enhancement requesting direct file transfers for MSN instead of using MSN proxies to do the file transfer resulting in low low low transfer rates.

Cheers,

  1. Billios

Attachments (2)

libpurple_msn_direct_file_transfer.diff (75.1 KB) - added by kukkerman 8 years ago.
Direct File Transfer patch integrated into slplink layer
libpurple_msn_direct_file_transfer2.diff (77.1 KB) - added by kukkerman 8 years ago.
An improved version of the previous patch (fixes some bugs).

Download all attachments as: .zip

Change History (67)

comment:1 Changed 11 years ago by lschiere

  • Component changed from pidgin (gtk) to libpurple
  • Owner set to khc

comment:2 Changed 11 years ago by azurejchen

Will this feature be supported in near future? I guess may users are hoping it. Is it difficult to implement as offline messaging?

Maybe you can have a look at Miranda who supports MSN direct file transfer (at least in 0.7 test build) which is also open sourced.

comment:3 Changed 11 years ago by sqyu

File transfer is too slow for MSN now. I hope direct file transfer will be supported soon.

comment:4 Changed 11 years ago by jinn

I am glad that finally this problem is to be fixed.. this was the main thing hindering me from using the beautiful pidgin. I just need to know a time span.. no exact date or anything.. 1 month? 3 months? about how long until this fixed?

Thanks you devs again for your appreciated work.

comment:5 Changed 10 years ago by stoffe

I just want to say I would appreciate it if this was implemented. I didn't really use to need it before, but recently, a lot of people more or less officially started sending files via MSN, because "everyone's got it, anyway".

So, they start sending me a file, say "zzz", cancel it, whine and send it by mail. Lather, rinse, repeat. :)

None of which is Pidgin's fault, of course. Just saying that you would make me and many other happy if this was implemented, though not half as much as if MSN just went away overnight... :)

comment:6 Changed 10 years ago by jinn

Just found this. might help, it describes how file transfer works in msn protocol.

http://www.hypothetic.org/docs/msn/client/file_transfer.php

comment:7 Changed 10 years ago by seanegan

  • Component changed from libpurple to MSN

comment:8 Changed 10 years ago by cnicog

This is what is holding pidgin back IMO. If we had direct file transfers I would never look back on any other IM programs.

comment:9 Changed 10 years ago by Dead1nside

I second cnicog's opinion and I really do wish that the Pidgin team look into implementing this feature it's really a killer feature and one that's holding it Pidgin back on the MSN front.

comment:10 Changed 10 years ago by dave1g

this is a really old ticket; move to "patches welcome" milestone?

comment:11 Changed 10 years ago by denied

I would like to cast a vote for this problem to be fixed too, it's getting annoying to allways have to find aternative ways for MSN users to send me files.

comment:12 Changed 10 years ago by rekkanoryo

  • Milestone set to Patches welcome

Voting is not going to make a difference with file transfer support. What will help is getting someone who wants to write this support to work on it.

At any rate, per dave1g's suggestion, I am moving this to Patches Welcome.

comment:13 Changed 10 years ago by Dead1nside

Fair enough rekkanoryo, but I think this is a significantly large piece of the puzzle that is missing that needs to be worked on, I understand it's not top priority for you guys but it's a bug I come up against almost every time I use Pidgin. If I was a programmer I'm sure I'd work on this - do you have any other links to resources related to this problem, the relevant pieces of Pidgin's code? Voting's all we interested users who are not programmers can do at the moment. I don't mean to clutter up the ticket.

comment:14 Changed 10 years ago by khc

Most of the protocol information is on msnpiki.

comment:15 Changed 10 years ago by wild_oscar

Lack of direct file transfer protocol in MSN (and lack of webcam support) is what made me give up on pidgin and start using aMSN instead.

I will gladly go back - and recommend pidgin - once these features are present, so I hope they can be implemented as soon as possible!

comment:16 follow-up: Changed 10 years ago by efa

this: http://developer.pidgin.im/ticket/2615 is probably the same ask in "defect" version.

comment:17 in reply to: ↑ 16 ; follow-up: Changed 10 years ago by mikecz

Replying to efa:

this: http://developer.pidgin.im/ticket/2615 is probably the same ask in "defect" version.

This (#247, slow file transfer) seems unrelated to #2615 (system slowdown on file transfer)

comment:18 in reply to: ↑ 17 Changed 10 years ago by efa

Replying to mikecz:

This (#247, slow file transfer) seems unrelated to #2615 (system slowdown on file transfer)

yes sorry, I had misunderstanded the #2615 description. I report in this bug# what exactly happen to me:

Often I'm chatting with lot of my friends in MSN, probably I'm the only one that use Pidgin. Now I'm using 2.3.0 on WinXPsp2. Sometime, someone want to send a file to all of us. All the other can download the file in a few moments, I shold ask to send me the file by email. Is not a problem related to ADSL connection or provider, I tried different.

I don't know if is a related to MSN proxies Defects or MSN direct file transfer Request For Enhancement.

comment:19 Changed 10 years ago by Dead1nside

efa, this is because Pidgin does not implement direct file transfers so most downloads usually go at 3kb/s or slower. Instead of the maximum that the Windows Live Messenger client allows for. The Pidgin developers have said they do not have enough time to implement this feature at the moment, instead waiting for someone with enough interest to come along and implement it. We could be waiting a long time for this important feature.

comment:20 follow-up: Changed 10 years ago by efa

Two other questions to understand the problem:

  • MSN proxies is limited to 3 Kb/s, and theres no chance to go faster, also for Windows Live Messenger?
  • Windows Live Messenger use the direct file transfer to reach an high transfer rate?

comment:21 in reply to: ↑ 20 Changed 10 years ago by sque

Replying to efa:

Two other questions to understand the problem:

  • MSN proxies is limited to 3 Kb/s, and theres no chance to go faster, also for Windows Live Messenger?
  • Windows Live Messenger use the direct file transfer to reach an high transfer rate?

Yes, msn protocol has a fall back mechanism to transfer files through microsoft proxies when the direction connection of two clients is not possible. This happens also on Windows Live Messenger if both clients cannot accept incoming requests.

So basically it tries to create a connections between two clients trying both directions and if they tries fail, it will then setup a proxied connections which has a limit at around 3kb/s transfer rate. On pidgin there is no implementation for direct transfer at all and will ask immediatly for proxied file transfer that is why it has low transfer rates.

Finaly I would like the developpers here to post any info they have for how direct transfers protocol works because this page http://www.hypothetic.org/docs/msn/research/msnp10.php is I think outdated. Without info it would be hard for a volunteer to make this at all.

comment:23 Changed 10 years ago by felipec

It's partially implemented in msn-pecan.

comment:24 Changed 10 years ago by efa

I'm happy if I can help in code something related to GTK and protocol handling

comment:25 Changed 10 years ago by joolz

felipec, any progress? Project seems to be gone from freedesktop.org =(

comment:26 Changed 10 years ago by felipec

I just removed it, the new home is at github: http://github.com/felipec/msn-pecan

It will be nice to have someone on the otherside using the official messenger willing to receive stuff while I implement/test this :)

comment:27 Changed 10 years ago by sque

This day I spent a lot of time on windows, and I can help if you want by helping testing debuging against official client. What is your msn account?

comment:28 Changed 10 years ago by matthaeus123

This is the single most important feature to me. I would use Pidgin 100% of the time if this feature were implemented.

comment:29 Changed 10 years ago by wild_oscar

I gave up on pidgin and switched to aMSN a long time ago mainly due to this issue.

comment:30 follow-up: Changed 10 years ago by matthaeus123

I think the developers should at least make this a higher priority than "minor".

I know the developers would like to spread Pidgin, but I can't recommend Pidgin to most of the people I know, just because it lacks this feature.

The developers could at least merge some of the code developed by the MSN-pecan project.

comment:31 Changed 9 years ago by dave1g

mathaeus, I think the current game plan is for felipec to hack it out, crudely if need be. That will be the skeleton for what gets transferred into pidgin proper, being cleaned up along the way.

comment:32 Changed 9 years ago by Tythsai

felipec, I am willing to help test with the official client, once i finish building my desktop. if you still need help. its been three months, after all.

comment:33 follow-up: Changed 9 years ago by matthaeus123

According to the MSN-Pecan project page. He has written all of the code for Direct Transfers, but has it currently disabled. He said that he will enable the code and update it, after he has finished OIM support. But that was recently fixed, so I would imagine he will be releasing the new code for direct transfers soon.

http://code.google.com/p/msn-pecan/issues/detail?id=35

You look at the page, and direct transfer is the most requested feature by far.

comment:34 in reply to: ↑ 33 Changed 9 years ago by Vermind

The amsn project has had direct transfers over msn for a year or two: http://www.amsn-project.net/ Code from there might be useful.

comment:35 in reply to: ↑ 30 Changed 9 years ago by hbs

Replying to matthaeus123:

I think the developers should at least make this a higher priority than "minor".

I agree. It is annoying that I need to switch back to the offical client before receiving any files.

comment:36 follow-up: Changed 9 years ago by deryni

The priority doesn't mean what you think it means. This feature is not yet implemented because the people who work on MSN have not had time or desire to work on this, and the people who do have the time and/or desire do not or cannot. We would be more than willing to accept a patch for this feature if someone were to present us with one, failing that it will wait until someone with both the time and ability to do it has the desire to do it.

Also, the fact that amsn has this feature is less than helpful to us because amsn is written in TCL and not C.

comment:37 in reply to: ↑ 36 ; follow-up: Changed 9 years ago by ferk

The developer of msn-pecan has the ability and he already invested his time. Why not review the code that he wrote and use it? According to him, it is already stable and fast.

comment:38 in reply to: ↑ 37 Changed 9 years ago by felipec

Replying to ferk:

The developer of msn-pecan has the ability and he already invested his time. Why not review the code that he wrote and use it? According to him, it is already stable and fast.

But not yet complete.

comment:39 Changed 9 years ago by morfeasrev

cc

comment:40 Changed 8 years ago by rekkanoryo

Ticket #9777 has been marked as a duplicate of this ticket.

comment:41 Changed 8 years ago by darkrain42

Ticket #10686 has been marked as a duplicate of this ticket.

comment:42 Changed 8 years ago by bberry

Using aMSN because of this issue. Would switch to pidgin instantly if fixed.

comment:43 Changed 8 years ago by sydro

what's the situation ?

comment:44 follow-up: Changed 8 years ago by kukkerman

Hi!

I've created a patch which enables libpurple to use MSN's direct file transfer. I've tested it with MSN Messenger 7.0 and Windows Live Messenger 2009 (Build: 14.0.8089.726) and so far it's working fine. Hopefully I'll have time for some more testing in the next few days (it's very alpha right now) and upload the patch here. So stay tuned. :)

comment:45 in reply to: ↑ 44 ; follow-up: Changed 8 years ago by bberry

Replying to kukkerman:

Hi!

I've created a patch which enables libpurple to use MSN's direct file transfer. I've tested it with MSN Messenger 7.0 and Windows Live Messenger 2009 (Build: 14.0.8089.726) and so far it's working fine. Hopefully I'll have time for some more testing in the next few days (it's very alpha right now) and upload the patch here. So stay tuned. :)

That sounds excellent kukkerman, awaiting your patch with excitement :)

comment:46 in reply to: ↑ 45 Changed 8 years ago by eternam

Replying to bberry:

Replying to kukkerman:

Hi!

I've created a patch which enables libpurple to use MSN's direct file transfer. I've tested it with MSN Messenger 7.0 and Windows Live Messenger 2009 (Build: 14.0.8089.726) and so far it's working fine. Hopefully I'll have time for some more testing in the next few days (it's very alpha right now) and upload the patch here. So stay tuned. :)

That sounds excellent kukkerman, awaiting your patch with excitement :)

Me too!! been waiting for this. Thanks kukkerman!

comment:47 Changed 8 years ago by sydro

fantstic :D

comment:48 Changed 8 years ago by kukkerman

Hi!

It turned out that the direct file transfer is not the only problem here. I was able to negotiate a direct connection between the two parties and the file data is sent through it just fine. However if there's an estabilished direct connection between two parties then the official clients send other invitations (emoticon, user display picture for example) on this channel as well to lighten the load of MSN servers I suppose. This doesn't mean that the transferred file will be corrupted because these messages can easily be spearated from the file data. But... they can't directly be fed back to the existing handlers because of the slighty different format and the response generated by handlers will be sent through the MSN servers by default rather than the direct connection. So the direct connection has to be integrated into the slplink and its corresponding slpcalls. I've come to this conclusion a bit late and realized that some of my code is redundant because with the appropriate modification the existing slplink/slpcall routines will be able to deal with direct connections as well.

Okay that's enough talk... I've attached the patch which enables some limited direct file transfer. The caveats are:

  • You'll be able to receive/send one file at a time with a specific party.
  • Invite messages (emoticon, user display picture for example) won't be received during the file transfer.

If I find some time I'll work on the proper direct file transfer so don't panic.

Cheers,

Kukkerman

comment:49 Changed 8 years ago by felipec

kukkerman: that's exactly the reason why slplink exists :) So that the actual transport method (switchboard vs directconn) is transparent to the upper layers.

comment:50 Changed 8 years ago by lolwut

I know it has 'only' been 3 weeks, but I am so excited to see someone work on this ticket (the only reason I still keep WLM around), so I have to ask... What is the status? :) (and by 'status' I mainly mean how far the solution is from the main client - I'm too much of a clown to figure out how to compile with patches myself, especially here of Windows) Subscribing, of course

comment:51 Changed 8 years ago by kukkerman

Right now I'm working on a project with a pretty tight deadline so that's my first priority. I've already laid out the plan how a proper patch should be implemented to integrate direct file transfer to the existing code. I've also figured out the nonce hashing algorithm used by the official client so no hardcoded nonce/nonce-hash is requied anymore to negotiate a direct connection session. I'll start working on the issue as soon as I finish my current project (probably mid-January).

Changed 8 years ago by kukkerman

Direct File Transfer patch integrated into slplink layer

comment:52 Changed 8 years ago by kukkerman

Hi!

Because I'm very busy working on another project but promised you the patch mid-January I've decided to release it in its current state (some more testing would be necessary). It's working with the official Live Messenger and MSN Messenger clients. I've integrated Direct File Transfer (direct TCP connection initiated by a file transfer request to be precise) into the slplink layer so direct connection can be used for sending/receiving slp messages (file transfer for example) directly rather than through the server.

I don't know when I'll be able to work on this issue again in the next few weeks (months?) but please patch your own version of pidgin and report the bugs. Maybe this ticket can be closed once and for all.

Cheers,

Kukkerman

comment:53 Changed 8 years ago by darkrain42

  • Milestone changed from Patches welcome to Patches Needing Review
  • Type changed from enhancement to patch

comment:54 Changed 8 years ago by felipec

In case someone is interested I just finished implementing this in msn-pecan. The basic support includes sending, receiving, and multiple ip addresses. You just need to grab the latest git head, enable directconn in the account options.

comment:55 Changed 8 years ago by QuLogic

  • Owner changed from khc to QuLogic

comment:56 Changed 8 years ago by QuLogic

Thanks for the patch. Can I get a real name/email address for our COPYRIGHT file (assuming I get it to work)?

Changed 8 years ago by kukkerman

An improved version of the previous patch (fixes some bugs).

comment:57 Changed 8 years ago by kukkerman

Hi!

I've attached a more recent patch which fixes some errors I've encountered during testing. I think you should experiment with that one.

My real name: Gábor Szuromi
E-mail address: kukkerman at gmail dot com

You can reach me on google chat too with the address above.

Cheers,

Gabe

comment:58 Changed 8 years ago by kukkerman@…

(In 2d2efd5f9499aeb508a426b9b7c916a9ac7a3f99):
Initial support for direct connections. Preliminary patch from ticket #247 by Gábor Szuromi. Still needs lots of testing and fixes.

References #247.

comment:59 Changed 8 years ago by qulogic@…

(In f018adec86242720ca1a9930f5c50a409428281f):
Save remote nonce, and verify we get the same data when initiating the direct connection. Refs #247.

comment:60 Changed 8 years ago by qulogic@…

(In 56ce815eeb3b4a0939cbe3c2b48194e34c5b63e2):
Support old-style Nonce, which should let us use direct connections to aMSN (or msn-pecan?)

Refs #247.

comment:61 Changed 8 years ago by qulogic@…

(In acb27e450d19e80bc6f9962b22dae7644b73ccd7):
I think this finally works with both aMSN and the official client, for receiving and sending, and with a couple possibilities for which one is the listening client.

Refs #247.

comment:62 Changed 8 years ago by rekkanoryo

  • Milestone changed from Patches Needing Review to 2.7.1
  • Resolution set to fixed
  • Status changed from new to closed

This is going to be included in 2.7.1.

comment:63 Changed 7 years ago by markuznw

Can't really get it to work guys. Using pidgin 2.7.1 on windows every time i try to receive a file transfer from a wlm user it still use the old server-based system. As i can see from debug log it kinda fails the "nonce check" on file and switch back to sb transfer.

I've tried everything... stun server, turn server, open ports on router manually but nothing works.

Here's the debug log http://pastebin.com/zaVUiRLF

comment:64 Changed 7 years ago by morfeasrev

Same here on ubuntu. For now I have rested it only on pidgin to pidgin transfers.

comment:65 Changed 7 years ago by QuLogic

Please do not comment on closed bugs. Open a new ticket if you are having issues.

Note: See TracTickets for help on using tickets.
All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!