          CHANGELOG FOR EMULE
        https://emule-project.net
        ========================


eMule 0.60b (community version)
-----------------------
- Dec. 12, 2020       -
-----------------------
.: Fixed: wrong tag written in CKeyEntry (thanks to Stulle)

-----------------------
- Dec. 08, 2020       -
-----------------------
.: Fixed: crash in CQuantizer (regression)

-----------------------
- Nov. 26, 2020       -
-----------------------
.: Fixed: memory leak in CSearchFile::StoreToFile (regression)

-----------------------
- Oct. 31, 2020       -
-----------------------
.: Fixed: incorrectly disabled preview menu item for downloads (reported by zappatore77)

-----------------------
- Oct. 28, 2020       -
-----------------------
.: Fixed: conversion of file names to UTF8 (regression, reported by wddddd)
.: Fixed: incorrect check for a media's empty tag name (reported by vfabgar)

-----------------------
- Oct. 17, 2020       -
-----------------------
.: Fixed: shared files auto priorities were stuck at Auto[Hi] (regression, reported by idefix44)
.: Changed: allow MediaInfo.dll 20.09

-----------------------
- Oct. 08, 2020       -
-----------------------
.: Fixed: sources could be asked for download with a delay (regression, reported by bovos)


eMule 0.60a (community version)
-----------------------
- Oct. 01, 2020       -
-----------------------
.: Fixed: GetErrorMessage should always retrieve system error text (regression, reported by Riso64Bit)

-----------------------
- Sep. 24, 2020       -
-----------------------
.: Fixed: finding subdirectories in directory tree (regression, reported by Soul--Reaver)

-----------------------
- Sep. 19, 2020       -
-----------------------
.: Fixed: MiniMule could be invisible because of taskbar's negative coordinates

-----------------------
- Sep. 05, 2020       -
-----------------------
.: Fixed: incorrectly disabled context menu item "Connect To" in server list (reported by VasiliyRus)

-----------------------
- Sep. 03, 2020       -
-----------------------
.: Fixed: rewind .zip to the beginning before scanning filled areas for the central directory

-----------------------
- Aug. 30, 2020       -
-----------------------
.: Fixed: incorrect (zero) download count on category tabs due to a bug in queue iterator (reported by SS1900)

-----------------------
- Aug. 29, 2020       -
-----------------------
.: Fixed: crash if rehashing an empty part file (reported by SS1900)

-----------------------
- Aug. 23, 2020       -
-----------------------
.: Fixed: order of categories in Search page was reversed (regression; reported by Noamk)

-----------------------
- Aug. 19, 2020       -
-----------------------
.: Fixed: regression in directory tree control
.: Fixed: memory leak in GetMimeType

-----------------------
- Aug. 16, 2020       -
-----------------------
.: Fixed: regression, display of client icons in client queue (reported by hooligan3000)
.: Fixed: memory leak in CCustomAutoComplete::RemoveSelectedItem
.: Added: force clearing of dialog items in search options ("syntax error" that should never happen)

-----------------------
- Aug. 02, 2020       -
-----------------------
.: Changed: cleaned up code in statistics

-----------------------
- Jul. 31, 2020       -
-----------------------
.: Changed: uniform upload and download data rate checks (as in Options->Connection)

-----------------------
- Jul. 30, 2020       -
-----------------------
.: Changed: Shared Files - replace access by index in lists and map with iterators
.: Changed: remove character array and GetLPCSTR from CIni

-----------------------
- Jul. 29, 2020       -
-----------------------
.: Changed: return CString from GetFileItemDisplayText and GetSourceItemDisplayText

-----------------------
- Jul. 27, 2020       -
-----------------------
.: Changed: IRC - processing of updated modes

-----------------------
- Jul. 25, 2020       -
-----------------------
.: Added: eMule can be closed from the taskbar when splash or about dialogs are on screen
.: Fixed: main window gets no input when splash or about dialogs are on screen
.: Fixed: exception in AICH hashing thread on very early program close

-----------------------
- Jul. 24, 2020       -
-----------------------
.: Fixed: scrolling list down could leave garbage below the bottom row (smooth scroll in comctl32)
.: Changed: replace FillRect with FillSolidRect

-----------------------
- Jul. 22, 2020       -
-----------------------
.: Changed: minimum upload for unlimited download is set to 20 kB/s
.: Changed: speed limits checking in Options->Connection

-----------------------
- Jul. 20, 2020       -
-----------------------
.: Fixed: Web Interface, sort in server list on server name (regression in eMule.tmpl)
.: Changed: Web Interface, replace bubble sort with quick sort
.: Changed: Web Interface, server sort for equal IPs additionally uses port numbers

