Feature Documentation of the pHoeniX Mod
[Upload and Download
Stop Reason]
[OwnCredits]
[ICS: Inteligent
Chunk Selection]
[Reask Sources After
IP Change]
[Close backdoor in
ListenSocket]
[Spread Request]
[Unnecessay Protocol
Overload]
[SNAFU v3]
[Sort servers by linear priority]
[ZZ Downloadmanager
by linear priority]
[Delay start-up to
avoid busy sever message]
[New Bandwidth Control] - Author: Maella/TPT
Here is one of the most important parts of this mod. A new
hybrid bandwidth control. Why hybrid? The heart of the code is from Maella, but
we have adapted it to ZZ code, one thread for packets and other thread for USS.
This is the unique mod with USS and NAFC at the same time! And there is more...
Some pawcio features were adapted in order to work
with this code: Minimize upload slots and Cumulate bandwidth (focus slot).
An extensive explanation for each feature:
> Minimize upload slots:
If this option is selected eMule will open fewer slots than original if that’s
possible (if fewer users can take more bandwidth). It means that the chunks
will arrive faster for users.
> Cumulate bandwidth for upload
slots: If this option is not selected eMule tries to upload to all users
on upload queue with the same speed. Selecting this option is causing that eMule
always uploads to one user (Priority client - no matter whether he has slow or
fast connection) and then give the remaining bandwidth to the fastest users
(faster spreading of chunks). The priority client is always the one who was
first in the upload queue (stayed the longest), thanks to this every client
("fast", "slow") will be able to get data.
> MTU: Maximum Transmission
Unit, this is the max IP datagram size you can send across a network. If you
set it higher... you can get frame fragmentation. If you set itvery low... you´ll have to send
more frames so...more overhead (less efficient)
> Send Socket buffer size:
You can configure the buffer size where the stored data is located before you send
it to the network.
> Manage Conections:
If this option is selected and you have too high values of "Max
connections" and "Max connections per 5 sec for your connection, they
will be adjusted automatically when needed.
Note: Since version 1.10,
we have changed the code and adapted it to official code.
> New Upload Slot Sharping: If you enable it, eMule will try to full the
upload bandwidth of your connection but it may open many slots to achieve this.
Note: Don’t use it with
minimize slots
> Network adapter Feedback
Control: What is NAFC? Here is a statement of the big Maella about this
dynamic upload system:
Introduction
All applications that need to regulate their upload
bandwidth face the same problems. When you ask the operating system (OS) to
send data to a remote client, three different things can happen:
- The sending could proceed immediately.
- The sending could be delayed by the OS (e.g. remote
client not ready, limit of the capacity of the network already reached).
- The sending could be never proceeded by the OS (e.g.
connection with the remote client is lost).
Another problem is that a part of the traffic on the
network is generated by the protocol itself. So typically when data are
received from a remote client, the OS must send some acknowledge (ACK) packets
to the remote side to validate the transfer. These ACK will increase the
overall traffic as well. The protocol creates an overhead that an application
can not fully control.
And finally, other applications can generate traffic for
their own purposes (e.g. ftp, browser).
In summary: when an application attempts to regulate its
traffic, it knows what it's trying to send, but it doesn't know exactly when it
is sent and what is sent.
Ideal Solution:
In the case of eMule, the ideal solution would be to
know in real time the current level of the traffic though the modem (e.g. K56,
ADSL, etc.). So if an application was aware of it, it would be a piece of cake
to regulate the bandwidth. Keep in mind that the goal is to use all the time
100% of the capacity of the modem. Nothing more, nothing less!
Unfortunately, there is no easy way to retrieve this
information from the modem.
Current solutions:
There are different approaches to solve the above
problem. Here it a list with some of them:
1. Under use the bandwidth to insure having enough rooms
for the protocol overhead (e.g. the official eMule).
Disadvantage:
-All bandwidth is not used
2. Try to send periodically packets (ping) with the
purpose of measuring the reaction time of the modem. So if the reaction time
gets too high, it could indicate a beginning of saturation of the modem (e.g. ZZ
UploadSpeedSense).
Disadvantage:
-Add overhead to the traffic for the measure
-Limited reaction time > 1s
-Medium accuracy
3. Try to measure the reaction time of the remote
clients. (E.g. SUC).
Advantage:
-No overhead
Disadvantage:
-Limited reaction time >1s
-Medium accuracy
-Depends on the capacity of both the local and remote
modems.
4. Measure the traffic at the network adapter level
(Ethernet card) and not at the modem level. If all the traffic is only
exchanged with the modem, then the network adapter will have a 1 to 1 image the
modem's traffic => NAFC
Advantage:
-No overhead
-Reaction time is very fast <100 ms
-Very accurate
Disadvantage:
-Not available with all OS (e.g. win95)
-Might require administrator right (could be changed
somewhere in settings)
-Measure all the traffic sent or received by the local
computer on the network (e.g. traffic with the modem + traffic with other
computers on the local network)
5. Use the Layered Service Provider of windows....
Summary
NAFC is certainly the best solution, but only if the network adapter is only used to exchange data with the modem.
Maella
[Ip2Country] - Author: Superlexx/TPT
See the country flag and name of every client. This implementation
uses GeoIp database provided by Maxmind
(http://www.maxmind.com) to get IP countrys, so
please... update it here:
http://www.maxmind.com/download/geoip/database/
[Show comments] - Author: SLUGFILLER
* Added option to indicate which files you set comments for in
the Shared Files tab and in Transfers tab with icons.
* Received comments are now stored in a comment list for each
file, instead of being stored in a single comment per user. As a result, a user
can now send a comment for more than one file, and when the user disconnects
the comments remain.
* Received comments can be viewed in the Shared Files tab, and
are indicated with an icon.
* Comments and ratings for downloading files can be edited
directly from the Transfers tab.
* New protocol extension allows downloading users to send
comments to their sources, so users can now receive comments for files they
have complete.
[Optimizer] - Author: eMulePlus/TPT
Memcpy/Memset for FPU, MMX, MMX2 (Athlon, Duron), SSE (PIII/PIV)
[Modeless Dialogs] - Author: SLUGFILLER
* Multiple dialogs in eMule are now modeless, meaning you can
open a dialog, and continue working with eMule behind the dialog with the
dialog still open, instead of having to first close the dialog, then work with eMule.
* The client details dialog is modeless. You can open one
dialog per client. Trying to open the client details twice for the same client
will bring the previously opened dialog to the front.
* All three file details dialogs, for downloads, search
results, and shared files, are modeless. You can open one dialog per file.
Trying to open the file details twice for the same file will bring the
previously opened dialog to the front. If a file is removed, its dialog will
automatically close.
* The preferences dialog is now modeless. Clicking on
preferences while the preferences dialog is already opened will bring it to the
front.
* The dialog for browsing the shared files as other users
would see them is modeless. Trying to re-open it while it's already open will
bring it to the front.
[Webcache] - Author: Yonatan\Superlexx\JP
From Webcache Mod, this feature allows
eMule to use the http-proxy of the ISP to cache file parts, which can be
downloaded by several users with full speed from the proxy.
Major advantages:
+ Much higher download speeds.
+ Some/most ISPs do NOT count traffic from their proxy server
for the monthly limit!!
+ Less waste of upstream bandwidth.
+ Less waste of traffic for your ISP and the internet as a
whole.
+ Less negative influence from Leechers.
+ Smaller queues (less waiting).
+ Principally better, because wasting is... well... a waste.
+ It's an add-on: eMule remains backwards compatible and only
uses http file transfers when it chooses to do so.
More information: http://ispcachingforeMule.de.vu/
[Upload and Download Stop Reason] - Author: Maella/TPT
Full description of upload and download stop reasons, added to
statistics, ...
[ViewSharedFiles] - Author: ItsOnlyMe
* When browsing another user's shared files and directories,
they are shown in a directory in the client details dialog.
* File lists of shared directories are only requested from the
other user when you try to view their contents, rather than all directories
being requested right away.
* Results from shared files requests are cached, so that the
same directory or the list of directories aren't
requested twice from the same user. They can, however, be requested again by
right clicking on the directory you wish request again, or on the root if you
wish to request the list of directories again, and then clicking on
"Refresh".
* Option to browse own shared files as other users would see
them.
[QueueRank Diff] - Author: eMulePlus
You can see the change of your queue rank from the last reask
in download list.
In green: Gained positions
In red: Lost positions
[shareSubDir] - Author: SlugFiller
* When a directory is shared, all of its subdirectories are
shared as well.
* Only the root directory is saved in the .dat files, the
subdirectories are rescanned every time the shared files are reloaded or
refreshed. As a result, the dat file is smaller than one where all the
subdirectories are shared manually, and if a shared directory's subdirectories
change (renamed, created, deleted, etc), the change will be detected the next
time the shared files are refreshed.
[seeTheNeed] - Author: xrmb
xrmb patch
for seeing which chunks sources need from you in the sources status bar.
[SpreadBars] - Author: SlugFiller
* There is now a "progress bar" in the shared files
list showing how many times each part of a file has been uploaded.
* Uses black and blue colors, like the download progress bar.
Black means never uploaded, light blue means uploaded a little, dark blue means
uploaded a lot.
* These statistics are saved in the known.met
file, using a similar format to the saving of gaps in a part.met
file.
[VirtualDirs] - Author: ItsOnlyMe
* It's possible to change the directory structure other users
see the browsed files in by changing file paths to virtual directories, which
are sent to other users in place of the real file paths.
* There are 3 forms of virtual directory mappings: Per-file -
changing a file's path into a virtual one. Per-directory - changing the paths
of all files in the directory to a virtual one. Per-directory with
subdirectories - changing the paths of all files in the directory to a virtual
one, and recursively converting all subdirectories into virtual subdirectories
of the virtual directory. In case of multiple forms of mapping used on the same
file, the most accurate applies (file, then directory, then closest parent
directory).
* The virtual directories can be set through the mapping
manager in the preferences.
[Infinite Queue] - Author: SlugFiller
Removes the queue size limit and allows your queue to grow as
much as it needs to.
This feature attempts to balance the amount of time different
parts of each file are uploaded, by not revealing to other users parts that
have been uploaded a certain amount of times more than others, making them only
download the parts that have been uploaded less. It uses the data from the spreadbars to decide how many times each part was uploaded.
It ignores, of course, any parts that either you don't have, or that the other
user already has, so that at least one part that can be uploaded is always
revealed to the other user. You can set the amount of times a part has to be
uploaded more than others before it's hidden, or 0 to
disabled (Default: 5).
You can configure it per file in shared list.
[Selective Chunk sharing] - Author: SlugFiller
You can choose to make hide overshares
stricter by only revealing one chunk to each user, starting with the least
uploaded chunks, and considering the chunks that were already offered when
choosing the next. Hide overshares must not be disabled
for this to work (Off by default).
You can configure it per file in shared list.
[Multisort] - Author: SlugFiller
Multi-layer sorting. If you sort a
list by one column, then by another, the order of the sorting will be
remembered, and when the items change it will fit the same order of sorting
instead of just the last. Also, the sorting order is now saved in the
preferences, so it's remembered even if you restart eMule.
[DLsortFix] - Author: SlugFiller
Revamped multiple aspects of downloadlist sorting. Also, you can now sort sources
without sorting the downloads by holding the ctrl key
while clicking on a column.
[OwnCredits] - Author: VQB
You can now see your own UL/DL modifier in the client details
dialog, next to the client's UL/DL modifier (In brackets). Also, in the
download queue, sources that would see you in their upload queue with a credits
mark are now shown with a credits mark.
[SearchCatch] - Author: SlugFiller
Downloads can take sources from search results and browsed
user files.
[CacheUDPsearchResults] - Author: ItsOnlyMe
Servers which return a file as a search result get cached, and
are later on asked for sources for the file first if the file is downloaded.
Also, if a server returns as a search result a file already being downloaded,
than that server is asked for sources for the file.
[DoubleLucas] - Author: SlugFiller
Added checks to startup timer, so that if the controls aren't
yet initialized, even after the delay, it waits for another timer cycle until
they are before trying to initialize.
[reqFiles] - Author: ItsOnlyMe
You can right-click on a user in any list and select to view a
list of all the files the user is a source of in a dialog. Also, in the status
of A4AF sources you can see the file that they're asked for.
[clientDetails] - Author: ItsOnlyMe
Requested files, browsed shares and client details now appear
in one dialog with tabs.
[reqBlocksClipping] - Author: SlugFiller
Requested blocks are now clipped to chunk limits and maximal
allowed block size. This prevents any exploits regarding block requests, and
enables certain Hybrid versions to download from eMule where they previously
couldn't.
[showSharePermissions] - Author: xMule_MOD
You can now choose permissions for browsing shared files on a
per-file basis, rather than just for all files.
[Powershare] - Author: ZZ/Morph/Pawcio/TPT
Powershare was designed for
releasing files (extended version from Morph XT). If one file is being powershared it will be the only file that is being
uploaded. Like that a releaser of a new file doesn’t have to unshare all other files to achieve the same behaviour. PS is a powerful tool but it should be used
correctly to avoid problems. That’s why there are several modes for PS:
Disabled:
If PS is deactivaed by default it is
still possible to powershare some files in the Shared
Files section through the context menu.
Activated:
PS is activated by default.
Auto:
In this mode PS will decide itself if there are enough sources
around or if the file should be powershared.
Limited:
You can set a limit for PS. You can do this also in the Shared
Files section. If The Mod detects as much complete sources as you’ve entered as
limit then it will deactivate PS for that file.
Now also, it is disabled is the file is not completed.
[ICS: Intelligent Chunk Selection] - Author: enkeyDev
To avoid two or more users choose to download the same chunk,
ECS relies only on randomness: users choose randomly *hoping* to choose a
different chunk each; in ICS users exchange infos
about what chunk is being downloaded ATM, then a user can choose the
less-downloaded (priority: spread the file faster); in ICS the user preference
"first/last chunk" take importance only when there are NO rare chunks
(priority: spread the file). With ICS, the same situation is a release-mode
one, then you will choose the shortest-to-complete chunk that is not being
downloaded ATM by any other client. This increases the probability you and the
other clients would have downloaded different chunks and keep (globally) a
complete source for the file, though a couple of sources quit...
[Anti
HideOS] - Author: Netfinity
This feature analyzes which chunks are hidden by remote
clients and allows proper calculation for ICS and Webcache
feature
[Reask Sources After IP Change] - Author: Maella (idea
Xman)
Your ISP usually changes providers about every 24 hour, but
this depends on the type of service that you have. This feature will help to get
things going again by Reasking
your sources again right away for the files after you received a new IP.
[QuickStart] - Author: Tritant
Quickstart allows you to find a lot of sources in a short
amount of time. You could say that this feature is turning our beloved eMule
for a few minutes into a race horse.
You’ve already entered values for „Max Connections/5 sec and
for Max Connections in the preferences of the official eMule. All values that
you define for Quickstart will override the other settings at the startup of eMule
for a few seconds. You may enter other values for the Quickstart but they
should be higher than the values in the official eMule.
Quickstart will help you to find sources more quickly but it
achieves this in an aggressive way. That’s why this feature deactivates itself
after a few seconds after the startup.
Sometimes, a client can be dropped from upload list with a low
data amount uploaded by time. With this feature, this drop will be done by data
uploaded and not by time.
[New Tooltips] - Author: Rayita/MFCK/TPT
New improved tooltips in clients,
status bar, files...
Also, you can get more tooltips in
pHoeniX preferences that explain you the
features.
[CrashRpt Lib] - Author: TPT based on Maella
With this lib, you can contribute to mod debug. You have to
download the file: http://personal.telefonica.terra.es/web/pi.../depuracion.rar
Then, you have to extract the files in eMule folder and then,
run eMule.
If you have a crash, a new window should appear: CrashRpt has
encountered a problem and needs to close...
In this window, you can set an email to send the dump files
(by default our email, thephoenixteam@yahoo.es) and make a comment: the version
of your mod, what are you doing when the mod crashed...)
If you can’t send it automatically, you’ll get two files: eMule.xml
and eMule.dmp. You only have to send them to: thephoenixteam@yahoo.es.
By the way... thanks
[New Timer Management] - Author: Maella
The management of the main timer was rewritten. With this refactory, a better supervision of the program's exceptions
is possible. The application should not close any more by itself without
generating a dump file. This modification should help for the debugging.
[Close backdoor in ListenSocket] - Author: Maella
A client (Hybrid + MLDonkey) might ask for a file to gain but is
already downloading another one. When this is detected, the client will be put
back in the waiting list with a penalty.
[Spread Request] - Author: Maella (idea SlugFiller)
Try to spread the TCP session over the time to avoid some pick
in the level of simultaneous connections.
It adds a jitter of +-2 minutes to the default timing of
request.
[Unnecessary Protocol Overload] - Author: Maella
Reduce by up to 50% the number of TCP creations to refresh the
eDonkey download session. The ping signal is now
correctly used and the client takes advantage of existing TCP sessions to
perform all refresh operations.
[Auto HardLimit] - Author: Sivka/TPT
You can configure max. sources per file.
[XP Style Menus] - Author: TPT
New menus, with images and colors. In future versions, you’ll be
able to configure it more.
[New Messages Window] - Author: TPT
Two new things. We have cut the
friends list and put there an info place where you can find friend information:
mod, data uploaded,...
A new column in friend list to sort friends by state:
connected, not connected and client.
[SNAFU v3] - Author: cmgrr (eWombat mod)
Detects and bans known lechers.
Detects hash-thieves.
Checking usage of data-tags which are not defined in eDonkey/eMule.
Detection is based on analyzing clients
behavior.
[Winsock 2] - Author: cmgrr (eWombat mod)
Force use of winsock2.dll (Version 2) if available.
[indexPartFiles] - Author: SlugFiller
eMule now keeps index of all current downloads. If one of the
download files becomes corrupt, or is unexpectedly deleted, or doesn't match
the index, eMule offers to restore the download from the indexed backup. The
index is saved only when it's changed, to reduce chances of it becoming corrupt
On shared list tab, if you click the top-left button, you can
see a new list with downloaded files. Also detects already downloaded files.
[One queue per file] - Author: Maella (idea bloodymad)
This could be the best way to share all your files equally.
Also, this implementation has the possibility to reserve a slot for files that
are set to release priority.
[Save ed2k files to disc] - Author: TPT
In download and shared lists you have the option to save the ed2k-links
to disc. For this, a new folder named "Links" is
created in your eMule folder.
[Sort servers by linear priority] - Author: TPT
Now you can try to connect to a server by linear priority.
[ZZ Downloadmanager by linear priority] - Author: TPT
The ZZ Downloadmanager resumes the files by alphabetical
order... with this feature, you can control the resume
order by linear priority managed by yourself.
[Full friends improvements] - Author: TPT
This feature collects many changes. Now you can give a slot to
a friend in all lists and don’t need to move to the message window every time
you want to do it. The friend slot now is marked in the upload list by a red
background, and you can remove it directly in that list.
Note: We haven’t modified
the number of slots that can be given. Only one friend slot can be used, like
official.
When you minimize eMule a new mini-window is shown where you
can see a mini-graph of the speed and more information.
[Credits Selection] - Author: Lovelace/Pawcio
You can select the credits system you want to use. Four
options:
- None: No credits system is used
- Official: it makes use of the official credit system
- Pawcio:
- Range from 1.0 to 100.0
- Multiplier of 3 (instead of 2) ---- ratio = 3 *
downloaded / uploaded
- For new clients (downloaded and uploaded data less
than 1MB) ratio = 3.0 (instead of 1.0)
- If you have received more than 1MB from someone but
haven't given anything back user gets ratio = 10.0 * received in MB (but not
more than 100.0)
- Small bonus for clients that have given you many MB:
- if you get 100MB then user recieve ratio = 50.0 till you give back 108MB
- 50MB - ratio = 25.0 - 55MB
- 25MB - ratio = 12.0 - 28MB
- 9MB - ratio = 5.0 - 12MB
- Lovelace:
- Formula: downloadModifier
=100*((1-1/(1+exp((3*{MB uploaded to us}^2-{MB
downloaded from us}^2)/1000)))^6.6667)
- This credits system gives more credits to best uploaders.
[Fakecheck] - Author: Maella/Morph
You have two ways to check if your download is a fake.
> You can update the fakes.dat in
pHoeniX preferences and control if the files is a fake in search tab.
> Also, you can check if your file is a fake in download
list. This option opens a new browser window to search for this fake.
[Categories Improvements] - Author: Khaos
Linear priority, enhanced categories, category-selection
dialog... many improvements to make your eMule life easier.
Configure it in: pHoeniX RelOad
[Copy BBcode elinks] - Author: Announ
You can copy the ed2klink with BBcode tags to be used in a
forum. Since 0.44b version, this option is moved to the ed2k-link dialog.
[New Transfers Window Style] - Author: TBH
New download clients list to see those clients who are
uploading to you.
New buttons in transfers tab to change between lists.
[Delay start-up to avoid busy sever message] - Author: TPT
You can run eMule with a delay to avoid this message error.
If you have checked "Prompt on exit" in
preferences... when you close eMule, it goes in grey scale, like windows XP
shutdown.
Sometimes your eMule can corrupt your part, met, ... files.
Then...you are very angry! With this feature you can do a Backup and prevent
these situations. Also, you can do an auto backup every time you shutdown eMule.
[SaveLoad Sources] - Author: enkeyDEV
Adjustable Load and Save Sources. This will save 20 of the best
sources including Source Exchange, to a subfolder in your temp directory under eMule
called Saved Sources. Each file you are downloading will have a file in there.
Also these files can read in a text editor such as notepad. There will be an
ed2k-link in there incase you loose a download to use. This will help the next
time that you start eMule this will help you get your
downloads started faster again by loading the saved sources.
Note: This feature has been
changed from original feature to make it conform to eMule-project rules. No
manual save and load. Sources aren’t saved for a long time.
[Select process priority] - Author: Rayita
In preferences you can give a priority to eMule process. This
will have effect when you run eMule again.
Note: In windows 9x you
will only have 3 priorities, in Win XP you’ll have 5
priorities.
This option can make your system unstable.
New events added to notifier and the best... support for
skins.
Since pHoeniX 1.9 with the binaries we include a pHoeniX skin
for pHoeniX fans.
[UPnP NAT Support] - Author: MoNKi
The UPnP opens automatically the router ports or sets the
shared internet connection to make eMule run properly.
But you must open firewall ports, if not... this feature doesn’t
work.
This feature only works with UPnP routers and Win XP shared
internet connection, but you must enable the UPnP support.
[Invisible Mode] - Author: MoNKi
When you minimize eMule, you get an eMule icon in tray. With
this feature, you can hide this icon, but eMule continues running (bye bye boss).
- And more things...
Maella -AntiCrash/AntiFake handling- (Vorlost/Mortillo)
Maella -Extended clean-up II-
Maella -Defeat 0-filled Part Senders
Maella -Overwrite Already Downloaded Parts and Chunks
Maella -Overhead compensation (pseudo full download rate
control)
Maella small latency
Moonlight: Global shutdown event to wake up threads.
Elandal: multipleInstance
Notify message in tray when a new message is received...TPT
Maella [FAF] -Allow Bandwidth Settings in <1KB Incremements
Monki Transparency to show toolbar properly in Win 2000.
Lateral preferences banner [TPT]
Maella -Catch incoming packets exception
Md5 optimization by e+
Anticorruption handling
Monki high contrast support