ZZUL TRA TL Changelog

The changelog of executable versions of ZZUL tra tl

/////////////////////////////////////////////////////////////////////////////////////
MEDIUM CHANGE
/////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////
//0.6f

//pier4r - noReaksAndFastXSsaveBetweenSessions -
  //update management of fastXS and asks data

//pier4r - addGenericFunctions -

/////////////////////////////////////////////////////////////////////////////////////
//0.6e

// pier4r - UploadSpeedSense changes -
  //instead of count failed ping in UploadSpeedSense
  //fast conceptual fix

/////////////////////////////////////////////////////////////////////////////////////
//0.6d

// pier4r - 1:3 ratio max -
  //if the upload speed is fixed to UNLIMITED the code refix it to downloadGraphMax*0.8f and this is wrong.

// pier4r - show timed avg upload -

// pier4r - show timed avg download -

// pier4r - count failed ping in UploadSpeedSense -

// pier4r - GENERAL MODIFICATIONS -

/////////////////////////////////////////////////////////////////////////////////////
//0.6c (semantic fixes)

// pier4r - PunishmentForClientsThatRequestMoreThanRatio1:3 -
  //changed the reward by "known for long time" and fixed the addition to cur_score directly

// pier4r - transferRatio -

// pier4r - limitCAPunishmentForTradingClients -

/////////////////////////////////////////////////////////////////////////////////////
//0.6b fix
// pier4r - sortPSclientsForScoreInScoreColumn -
  //break code is bad written

//0.6b

// pier4r - show time since first met -
  //found a bug in clientanalyzer stats?? No, not a bug, is my low skill :/

// pier4r - PayBackFirst -
  //report of real PBF status
  //PBF in chunks not megs

//pier4r - noLengthyUploadsFixForLowIDs - 
  //If there is a lowID with PBF (Strincly PBF, not powershare) then if this is removed from upload queue
  //after 3 chunks it should wait a lot for next successful callback. Then we avoid this (and this is the reason of only PBF an not powershared)
  //leaving the lowid & PBF client in the upload queue as much as it want.

// pier4r - UPSlotsBalancedLowIdHighId -
  //balanced with byte transfer and not only for the number of slot.

// pier4r.comments -

// pier4r - PunishmentForClientsThatRequestMoreThanRatio1:3 -
  //avoid to ban clients that download a lot.

// updated to ZZUL TRA 2.5 codebase

// pier4r - GENERAL MODIFICATIONS -

// pier4r - allow extra client (over softlimit) on queue -
  //no needs to consider some stats

// pier4r - CABanForBadClientsForLongTime - 
  //fixed: about ban for "keeping lowest score", assert that after a long time since last effective score 
  //calculation the "keep" flag is cleaned.

// pier4r - Last Seen Complete fix by fox88 -

// pier4r - SLS values change -

// pier4r - defaultPrefs -

// pier4r - Mod name -

/////////////////////////////////////////////////////////////////////////////////////
//0.6a
(except for fix, no more changes on 0.6a)

// pier4r - SortRatingUsingAlsoCAvalues -

// pier4r - CABanForBadClientsForLongTime -
  clients that are bad for long time (2h?) maybe is not so useful for the network, so ban them to avoid resource consumption. Session only for the moment.

// pier4r - noReaksAndFastXSsaveBetweenSessions -
  i noticed that reask, averageReask time, and fastXS are not saved with time in antileech file. So a client that do bad things during only a session long time ago, will be seen bad for 
  a lot of future sessions, and that is bad. These parameter should expired after a while, for example after 5-10days else is not so "heuristic". Since i'm not so skilled
  to modify all things (my fault obviously) like data structure, the only safe modification that i can do is: analysis is only session based. If the session is too short, 
  then the reask & fastXS are negligible

// pier4r - PunishmentForClientsThatRequestMoreThanRatio1:3 -
  some fix

// pier4r - show2digitsCAinClientDialog -

// pier4r- OneQueuePerFileSimulation -
  less calls to theStats.starttime, because this time can be updated on new request that are much lesser than client's score calculation

// pier4r - 1:3 ratio adapting2AverageUpload
  the the wizard 1:3 ratio or improve your ratio, because wizard ratio is more flexible. For example imagine a scenario with a limited upload capacity, caused by qos.
  The upload is 40 while qos allow max 20. When emule hit the 1:3 ratio, the client can nonetheless use a bandwidth of 3*maxupload = 3*40 that is different to 3*20.
  So it's better to use, for example, an average (e.g: the last 10 minutes average) instead of a fixed value. So check the wizard code in ZZUL TRA 2.3 and try to improve
  your dynamic ratio.
  Ok i can use statsAverageMinutes in Preferences.cpp (the average on graph) and then CStatistics::GetAvgDownloadRate in the case "default". Since the statsAverageMinutes is
  not less than 5 minutes, is pretty good.
  PS: re-use the already done code is a fantastic thing.