-----------------------
- Jul. 15, 2020       -
-----------------------
.: Added: Import parts setting in Options->Extended (activates the option for the current session only!)

-----------------------
- Jul. 14, 2020       -
-----------------------
.: Fixed: editable listbox could select disabled items on getting focus
.: Fixed: return value of map.Lookup() was ignored - multiple cases

-----------------------
- Jul. 11, 2020       -
-----------------------
.: Added: HttpDownloadDlg can use HTTPS (server.met, nodes.dat, IP filter, language dlls)
.: Added: 7z extension and 7-zip files are known as archives
.: Fixed: a few minor bugs and regressions
.: Changed: updated links in .rc files

-----------------------
- Jun. 27, 2020       -
-----------------------
.: Fixed: copy & paste error in ShrinkToAvoidAlreadyRequested

-----------------------
- Jun. 24, 2020       -
-----------------------
.: Changed: spell checking has been applied to the code and comments
.: Changed: faster Levenshtein distance calculation
.: Changed: replace CStringA with CString in proxy settings

-----------------------
- Jun. 21, 2020       -
-----------------------
.: Changed: always keep gap list in CPartFile ordered
.: Changed: use lower priority for background threads to improve responsiveness

-----------------------
- Jun. 12, 2020       -
-----------------------
.: Added: SMTP server settings in Options->Notifications
.: Changed: IRC tries harder to keep input focus in the text entry field
.: Changed: remove MfcStaticBinaryCompatible.cpp (should never need it again)

-----------------------
- Jun. 01, 2020       -
-----------------------
.: Changed: remove ellipsis from Connection Wizard's caption

-----------------------
- May. 26, 2020       -
-----------------------
.: Added: PLAIN SMTP authentication for email notifications

-----------------------
- May. 25, 2020       -
-----------------------
.: Added: email notifications can use SSL/TLS or STARTTLS security and LOGIN SMTP authentication
.: Changed: replace ATL Server's regular expression matching with std::regex
.: Removed: ATL Server code (too old and buggy)

-----------------------
- May. 23, 2020       -
-----------------------
.: Changed: replace CBase64Coding with standard ATL routines

-----------------------
- May. 11, 2020       -
-----------------------
.: Changed: allow mediainfo.dll versions up to 20.03.*

-----------------------
- May. 03, 2020       -
-----------------------
.: Fixed: multiple false error messages in the Log when bootstrapping KAD (regression)
.: Fixed: wrong constant name in SharedFilesCtrl.cpp (but correct value)

-----------------------
- Apr. 22, 2020       -
-----------------------
.: Fixed: crash in exception handling while processing malformed hello packet (regression)

-----------------------
- Jan. 05, 2020       -
-----------------------
.: Fixed: several minor issues (static analysis)

-----------------------
- Dec. 24, 2019       -
-----------------------
.: Changed: remove compatibility code for searches stored in 0.49a
.: Changed: remove obsolete MSLU/unicows code support

-----------------------
- Dec. 18, 2019       -
-----------------------
.: Changed: always use asynchronous I/O; remove "OverlappedSockets" setting

-----------------------
- Nov. 04, 2019       -
-----------------------
.: Changed: remove more of Windows 95 compatibility code
.: Changed: make an OVERLAPPED structure a member of EMSocket class; rename variables

-----------------------
- Nov. 01, 2019       -
-----------------------
.: Fixed: crash when cancelling asynchronous I/O

-----------------------
- Oct. 24, 2019       -
-----------------------
.: Changed: all .rc files now use UTF-8

-----------------------
- Oct. 12, 2019       -
-----------------------
.: Changed: remove MuleToolBarCtrl::ForceRecalcLayout, no issues with comctrl32 now

-----------------------
- Sep. 15, 2019       -
-----------------------
.: Changed: allow mediainfo.dll versions up to 19.09.*


eMule 0.51d (community version)
-----------------------
- May. 12, 2019       -
-----------------------
.: Fixed: tags duplication when reloading data from .part.met in PartFileConvert

-----------------------
- May. 11, 2019       -
-----------------------
.: Fixed: regression in AddGap
.: Fixed: regression in stored searches loading
.: Changed: tweak numbers for low speeds in upload bandwidth throttler
.: Changed: remove old exception handling from socket code (thanks to Enig123 for the hint)

-----------------------
- Apr. 27, 2019       -
-----------------------
.: Fixed: Web Interface crash in search
.: Changed: allow mediainfo.dll versions up to 19.04.*

