SMT

Member
  • Content count

    70
  • Joined

  • Last visited

Posts posted by SMT


  1. Now count 52 059 * 20 = 1041180. So filelist will be larger about 1 MB. Download speed was 9.36 kB/s. So it will take 109 seconds to download this additional data.

    His filelist has 1.53 MB. It takes about 167 seconds to download

    you "forget" bzip2 compression ))

    every file have 74 bytes minimum (filesize=0, filename with single char), 100 chars typical.

    so, his filelist would be 52 059 * 100 = 5 205 900

    with timestamps: 52 059 * 120 = 6 247 080, just 17% increase

    but timestamps will be similar to each other and much more compressible, than TTH. so really it will be less overhead than 17%


  2. Let's try another position: TPC/IP frame contains the origin mac or NAT ID. Could you do the limiter "one segment^file at a time from one unique host" without any linking with nicks or IPs.

    there is no way to discover peer's MAC unless he is in the same ethernet segment with you


  3. What is the problem with the code as it is? I wasn't aware of a bug, but i'm always glad of a fix, but what am I fixing?

    peer can't send search result when working through socks5 proxy


  4. 		if(SETTING(OUTGOING_CONNECTIONS) == SettingsManager::OUTGOING_SOCKS5 && proxy) {
    
    				if(udpServer.empty() || udpPort == 0) {
    
    						throw SocketException(STRING(SOCKS_SETUP_ERROR));
    
    				}
    
    
    				serv_addr.sin_port = htons(udpPort);
    
    				serv_addr.sin_family = AF_INET;
    
    				serv_addr.sin_addr.s_addr = inet_addr(udpServer.c_str());
    
    
    				string s = BOOLSETTING(SOCKS_RESOLVE) ? resolve(ip) : ip;
    
    
    				vector<uint8_t> connStr;
    
    
    				connStr.push_back(0);		   // Reserved
    
    				connStr.push_back(0);		   // Reserved
    
    				connStr.push_back(0);		   // Fragment number, always 0 in our case...
    
    
    				if(BOOLSETTING(SOCKS_RESOLVE)) {
    
    						connStr.push_back(3);
    
    						connStr.push_back((uint8_t)s.size());
    
    						connStr.insert(connStr.end(), aAddr.begin(), aAddr.end());
    
    				} else {
    replace it to
    		if(SETTING(OUTGOING_CONNECTIONS) == SettingsManager::OUTGOING_SOCKS5 && proxy) {
    
    				if(udpServer.empty() || udpPort == 0) {
    
    						throw SocketException(STRING(SOCKS_SETUP_ERROR));
    
    				}
    
    
    				serv_addr.sin_port = htons(udpPort);
    
    				serv_addr.sin_family = AF_INET;
    
    				serv_addr.sin_addr.s_addr = inet_addr(udpServer.c_str());
    
    
    				// string s = BOOLSETTING(SOCKS_RESOLVE) ? resolve(ip) : ip;
    
    
    				vector<uint8_t> connStr;
    
    
    				connStr.push_back(0);		   // Reserved
    
    				connStr.push_back(0);		   // Reserved
    
    				connStr.push_back(0);		   // Fragment number, always 0 in our case...
    
    
    				if(BOOLSETTING(SOCKS_RESOLVE)) {
    
    						connStr.push_back(3);
    
    						connStr.push_back((uint8_t)aAddr.size());
    
    						connStr.insert(connStr.end(), aAddr.begin(), aAddr.end());
    
    				} else {


  5. no, it's not... if two different files have same TTH, they have different size :)

    back to school, please.

    if things will be so easy, there can be possible 'super-archiver', that compress *ANY* file (regardless of its size) into pair size+TTH.

    and there will be a way to restore, because no another file with given size can't have same TTH, so we can restore exact hashed file

    do you realize, that it's impossible to lossless pack DVD-image (or whatever) into 32bytes (24tth+8size)? =)


  6. FAR Manager - files handling, editing sources

    Visual C++ - compiler

    NuMega SoftIce - hacking

    IDA PRO - reversing

    Mapple - all math in one place, helps programming

    Araxis merge - tracking revisions of open-source projects (thanks PPA for hint)

    Maxthon - www

    Download Master - http/ftp downloads

    greylink - dc++ (features i can only dream. unfortunately, not open-src)

    The BAT - mail

    Miranda - icq

    winamp - music (like this for plånty plugins for exotic formats, including chiptunes and synthesizers tracks)

    GOM Player - video

    ffdshow, haali splitter - codecs

    Nero - DVD Burning

    ACDSee 2.4 - image viewer (very fast and lightweight, exe 240kb and that's all)

    Paint Shop Pro 4.12 - old and lightweight version of image editor

    DJVU Reader

    Daemon Tools - gaming


  7. yes, hub in TransferView is just a guess from last ConnectToMe, but there is one thing... if user A tries to connect, then user B with same nick tries to connect and this user B connects faster, the user A will be dropped and hub of B will be displayed as hub of A. It¨s just current implementation of NMDC protocol.

    not big problem: user waits one minute before connections, but item in connection queue waits 1-2 secs (socket connect - socket accept)

    with other unique things (IP, Nick) error probability is very low. its acceptable that second user in this rare case gots 'no slots' until 1st user completes his donwload


  8. yes, you see share size in userlist, but you can't get share size of user who is connecting to you, just because NMDC doesn't have any user identification.

    Imagine this:

    User A - shares 2 GB

    User B - shares 3 GB

    (both have same nick, but are in different hubs)

    now user A is connecting to you, but it gets share size of user B

    then user B is conencting to you and it again gets share size of user B, but connection to this user will be dropped

    why i see "hub" in Trasnfer List, is it fake? user connection (afaik) initiates via hub commands "$ConnectToMe" and "$RevConnectToMe", so client knows nearest incoming connections came from