// pier4r - noLengthyUploads -

// pier4r - GENERAL MODIFICATIONS -

// pier4r - slowDownSaveProcess -

/////////////////////////////////////////////////////////////////////////////////////
MEDIUM CHANGE
/////////////////////////////////////////////////////////////////////////////////////
//0.5b

merge with fix in ZZUL TRA 2.3

// pier4r - adapt ZZUL-TRA :: SessionRatio 2 pier4r - 1:3 ratio max -

// pier4r - show2digitsCAinUploadQueue -
  // see CQueueListCtrl::GetItemDisplayText

// pier4r - sortPSclientsForScoreInScoreColumn -

// pier4r - sortTotalUpDownColumnAlsoForUploadedData -

// pier4r - GENERAL MODIFICATIONS -

///////////////////////////////////MINOR CHANGE////////////////////////////////////////////////
//0.5a

merge with emule 0.50a ZZUL TRA 2.2 code.

// pier4r - 1:3 ratio max - 
  //maybe it don't works really well with wizard modification, i try
  //remove some // ZZUL-TRA :: SessionRatio :: code.
// pier4r - dynamic 1:3 ratio -

// pier4r - payBackFirstLimitNotSoLow

// pier4r - reinsertEvalXS in CA

// pier4r - XS log only if LogAnalyzerISEnabled -

// pier4r - CA only punitive score -

// pier4r - return AT_MAXSCORE

// pier4r - Mod name - start

// pier4r - tradingAllowed -

// pier4r - noPowershare4BadCAclients -

// pier4r - noPSforNotIdentifiedUsers -

// pier4r - PunishmentForClientsThatRequestMoreThanRatio1:3 -

// pier4r - noPBF4TooBadCAclients

// pier4r - NotSoMuchUpload -

// pier4r - OneQueuePerFileSimulation - 

// pier4r - UPSlotsBalancedLowIdHighId -

// pier4r - CAmodifyOneQueuePerFileScore -

// pier4r - GENERAL MODIFICATIONS -

// pier4r - noHighPriorityCheck

// pier4r - PBF NOTES -

// pier4r - PBF check modifications -

// pier4r - pP: SUIBanInfo adapted -

// pier4r.comments

/////////////////////////////////////////////////////////////////////////////////////
MEDIUM CHANGE
/////////////////////////////////////////////////////////////////////////////////////
//0.4
Plan: add suiban from katana 2.11 and slotcontrol from ZZUL TRA 2.1 , because i don't want to merge with ZZUL TRA 2.1 due to antiHideOS and hideOS contradiction.
So now this project need more skill and patience to add single features from other mods and new ZZUL TRA versions. Obviously i will do this only 
if i think that a feature is woth to add (worth is related, unfortunately, also with my coding skills).

Another thing. Thanks to Diff tools i see that SOTN is disabled in ZZUL-TRA 2.0 , better! I don't like hOS, but, with ICS there is no need also for SOTN.
Update: no, maybe previous SOTN by Wizard and taz is active.

Update: for now it build correctly and execute, anyway slotcontrol don't work well, so you must recheck all changes about slotcontrol between ZZUL 2.0 and 2.1.
Update 2: maybe the problem was a suiBan check, called too often.

Note on // pier4r - ZZUL-TRA (v2.1) :: SlotControl - ; it replace // ZZUL-TRA :: NoSlotfocus :: and previous // ZZUL-TRA :: SlotControl :: and 
// ZZUL-TRA :: ForceUploadSlot ::

Note on // pier4r - pP: SUIBanInfo adapted - : 
  - see CUpDownClient::SendBlockData comments & CUpDownClient::SUIBanInfo(); 
  - Other important comments: suiban works completely only if the data about the clients is saved, in this version the data about the clients is session only, 
  so is not so accurate on long term. I should import the anti-leech feature of katana (of course importing only suiban support method and not other checks 
  that are a business of CA) or, since i should raise my C++, i can extend a bit the CA (with a plugin code well designed) to emulate the suiban idea. 
  (i prefer the second way: take good ideas and adapt these with your hands without much cut and paste). ; 
  - one thought: check if suiban works on standard statistics method, like "getQueueSessionPayLoadUp" to gather its data. If yes, so also CA and clientcredits works on the same statistics, 
  so recheck the semantics of the method, if it does really "trivial" checks (compare data gathered by standard methods), then it's quite useless and you can left it 
  only on "transfer complete"; else you should improve it.
  - The semantic of the method show me how much is important the data counted by GetQueueSessionPayloadUp, while in 0.2a & 0.2c i would want count only
  the non compressed data by GetQueueSessionUp. The remote client can cheat with the first data!