-----------------------
- Apr. 24, 2019       -
-----------------------
.: Fixed: target data rate calculations for 25 kB/s slots

-----------------------
- Apr. 14, 2019       -
-----------------------
.: Added: import parts into downloads
.: Changed: remove some old compatibility code for Windows 95/Windows NT (will be continued)

-----------------------
- Apr. 03, 2019       -
-----------------------
.: Fixed: network info dialog could display text as selected
.: Changed: SendPacket always deletes packet (except UDP packets)

-----------------------
- Mar. 29, 2019       -
-----------------------
.: Changed: refactor networking code; rename Socket.* files to more descriptive ServerConnect.*

-----------------------
- Mar. 24, 2019       -
-----------------------
.: Changed: replace all GetAsyncKeyState with GetKeyState

-----------------------
- Mar. 22, 2019       -
-----------------------
.: Fixed: getting our public IP from server response
.: Changed: try (only once!) to make an obfuscated server connection if port and flags data is absent

-----------------------
- Mar. 16, 2019       -
-----------------------
.: Fixed: global server search was broken and behaved like server method (regression)
.: Changed: refactored EncryptedDatagramSocket

-----------------------
- Mar. 04, 2019       -
-----------------------
.: Changed: all language resources converted to Unicode


eMule 0.51c (community version)
-----------------------
- Feb. 26, 2019       -
-----------------------
.: Fixed: KAD tag count was incorrect (regression; thanks to Enig123)

-----------------------
- Feb. 24, 2019       -
-----------------------
.: Fixed: send control data to disconnected network was giving 100% CPU load

-----------------------
- Feb. 20, 2019       -
-----------------------
.: Fixed: crash when loading emulecollections (regression)

-----------------------
- Feb. 12, 2019       -
-----------------------
.: Changed: replace XMessageBox with a simple ExitBox
.: Changed: replace CKadTagValueString with LPCWSTR in SetGuiName

-----------------------
- Feb. 08, 2019       -
-----------------------
.: Fixed: UPnP crash in Windows XP

-----------------------
- Feb. 03, 2019       -
-----------------------
.: Changed: consistent style of code formatting (more or less)

-----------------------
- Feb. 01, 2019       -
-----------------------
.: Changed: remove unused LittleEndian.* KAD files

-----------------------
- Jan. 12, 2019       -
-----------------------
.: Fixed: Web Interface regressions in search

-----------------------
- Jan. 09, 2019       -
-----------------------
.: Added: Web Server logs SHA-1 certificate fingerprint on start

-----------------------
- Jan. 04, 2019       -
-----------------------
.: Fixed: e-mail notifications were broken due to buggy ATL code
.: Fixed: regressions in Scheduler's options
.: Added: scheduler's action edit dialog shows the name of the value

-----------------------
- Jan. 01, 2019       -
-----------------------
.: Fixed: data in tabs at the bottom of Shared Files' page was updated too frequently

-----------------------
- Dec. 19, 2018       -
-----------------------
.: Changed: use Unicode instead of ANSI in ComboBox2 item data
.: Changed: allow mediainfo.dll versions up to 18.12.*
.: Fixed: 64-bit Sender's address should not be used for 32-bit dwSearchID.

-----------------------
- Dec. 09, 2018       -
-----------------------
.: Fixed: minor issues in Web Server templates

-----------------------
- Nov. 03, 2018       -
-----------------------
.: Added: drop KAD publish requests having unreachable buddy IPs (thanks to Enig123)

-----------------------
- Sep. 16, 2018       -
-----------------------
.: Fixed: bad text in taskbar notification pop-up (reported by Riso64Bit)

-----------------------
- Sep. 14, 2018       -
-----------------------
.: Changed: move application state checks from CemuleDlg to CemuleApp class

-----------------------
- Sep. 08, 2018       -
-----------------------
.: Fixed: crash when deleting a part file while it was being hashed
.: Added: cancel hashing when deleting a file, or when eMule was closing
.: Added: wait for a file operation to complete when deleting a part file

-----------------------
- Sep. 03, 2018       -
-----------------------
.: Fixed: tab headers in Details dialogs were not updated on language change
.: Added: middle click in Search results shows Details dialog


eMule 0.51b (community version)
-----------------------
- Aug. 26, 2018       -
-----------------------
.: Fixed: minor visual issues in Transfers and status bar (build 3)
.: Added: automatic check for new community versions should be working now (thanks to Some Support)

-----------------------
- Aug. 19, 2018       -
-----------------------
.: Fixed: minor visual issues in Search page (build 2)

-----------------------
- Aug. 12, 2018       -
-----------------------
.: Fixed: regression in TaskBarNotifier
.: Changed: keep uploading when max size or time were reached, but free slots were available

-----------------------
- Aug. 08, 2018       -
-----------------------
.: Added: create certificate for Web Interface HTTPS connections

-----------------------
- Aug. 02, 2018       -
-----------------------
.: Fixed: regressions in ClientList and SearchWndParams
.: Fixed: captcha generator was clipping rotated characters
.: Added: conditionally enable Send and Close buttons in Messages

-----------------------
- Jul. 25, 2018       -
-----------------------
.: Added: Web Interface search for collections

-----------------------
- Jul. 24, 2018       -
-----------------------
.: Fixed: crash in Add sources dialog; and a minor visual issue

-----------------------
- Jul. 23, 2018       -
-----------------------
.: Fixed: time interval between cleanups in CIndexed (regression)
.: Fixed: IRC channel tabs vertical resizing (topic window)
.: Fixed: for long list of IRC nicks only the last part would be displayed


eMule 0.51a (community version)
-----------------------
- Jul. 12, 2018       -
-----------------------
.: Changed: version check and online help will use HTTPS

-----------------------
- Jul. 09, 2018       -
-----------------------
.: Changed: Content-DB searches will use HTTPS

-----------------------
- Jun. 29, 2018       -
-----------------------
.: Fixed: Web Server link in network info dialog adjusted for HTTP/HTTPS

-----------------------
- Jun. 25, 2018       -
-----------------------
.: Fixed: regressions in DownloadListCtrl
.: Fixed: hide sources on download rename or name cleanup (issue reported by Enig123)

-----------------------
- Jun. 16, 2018       -
-----------------------
.: Changed: code simplification in several modules

-----------------------
- Jun. 11, 2018       -
-----------------------
.: Fixed: IRC socket could falsely log errors while waiting for data (thanks to Enig123)
.: Fixed: strange nested loop in graph module
.: Fixed: slow peers often timed out at the begining of upload session (thanks to Some Support for the idea)
.: Fixed: "Direct add with empty queue" peers could have hours of wait time

-----------------------
- Jun. 04, 2018       -
-----------------------
.: Fixed: order in start-up sequence
.: Changed: use uint32 for upload and download speed limits
.: Changed: using standard "kbit" instead of "kBit"

-----------------------
- May. 30, 2018       -
-----------------------
.: Fixed: possible memory leak in collections
.: Removed: MobileMule code

-----------------------
- May. 29, 2018       -
-----------------------
.: AsyncSocketEx code: fixed regressions, updated old OnLayerCallback methods

-----------------------
- May. 27, 2018       -
-----------------------
.: Added: mp4, mkv and ogg quick verification (thanks to Enig123)

-----------------------
- May. 23, 2018       -
-----------------------
.: Fixed: regression in Web Interface

-----------------------
- May. 12, 2018       -
-----------------------
.: Fixed: Shared Files page should always have a '+' symbol for "All Directories"
.: Changed: allow mediainfo.dll versions up to 18.05.*

-----------------------
- May. 06, 2018       -
-----------------------
.: Fixed: string type inconsistency in KAD tags (in non-Unicode builds only)

-----------------------
- Apr. 30, 2018       -
-----------------------
.: Changed: Web Server templates and HTML generation for better HTML standards compliance

-----------------------
- Mar. 29, 2018       -
-----------------------
.: Fixed: possible NULL pointer dereference in ProcessPreviewRequest

-----------------------
- Mar. 27, 2018       -
-----------------------
.: Changed: flush timers for each file in downloads get an additional random delays (up to 2 seconds)
.: Changed: allow mediainfo.dll versions up to 18.03.*

-----------------------
- Mar. 21, 2018       -
-----------------------
.: Fixed: file rename should update ED2K link in Details pages (reported by Riso64Bit)

-----------------------
- Mar. 11, 2018       -
-----------------------
.: Changed: set DS_ONQUEUE state for swapped source because DS_NONE could get purged (thanks to Enig123)

-----------------------
- Mar. 06, 2018       -
-----------------------
.: Added: magnet links can be pasted or drag&dropped to Transfers

-----------------------
- Mar. 04, 2018       -
-----------------------
.: Changed: KAD TCP firewall check tries to connect to low ID client instead of immediate return (recheck for false low ID)
.: Changed: removed events logging where TODO comments suggested

-----------------------
- Feb. 20, 2018       -
-----------------------
.: Added: IRC tabs - each tab now has a separate input and autocomplete

-----------------------
- Feb. 16, 2018       -
-----------------------
.: Added: check for filtered or banned KAD buddy IP (thanks to Enig123)
.: Changed: IRC tabs will not close on disconnect or quit