Others files found by winDiff that i don't note (in case of revision i will note), do a diff with previous TL version to see all the changes.

StdFx.h
//erasing // ZZUL-TRA :: NoSlotfocus :: & // ZZUL-TRA :: ForceUploadSlot ::

MenuCmds.h
//erasing // ZZUL-TRA :: NoSlotfocus :: & // ZZUL-TRA :: ForceUploadSlot ::

UploadQueue.cpp
//erasing // ZZUL-TRA :: NoSlotfocus :: & // ZZUL-TRA :: ForceUploadSlot ::

UploadListCtrl.cpp
// pier4r - ZZUL-TRA (v2.1) :: SlotControl -
 //erasing // ZZUL-TRA :: NoSlotfocus :: & // ZZUL-TRA :: ForceUploadSlot ::

UploadBandwidthThrottler.cpp
// pier4r - ZZUL-TRA (v2.1) :: SlotControl -
  //erasing // ZZUL-TRA :: NoSlotfocus :: & // ZZUL-TRA :: ForceUploadSlot ::

Resources.h
// pier4r - ZZUL-TRA (v2.1) :: SlotControl -

Preferences.cpp & Preferences.h
// pier4r - ZZUL-TRA (v2.1) :: SlotControl -
  //erasing // ZZUL-TRA :: NoSlotfocus :: & // ZZUL-TRA :: ForceUploadSlot ::

PPgConnection.cpp & PPgConnection.h
// pier4r - ZZUL-TRA (v2.1) :: SlotControl -
  //erasing // ZZUL-TRA :: NoSlotfocus :: & // ZZUL-TRA :: ForceUploadSlot ::

Opcodes.h
// pier4r - ZZUL-TRA (v2.1) :: SlotControl -
  //erasing // ZZUL-TRA :: NoSlotfocus :: & // ZZUL-TRA :: ForceUploadSlot ::

BaseClient.cpp
// pier4r - pP: SUIBanInfo adapted -
  //to import the accurate part it needs the complete antileech section.
//erasing // ZZUL-TRA :: NoSlotfocus :: & // ZZUL-TRA :: ForceUploadSlot ::

UploadClient.cpp & UploadClient.h
// pier4r - pP: SUIBanInfo adapted -
//erasing // ZZUL-TRA :: NoSlotfocus :: & // ZZUL-TRA :: ForceUploadSlot ::
// pier4r - GENERAL MODIFICATIONS - 

/////////////////////////////////////////////////////////////////////////////////////
MEDIUM CHANGE
/////////////////////////////////////////////////////////////////////////////////////