-----------------------
- Feb. 14, 2018       -
-----------------------
.: Added: magnet links, basic parsing (file name, length, hash, AICH hash and sources)

-----------------------
- Feb. 11, 2018       -
-----------------------
.: Added: validate log file name when saving logs manually (also fixed regression in validation)
.: Changed: IRC command /ison printout is prepended with "ison: "

-----------------------
- Feb. 10, 2018       -
-----------------------
.: Added: IRC can use italics
.: Added: check for DS_REQHASHSET state in CUpDownClient::Disconnected (thanks to Enig123)

-----------------------
- Feb. 06, 2018       -
-----------------------
.: Fixed: IRC nick in a channel was not updated on change if a private conversation existed
.: Fixed: IRC smileys could be drawn with incorrect background colour
.: Added: IRC user mode prefix will be displayed in a channel log
.: Added: IRC setting to toggle UTF-8 usage
.: Added: IRC setting to ignore "Ping? Pong!" messages in Status

-----------------------
- Feb. 05, 2018       -
-----------------------
.: Changed: IRC channel default topic height was decreased to 1 line
.: Changed: IRC Channels list is closable

-----------------------
- Feb. 04, 2018       -
-----------------------
.: Fixed: conversion from UTF-8 to UTF-16LE must use string length
.: Added: IRC uses UTF-8 encoding

-----------------------
- Feb. 02, 2018       -
-----------------------
.: Fixed: IRC should open a private message window after double clicking on your own nick
.: Fixed: IRC used case-sensitive comparison in some cases
.: Fixed: IRC nick in Prefernces was truncated to 19 characters instead of 20
.: Changed: IRC nick may be cleared in Prefernces while not connected
.: Added: IRC channel window would not close after kick

-----------------------
- Jan. 27, 2018       -
-----------------------
.: Added: Web Server can use SSL/TLS with a certificate and a private key files (.crt/.key)
.: Changed: Web Server templates - password should not be saved in browsers
.: Fixed: Web Server templates had a few odd tags

-----------------------
- Jan. 23, 2018       -
-----------------------
.: Fixed: Web Interface search results from multiple tabs (partial fix, shows results from all tabs as one list).

-----------------------
- Dec. 23, 2017       -
-----------------------
.: Added: CreateCrashDump=2 in preferences.ini, [eMule] section will write dump without asking user

-----------------------
- Dec. 19, 2017       -
-----------------------
.: Added: KAD massive flooders will be removed from the routing zone
.: Changed: Use InterlockedCompareExchange() to prevent re-entry
.: Changed: UploadBandwidthThrottler::RemoveFromStandardList cleans up all entries for a socket as was written in comment
.: Changed: LastCommonRouteFinder does not need uploadLocker

-----------------------
- Dec. 05, 2017       -
-----------------------
.: Fixed: allow loading of mediainfo.dll versions v17.*
.: Fixed: bug in id3lib_strings.h length()
.: Changed: AbstractFile::UpdateFileRatingCommentAvail(bool bForceUpdate = false) made consistent with its overriding methods

-----------------------
- Nov. 25, 2017       -
-----------------------
.: Changed: upgraded AsyncSocket code using the latest Filezilla server
.: Changed: use uniform check for timeouts ">=" instead of random ">" or ">=" (an example: ::GetTickCount()>=t+TIMEOUT)

-----------------------
- Nov. 18, 2017       -
-----------------------
.: Fixed: memory leak in exception handler of CAICHRecoveryHashSet::SaveHashSet()
.: Fixed: several minor regressions
.: Added: duplicate AICH hashes in known2_64.met are zeroed and will be purged on next program start
.: Changed: replaced broken stat() functions with custom statUTC(), returning UTC file time stamps

-----------------------
- Oct. 10, 2017       -
-----------------------
.: Changed: allow small ping variation in the incoming KAD packets tracking (thanks to Enig123 for the idea)
.: Changed: use message-only window in AsyncSocketEx

-----------------------
- Sep. 24, 2017       -
-----------------------
.: Fixed: prevent re-entry into CEMSocket::CleanUpOverlappedSendOperation()
.: Fixed: condition in UploadBandwidthThrottler::RunInternal()
.: Fixed: crash in SharedDirCtrl on sharing directory with exactly 1 file
.: Fixed: regression in AsyncSocketEx.cpp (it is an array of structures, not byte array!).
.: Fixed: bug in CResizableLayout::ClipChildren
.: A number of always true/false conditions removed from checks
.: Code editing related to type casts and type consistency