Chances are that the IDE (not the compiler!) has not been installed properly, so i get errors in 0.2a, 0.2c and others strange behaviour (no intellisense & so on)
So, BEFORE, do something, reinstall VS2k3 properly. Anyway i guess that is 70% my fault (though i don't see any link between my modifications and kademlia code) and 30% environment fault.

Last change for 0.3 is 0.3c that has all wanted modifications.

///////////////////////////////////MINOR CHANGE////////////////////////////////////////////////
//0.3c
// i will exploit CStatistics because... it is the class for statistics :)
// naming for Uploaded data to a client or downloaded data from a client is really anti-intuitive

ClientAnalyzer.cpp & ClientAnalyzer.h
// pier4r - PunishmentForClientsThatRequestMoreThanRatio1:3 -
  // "adapted" from suiban of pP - katana mod (suiban is more accurate but is also harsher). UPDATE: also CA has a sort of suiban

ClientCredits.cpp
// pier4r - PBF check modifications -
// pier4r - PBF NOTES -

UploadClient.cpp
// pier4r - UPSlotsBalancedLowIdHighId -
// pier4r - noPBF4TooBadCAclients - 
  //moved from CUpDownClient::GetPowerShared to CUpDownClient::GetSuperiorClientStates because CQueueListCtrl::DrawItem & CQueueListCtrl::GetItemDisplayText works
  //with the second method. 
// pier4r - noPowershare4BadCAclients
  //changed a bit due to "pier4r - PunishmentForClientsThatRequestMoreThanRatio1:3 - "
// pier4r - noPSforNotIdentifiedUsers -
  //powershare (not only PBF) only for correctly identified users, exploit "superior clients"; Update: maybe CA already take care of this in the score, i should
  //investigate more.; Update: AFAIK CA score doesn't count identification score.

ClientList.cpp & ClientList.h
// pier4r - UPSlotsBalancedLowIdHighId -

StatisticsDlg.cpp
// pier4r - UPSlotsBalancedLowIdHighId -

Statistics.h & Statistics.cpp
// pier4r - UPSlotsBalancedLowIdHighId -
  //give upload slots balanced between low id and high id. High id have higher priority so if there is more highIDs than lowIDs, no ratio is applied,
  //else we try to satisfy uploadSlots2LowID / uploadSlots2HighID.
  //Note: the lowIDClients amount can change, but, during runtime, it should be "quite" stable.

UploadQueue.cpp & UploadQueue.h
// pier4r - noHighPriorityCheck
  //because a PBF/PS client can wait a bit and emule can avoid a lot of instructions :) .
  //A note: The standby client, if there are many "powershared" clients, without the highPriorityCheck can stay in upload for a long time with the lowest speed.
  //Is not a great problem, sooner or later it finish his download or it disconnect (or can get an higher upload slot (with full speed) because the powershared clients are gone).
// pier4r - GENERAL MODIFICATIONS -
// pier4r - UPSlotsBalancedLowIdHighId -

///////////////////////////////////MINOR CHANGE////////////////////////////////////////////////
//0.3b
KnownFile.cpp & KnownFile.h
//pier4r- OneQueuePerFileSimulation -
  //based on a bloodymad idea http://forum.emule-project.net/index.php?showtopic=14132&view=findpost&p=121421
  //NOTES:
  // 1. there are powershared and not powershared clients, anyway we don't care, the time of last upload is given by a normal or powershared client
  // but not friends. Because either a powershared or a normal client can spread the file. A friends "maybe" not.
  // 2. Due by trickle slots or standby slots, we can't consider all uploads as good uploads for the file, so we wait until the client is removed from the upload queue
  // and it has got enough file size (for now: 1mb or the file size if this is smaller than 1mb).
  // 3. To respect the one queue per file score, there is no difference between client with powershare and different priority files.

UploadQueue.cpp & UploadQueue.h
  //pier4r- OneQueuePerFileSimulation - 
  //pier4r- NotSoMuchUpload -
    //else we see clients that download a lot of mbytes (is not fair for others)! The code is less "accurate" than similar code in 0.2a or 0.2c (see for example CUpDownClient::SendBlockData)
    //but maybe is more safe & effective (i added, almost in every place, where are comparisons between clients, a check on trasferred data. 
    //Instead i can do less check even if we loss the control on some cases)

UploadClient.cpp
  //pier4r- CAmodifyOneQueuePerFileScore -
  //pier4r- OneQueuePerFileSimulation -

Preferences.cpp
// pier4r - 1:3 ratio max -
  //based on new observations, emule can use 90% of the bandwidth not the 80%, so is (3*upload)/0.90 = 3.33 approx 3.34 * up

DownloadQueue.cpp
// pier4r - 1:3 ratio max -
  //based on new observations, emule can use 90% of the bandwidth not the 80%, so is (3*upload)/0.90 = 3.33 approx 3.34 * up

Modname.h 
// pier4r - Mod name -

///////////////////////////////////MINOR CHANGE////////////////////////////////////////////////
//0.3a
merge with ZZUL TRA 2.0. if libpng don't work is ok, because the lib is already built and linked.

UploadClient.cpp
  // pier4r - noPBF4TooBadCAclients

DownloadQueue.cpp
  // pier4r - dynamic 1:3 ratio see CPartFile::Process
    //dynamic ratio 1:3 based on current ratio. See CDownloadQueue::Process() when it call thePrefs.GetMaxDownloadInBytesPerSec(true)

Modname.h 
// pier4r - Mod name -

/////////////////////////////////////////////////////////////////////////////////////
MEDIUM CHANGE
/////////////////////////////////////////////////////////////////////////////////////
//0.2
//Initial method comment changes where the code don't reflect the comments YOU CAN'T pass to 0.3 if left inchoerent comments! PARTALLY DONE.

RESULT: FAIL, i weren't able to add assignUploadSlotsAccordingRatioBetweenPriorities neither in 0.2a nor 0.2c (or better, i added this feature, but the .exe don't work). 
Then i will postpone this until i raise my C++ skills --> New branch: 0.3.

///////////////////////////////////MINOR CHANGE////////////////////////////////////////////////
//0.2c

BUGS: again Cindexed:clean crash, why on earth? So all my revert work is quite (not all, because now i have 0.2b) useless. Rage! (caused by my poor skill).

NOTE ABOUT CHANGEs
// pier4r - assignUploadSlotsAccordingRatioBetweenPriorities FROM 0.2a
  //i didn't change kademlia or other files, so i don't know why there are problems. Anyway i'm too noob actually in C++
  //so i will inhibit some advanced management of upload slots (done by ZZUL and others) to apply the feature.

UploadQueue.cpp
// pier4r - assignUploadSlotsAccordingRatioBetweenPriorities
// pier4r - noHighPriorityCheck (less calculation, anyway isn't so useful [do a lot of calculations!] , only at the start...)

UploadQueue.h
// pier4r - assignUploadSlotsAccordingRatioBetweenPriorities

UploadClient.cpp
// pier4r - schedulingAfterNormalChunks

Modname.h 
// pier4r - Mod name -

///////////////////////////////////MINOR CHANGE////////////////////////////////////////////////
//0.2b

Changed emule-vc71-all (libpng project link was broken)

ClientAnalizer.cpp
// pier4r - XS log only if LogAnalyzerISEnabled -
  //else the debugLog is full of text everS!

Preferences.cpp
// pier4r - 1:3 ratio max -
  //emule can exploit about the 80% of the download limit.  So maxdownload should be set to:
  //maxupload*(3/0.8) + 1 (approximation to ceiling)

SplashScreenEx.cpp
// pier4r - Mod name - 
  //thanks to morph4u http://forum.specialmods.eu/viewtopic.php?p=57508#p57508

Modname.h 
// pier4r - Mod name - start

///////////////////////////////////MINOR CHANGE////////////////////////////////////////////////
//0.2a ----------->>>>>So i abort this version and restart from 0.1
I don't know why emule crashes and CIndexed:clean raise exceptions... i didn't touch anything in kademlia!

//OT notes
//I'm happy when i found my wishes already coded (and understandable), as "easy log for -scheduling for removal-" :)

UploadClient.cpp
// pier4r - assignUploadSlotsAccordingRatioBetweenPriorities

ClientAnalizer.cpp
// pier4r - XS log only if LogAnalyzerISEnabled -
  //else the debugLog is full of text everS!

Opcodes.h
// pier4r - ZZUL TRA TL general -
// pier4r - UPLOAD datarate change -
  //there is a kad issue after i change the upload datarate in void CIndexed::Clean
  //AFAIK all my changes don't touch the kad algoritms, so i really don't know. Maybe the compiler has broken something?

UploadQueue.cpp
// pier4r - assignUploadSlotsAccordingRatioBetweenPriorities
// pier4r - improve readability and reuse of code -
  //void CUploadQueue::CheckForHighPrioClient()
    // added SEC2MS
    // take DWORD curTick directly from main process, less calls are better (where them don't make worse the readability of the code)
//pier4r - not so fast HighPriorityCheck -
//pier4r - not so fast Swap Clients from upload by highPriorityCheck -

UploadQueue.h
// pier4r - assignUploadSlotsAccordingRatioBetweenPriorities
  //I can't set the variables static...i'm too noob actually :S
  //solutions http://forums.devx.com/showthread.php?t=97293

Preferences.h
// pier4r - assignUploadSlotsAccordingRatioBetweenPriorities

Preferences.cpp
// pier4r - 1:3 ratio max -
  //emule can exploit about the 80% of the download limit.  So maxdownload should be set to:
  //maxupload*(3/0.8) + 1 (approximation to ceiling)

SplashScreenEx.cpp
// pier4r - Mod name - start
  //thanks to morph4u http://forum.specialmods.eu/viewtopic.php?p=57508#p57508

Modname.h 
// pier4r - Mod name - start

/////////////////////////////////////////////////////////////////////////////////////
MEDIUM CHANGE
/////////////////////////////////////////////////////////////////////////////////////
//0.1
Modname.h 
// pier4r - Mod name - start

ClientAnalizer.h
// pier4r - CA only punitive score
// pier4r - return AT_MAXSCORE
  //static methods: http://www.functionx.com/cpp/Lesson21.htm
  //const keyword at the end of the method: http://duramecho.com/ComputerInformation/WhyHowCppConst.html
    //const keyword can be mapped to static methods http://msdn.microsoft.com/en-us/library/475eh775%28v=vs.80%29.aspx
  //other warning and subsequent error for static functions http://msdn.microsoft.com/en-us/library/z85eyax0%28v=vs.80%29.aspx

UploadClient.cpp
// pier4r - tradingAllowed 
  //(torrent like (TL) )
// pier4r - noPowershare4BadCAclients
// pier4r - CA only punitive score

Preferences.cpp
// pier4r - payBackFirstLimitNotSoLow
  //(at least a third of a chunk)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License