AMIGIFT is a FileSharing Application for AmigaOS compatible systems. It is mainly a User Interface to the giFT daemon, plus the distribution includes everything ready to run. Currently supported networks are FastTrack, Gnutella, OpenFT, and Ares.
Be the first to post a text review of amigift. Rate and review a project by clicking thumbs up or thumbs down in the right column.
------------------------ AMIGIFT - ChangeLog ----------------------------------------------------------------------------- $Id: ChangeLog,v 12.8 2009/06/06 12:07:55 diegocr Exp $ 2009-06-06 * Fixed some issue(s) caused by uninitialized library base pointers from inside amigift.library (...) * Fixed several catalog/build-in english strings for typos, Thanks a lot to Sam at s-best1.demon.co.uk who did the job. 2009-06-03 * Downgraded required OpenURL.library back to version 6.3 ############################################################################# ####### AMIGIFT 2.0 (Final) PUBLIC RELEASE ####################### 2009-06-01
An update fixing last reported issues has been released, download it from the following URL: https://sourceforge.net/project/showfiles.php?group_id=89295&package_id=93629 Direct Link: https://sourceforge.net/project/downloading.php?group_id=89295&filename=GiFTMui-2.0.201.lha Release Notes and ChangeLog: https://sourceforge.net/project/shownotes.php?release_id=182208&group_id=89295
------------------------ AMIGIFT - ChangeLog ----------------------------------------------------------------------------- $Id: ChangeLog,v 12.7 2009/05/31 14:30:51 diegocr Exp $ ############################################################################# ####### AMIGIFT 2.0 (Final) PUBLIC RELEASE ####################### 2009-06-01 2009-05-07 * Improved the way search results are inserted, specially noticeable while working on multi-lists mode. 2009-05-04 * Added tooltype MUICFG. Now AMIGIFT can work fully Portable. Use this tooltype to provide a filename where to store MUI settings, eg: MUICFG=AMIGIFT:GiFTMui.cfg - If no tooltype is provided it will fallback to the default ENVARC:MUI/GiFTMui.cfg 2009-05-03 * Added tooltype WSEASYNC. While FIOASYNC isn't activated, Socket events will still be handled asynchronously (Internally by GiFTMui itself), using this tooltype you can disable such async way, just in case you *really* need to for whatever reason... 2009-05-02 * Changed the way Context-Menus for results/transfers lists are created (Replaced OM_ADDMEMBER by MUIM_Family_Insert) * Several -little- internal fixes and improvements... 2009-04-07 * Online Updater's updating everything automatically became broken at some point... Fixed. * Some minimal internal fixes. 2009-03-24 * When a Download is cancelled, or in the Verifying/Completed stage, the session-id will be stored on a new 'transfer in limbo' list, this should avoid Locators from acting on them, just in case of.. * Transfers Window's info-bar to downloads (aka 'trackdls') wasn't correctly refreshed - Fixed. * The Inspector was being launched when there is no pending dls, Fixed * Updated Italian catalog, Thanks to Samir Hawamdeh. 2009-03-01 * GiFTMui is now available in french language, Thanks a lot to Eric 'Tarzin' Luczyszyn and Philippe 'Mrod' Bovier. 2009-02-20 * The 'Create Cache' became broken at some point.., Fixed. * GiFTMui's Threads subsytem was buggy dispatching async messages, which was only noticeable from the 'Uploads Queue' (where a NListree bug was fixed as well). * Moved 'trackdls' stub from NList's Destruct to NList's Remove... * Fixed some issue on the MUI's PushMethod() emulation... 2009-02-15 * The NList Images (network logos) to the Stats and Updater windows will be handled on demand now. (Created at MUIM_Setup and deleted on MUIM_Cleanup) * The plugins has now MD5/SHA1 checksum routines in m68k ASM! Thanks a lot to Jochen Hoenicke who originally created them for PalmOS... * a few internal fixes... 2009-02-07 * Added tooltype NLSLEEP to put on/off the feature/hack of forcing NLists to be set "to sleep" (as previously mentioned) regardless of the CMAPSETUP status. Disabled by default. * FFS partitions to the incoming/completed folders are from now officially supported, it works in the follow way: The first time you request a download (and only the first time per session) your incoming folder will be checked to discover over which filesystem it is, if (( DiskType & 0xFFFFF000 ) == 0x444f5000) AND it's NOT a FFS2 (OS4) partition, the maximun number of chars a filename can have will be automatically set to 20 chars, only 20 chars because downloads are saved as .DLID.<filename>.state max on the incoming folder, until they are moved to completed. However, we still don't recomend to use FFS, since most todays files have long names... * Certain messages coming from the daemon will be intercepted and localized on-the-fly if a catalog was loaded, this should be nice than localizing individually each of the amigift components... * a few number of little internal fixes... 2009-02-01 - During the last two months there was lots and lots of changes made to GiFTMui due a quite annoying MUI-related bug found, below is a list of the most significant changes... * All of the NLists will share a common memory pool. Also, downloads/uploads lists will now use MUIM_NList_Contrust/Destruct replacing the old Hooks way, plus other little enhacements. * Removed about 70 functions from the amigift.library API, which either was obsolete or used only by GiFTMui, which has been therefore moved to the GiFTMui sources. * Transfers History Window will no longer use a dedicated custom class, it will use static set of functions which will handle the history on demand (when new items are inserted, or the window needs to be opened, else it will be keep silently unused) * Replaced usage of MUI's PushMethod by GiFTMui's PushEvents, which handled by eventdsp_class.c.. that custom class have been rewriten from scratch to dispatch events/methods on a better way... * Many of our GiFTMui's custom classes was creating Notifications on objects since OM_NEW method, this has been changed to handle it at MUIM_Setup and killling such notifications at MUIM_Cleanup as it should have been since the beginning... Usage of MUIM_Window_Setup/Cleanup have been added as well to all of our MUIC_Window's subclasses as for the matter. * Replaced ALL NLists where they are really not required (as for example one-column lists), MUI's normal lists should be just Ok.. * Added GiFTMui's Tooltypes: AUTOREADSAVE: Handling of 'Read/Save From/To Disk' will be perfomed automatically when requesters pop-up asking for it. TFSTATUS: Controls whenever the main window's counter for all active transfers should be enabled. TRACKDLS: This control if the Transfers Window's downloads list should include the info bar... NLWINML: Control whenever debug and socket activity windows should use NList or normal MUI Lists (just added for testing purposes) CMAPSETUP: Short for Compact-Mode ActivePage Setup. This is some MUI *hack* which while working on COMPACTMODE will handle objects's MUIM_Setup and MUIM_Cleanup switching between tabs (RegisterGroup Pages), and therefore starting/killing notifications and other setup/cleanup actions when the ActivePage isn't the visible one. Also, there NLists will be put "to sleep" as possible to try to achieve a better perfomance, this is just done by using Quiet, Disabled, and GoInactive, but "unfortunately" there is still an EventHandler which executed each 30 milliseconds even when the NLists aren't used and we having more than a docen NLists on the same window could be not nice on slow systems... * And, as above mentioned, lots and lots of code rewrited partially or from scratch, cleanups, paranoid checks, etc etc, and all that shit and annoyance to try to get rid of a MUI-related bug which at the end does not look to happend on our code, it seems to point to the NList/NListview classes... around when ScrollBars are refreshed/redraw probably I guess... i hate god by not letting me see it before :'-( 2008-11-30 * The Hash/Checksum build-in functions into amigift.library will no longer be inlined together, as it seems to have caused some checksum errors under MorphOS (Trance bug? dunno!) * Rewritten/optimized the function which saves MUI-Settings to daemon's config files. Also, a backup will be created before overwriting such files. 2008-11-25 * A few minimal fixes; URL-Decoding on filenames and url to file comments will be performed on a loop ensuring eg %252526 is properly translated to '&' 2008-11-23 * Replaced a few gift.library's API Functions with a inline version.. * Changed the way downloads are saved into the incoming folder, previously 20 additional chars to the filename being downloaded was used, as a mean to be a unique identifier (UWORD+ULONG+ULONG) that have been changed to be a single UWORD (4 chars) which should be enought as well. This change has made the filename limit of GiFTMui to be increased from 77 to 93 chars (by using the CutLongFilenames option switch) * Added to the Tools menu (GiFTMui) the avility to temporary disable shares, hence requests to download from you will be blocked... * The way lists are cleared have been changed, instead of making a notificacion for each new list (multi-lists mode) we'll handle this by a single notification handled by the application custom class. * GiFTMui will now flush used MCCs as well on program exit. 2008-11-19 * gift.library/event.c: Increased the maximun number of input events, and made certain static functions to be inline using its parameters passed to registers... * Changed gift.library memory's MagicID from 0xff1cb43a to 0x7ABBA000 * giftproto.library/share_hash.c: the result from hashing procedures will be now cached, ensuring a file isn't hashed two times from the same session.. unless that file's datestamp has changed... * gift.library/interface.c: improved for speed, which teorically should be lots noticeable... apart that file wasn't changed since its Linux version, each key(value) pairs the daemon sends to GiFTMui are created with a call to interface_put(), that function made a copy of such key/value strings by using strdup() which uses the own memory system of gift.library based on memory pools, which must be protected by a semaphore, that need to use strdup() has been removed and the way strings are parsed optimized as well removing the usage of a few function calls (string_sep and family) by a single call to strchr()... Considering for example a CHG#? command needs eight of such key(value) pairs, plus four additional ones for each source, thats at least twelve accesses to the memory system which has been succesfully avoided, with a hopefully great speed up (os3, at least) * a few other internal fixes/improvements gift.library related. 2008-11-18 * Added sanity check code on the Threads subsystem to verify the Task's State and SigWait at exit stage... 2008-11-17 * The avility to set the download's URL as file-comment had become broken at some point. - Fixed. * The way we allocate and refresh the multi-lists was somehow broken due certain actions being performed always rather than only when more that a single list is in use. * Fixed some memory leaks (which wasn't really since we use a memory pool, but which may is noticeable after a long session) * Added support to perform UTF(8) to ASCII/Latin1 and URL-Decode conversions on download filenames (such things will be performed just before the 'Cut Long Filenames' filter take action), the correct thing would be doing so at NList insertion time from search results, but we decided to do it at download time only so that results insertion aren't slowed... * Fixed some wrong pointer passed to FreeMem() while using the Main Window's Downloads List... * A few other internal fixes... 2008-11-13 * Improved the way Gnutella' hostiles are loaded, and added support for banned IPs in CIDR notaion (<ip>[/(<netmask>|<cidr>)]), for example 192.168.0.0/255.255.255.0 or in cidr 192.168.0.0/24 The load time has been decreased by almost half minute. 2008-11-12 * gift.library/conf.c: if the provided config pointer is NULL we'll get the default value from the provided string rather than trying to fetch something unreachable from the private dataset. This should ensure no NULL pointer is returned while fetching a cofiguration option if a plugin was unable to load its config. * Our strtol/strtoul functions will now check for empty strings and not only for NULL pointer argument, this should avoid some possible race condition which may happened... * gift.library/parse.c: changed CopyMem/strncpy usage by memmove 2008-11-09 * Optimized/Restructured the GiFTMui's Threading System. It will no longer use its own message port but sharing the application one. * The Online Updater's received data will be now cached for twenty minutes, this will be helpfull (faster) if for example you switch between 'show only never files' option. Also, the function we use to get executables version will now cache the $VER: string as long the program datestamp does not change. And, a Updater's Thread will now forbid the application from exiting with a DisplayBeep. 2008-11-03 * There was 10 FastTrack hardcoded options which are now configurable from the preferences window, look there for further info. 2008-11-02 * The Online Updater's Engine have been rewritten. Enhacements and improvements apart, updates are now received on a compressed way by using BZIP format, and therefore it will work much faster now. * Added new sockopt option: 'Check Connectivity On Startup' This option which enabled by default, will check if you can reach internet (and viceversa) before any other socket-related action is performed. Its purpose is similar to 'check tcp/ip interface' with the following advantages: a) It's more accurate as it will fisically try to reach some servers b) It works on every TCP/IP Stack (Not only MiamiDx/Genesis) c) MiamiIsOnline() and Genesis's IsOnline() only reports if you are connected to your router, and not if your router is really connected to internet. * You'll be now notified when plugins goes Online/Offline, into the main window's info bar, debug window, and playing the stats sample. * Tooltypes aren't readed if GiFTMui is launched from shell - Fixed. * A few other minimal improvements... 2008-10-21 * The feature added in the daemon to avoid duplicated search results is now settable by the end-user (no longer hardcoded) so that you can decide if you want such feature or no... * The mentioned times to the new auto-(re)connect features are now configurable from the preferences window (sockopts) - but you are not encouraged to change them unless you notice some side-effect.. * Fixed some issue at exit while a FBrowse's subprocess is running. 2008-10-19 * Our StringHistory's Custom Class will use now BetterString.mcc instead of the default String.mui class, the usage of the up/down keys with or without shift pressed have been preserved, and additionally mouse wheel support has been added. As a reminder, that's the class we use to the search string, chat, filters, etc 2008-10-17 * Playing a transfer from the uploads list didn't worked - fixed. * We'll no longer try to re-create an AppIcon when it's the same we used previously. * As an addition to the auto-(re)connect improvements, when we receive an FD_CLOSE event (eg, connection refused at startup) we'll queue the auto-connect event/method to be dispatched in two seconds rather than trying to launch it instantaneously, since else we noticed there could be about eight connection tries each second (under os4) * Cliking the Stop button from the Transfers window didn't worked sometimes for certain external players... Fixed. 2008-10-14 * Fixed and improved how GiFTMui auto-connects to the daemon on startup. To make a long story short, the daemon could accept the connection but without being ready to reply commands, if GiFTMui detects this it will try to auto-reconnect on intervals of six seconds until a reply is received... * GiFTMui's menu->network->daemon->quit only worked if we are connected to the daemon, as of today the daemon will be breaked if we are not connected to it. * The reloading process will now check for the daemon executable as well as the way of checking a library isn't accurate (eg, some 3rd part component could be using it)... * If some sound sample cannot be played (for whatever reason) it will be automatically disabled, resulting on GiFTMui no longer trying to re-create a datatypes object for something unreachable.. * Added support for REGEXP (Regular Expresiones) to the Filter's pattern string, to use a regexp pattern the first character must be a colon, eg: ":/.*?(mp3|wav)^/i" (whichs returns any file ending with either mp3 or wav (case insensitive)) - Note regexp patterns must be provided on a perl-style way. * Reworked the Pattern Selection window, accesible from the results context menu (results listview->context menu->select->by pattern) It now supports regexps as well. Also, added selection by max number of sources to the same context menu, which will auto-select the entry with the highest number of sources. * Several little fixes here and there.. 2008-10-06 * Improved how the daemon is reloaded from GiFTMui - previously we only checked if the daemon's port can be bind()'ed, as of today build we also we'll check if gift.library is expunged from memory resulting on no more 'daemon launched twice' requesters... * The GiFTMui's shutdown window could be keep opened forever if for some reason a timer.device request cannot be created - Fixed. 2008-09-28 * Improved FBrowser's COPY/MOVE Routine. * a few other minimal changes.. 2008-08-17 * Recompiled everything as of preparation for the 2.0-final Release. The Changes/Fixes made are minimal, though. 2008-01-24 * Our way to create the Compact-Mode Window seems to be causing trouble under MUI v3.9 - by that reason a special version of the related functions have been created to be used when muimaster version is equal or greater than 20 ... * If FIOASYNC is being used, the MUI Timer interval managed by eventdsp_class will be incremented by 1500ms (and probably should be even higher..) since it will be used then to request stats and launch the Inspector, only. * Since almost the beginning, there was a internal feature to adjust the maximum number of sockets giftd is able to use, that was by using the enviroment variable AMIGIFT_DTABLESIZE, Now you can use a fixed value for maximum sockets by using giFTMui's tooltypes. Hence, using DTABLESIZE=60 tooltype will forbid giftd to create more than 60 sockets. If such a tooltype is found by giFTMui at startup it will automatically set the enviroment variable, that means it will work only if the daemon isn't running already, but obviously the enviroment variable will be there until reboot. Note that if you reload giFTMui the enviroment variable will be overwritten, but if the daemon is already running it will not be aware of the change... It needs also a mention, for those of you who don't know it, that the default maximum sockets assigned per task by AmiTCP/MiamiDx is 64 sockets, being the maximum allowed 255 sockets - giftd by default always used (and uses) the maximum allowed. Also, all plugins have been "fixed" to not show tcp_open() errors if they are of type EMFILE ('Too many open sockets'), in case you wish to use a lower number of sockets. NOTE: we have opted to force the number of sockets to be 64 while running under Miami(Dx), if you want to use higher amount you'll have to use the tooltype. * If we abort a download, while a Inspector is running, there could be the case where one of them isn't checked for sources...Fixed. * F(ile )Browser Improvements: - On Compact-Mode, it will be part of the main window. - Created two vertical buttons attached to each listviews which can be used to go to the parent directory. - To stop a Copy or Move procedure, you can now press the space key to abort the operation. - The DoubleClick's action hook will wait a second if a player is launched while a previous instance is already running, this will give the subprocess some time to end and hence the new playing request should take action without errors... * a few internal fixes here and there 2008-01-13 * There is available a video showing (mainly) the current cpu load of amigift, It's a quick 10 minutes session from the start of the program to the shutdown: http://www.youtube.com/watch?v=17_0jzO-k2Q You can as well watch there the program load time, how fast it connects to the network or the common response time to search requests, along other fine behaviours :-) The video was recorded using the ServicePack builds, todays as of giFTMui #165 we achieved to improve socket events handling so that the cpu load should be lower... * Now, the near 40 custom classes giFTMui uses will be created once the SplashWindow have been created, following changes made recently on that matter, so that the program appears faster. * Replaced usage of MUIM_WriteLong, on a couple of places, by our own methods to do things on a nice way... * Created a new custom class (aka eventdsp_class) with the only job of handling socket events on a nice way by using MUI's buildin timer rather than our own timers... how stats are requested, and the Inspector launched, are now handled by this class as well. NOTES: 1) The real improvement resides for non-FIOASYNC sockets, since is in this mode when giFTMui must handle/dispatch socket notifications on his own. 2) The interval of milliseconds we request MUI to notify our method is by default 1000ms (each second), but this could be adjusted from the giftd settings (tunning->report interval) The reason why we have decided to use a giftd option(s) for a giFTMui-only feature is simple: if we request giftd to report transfers progress each 4 seconds, there is no sense from giFTMui to check for events each second.. hence, the minimum value for downloads/uploads will be used for the MUI timer, this should decrease the cpu load even more! It's highly recommended to use under os3 a *minimum* of two seconds for transfers progress there, you'll notice a better performance.. 3) There is available as well, at the giFTMui settings, a new option which will cause this class to drop all open connections when you iconify the application, on that way the cpu load will be Zero when giFTMui is iconified. However, note that in such case there will be no sound/player notification when eg a download finishes. * When FIONBIO isn't enabled the SendQueue's switch will be disabled, since it's useless without using fionbio (non-blocking) sockets. * The Inspector will no longer active the entry a locator is going to look sources for, same for Locators automatically launched. * Fixed a bug which caused a socket being closed without removing the associated node from our private sockets-list, this may caused unpredictable results if eg we inserted a new socket with the same number of the previous already closed... * The giFTMui settings which was right-aligned are now left-aligned.. * Some minor fixes and code cleanups. 2008-01-07 * Created the first ever AMIGIFT Service Pack, which includes up-to-date binaries for all m68k flavours (68020 to 68060 with and without FPU support) along with bonus material. This includes: giFTMui Build #164 07.01.2008 amigift.library 2.146 04.01.2008 gift.library 2.19 05.01.2008 giftproto.library 2.4 29.08.2007 Gnutella.PlugIn 2.7 03.09.2007 FastTrack.PlugIn 2.7 21.08.2007 Ares.PlugIn 2.7 20.08.2007 The SP is provided with a installation script which detects your CPU and automatically installs everything (patching if needed), it has to be installed over your existing installation. Note: Service Packs are intended to registered users... 2008-01-04 * Our NList parser to the transfers lists will use now AllocMem() rather than our malloc()-replacement which is slower due we use a memory pool that needs to be protected by a semaphore - This effectively should speed up the transfers progress. * Fixed some issue on the main window's downloads gauge, it has been improved a bit to require less cpu usage... * Decreased our memory-pool's puddle size since some benchmarks show it's a little faster (a gain of 6 seconds each 8000 allocations..) 2008-01-02 * The check for 3rd part resources, and some others startup checks, will be now performed once the SplashWindow have been opened. * As requested, the daemon will no longer check your shares index on each startup (...), it will check the shares index datestamp and perform such check once a month only, it will do that silently launching a subprocess on startup rather than refusing to start and warning you with a requester (as it was several builds ago) * Some minor fixes. 2007-12-26 * Updated the list of mime-types build into amigift.library * Changed the way giFTMui's private MUI Classes are created, basically we'll use allocated memory rather than stack space to store a pointer to the class instance... * Replaced usage of AllocMem(0x7ffffff0,MEMF_PUBLIC), to flush our libraries from memory, by RemLibrary() when OpenCnt==0 ... This is done if the library is amigift.library or gift#?.library, ofcourse. 2007-12-23 * Fixed a wrong Gnutella's ObjectID which caused the packet ascii log file setting not saved properly upon exit, and hence what caused as well a de-sync warning poping on startup if you aren't using his default value. * Re-implemented giFTMui's registration system, which indeed should be lots better than the previous method (which was a crap anyway), you will find all related info on the Register window (opening it from the application menu, or About window - The About Window have been rewritten from scratch as well being now much clear and well structured... using Urltext.mcc to link to the website resources). * Added OpenURL.library 7.0 and Urltext.mcc 19.7 (By Alfonso Ranieri) to the list of required resources by giFTMui - We have replaced web links usage inside giFTMui using Textinput.mcc by Urltext.mcc which is more comfortable, and OpenURL 7.0 is needed to properly handle mailto: links. * Fixed a couple of hits caused while trying to obtain the mime type of a file which hasn't extension - this is mostly noticeable while trying to play files from the File Browser. * File Browser's right-list will list now the RAM: disk instead of the list of devices so that it is opened faster. * Replaced some thirty BOOLeans (60 bytes) by a single ULONG (4 bytes) and bit mask, this should make somewhat faster certain loops... 2007-12-03 * The giFTMui's SplashWindow isn't shown correctly under UAE - Fixed. 2007-12-02 * Several builds ago the way maximum results are handled was changed, allowing more results than the maximum defined (read this changelog entry for 2007-04-24 for more info), However... it comes to our attention that some users dislike this change, therefore a new settings option was added so that is you who decide how to handle maximum results - You'll find such a option at the settings window on giFTMui->main->mList * Re-implemented the giFTMui's File Browser, being rewritten from scratch so that it will no longer be usable for overview only but to allow common actions to be performed (copy/delete/rename/etc) and to jump between directories with no limit, double-clicking an entry will display such file using the pre-defined players from the settings window - basically, it has become a little file-mamager! (Next step would be to add to it an embed music/video player ;) * Upon giFTMui's startup, (and only at the first startup after a system restart), the program will verify that the daemon's config files are in sync will the settings stored by giFTMui, warning you if a 'Read From Disk' procedure is required. 2007-11-28 * Fixed a bug which caused a 'out of memory' requester opened on each new entry to be added to the results listview while the filter's pattern check is performed. 2007-11-23 * Users of StackAttack2 may have noticed a daemon failure at time of launching the SharesIndex sub-process (which giftd does using the CreateNewProc() function that StackAttack[2] patches). It seems to be caused by an "unusual" usage of StackAttack2 (and it only seems to happen with version 2.9), e.g: using 'StackAttack MINSTACK 8192' causes such a crash but using 'StackAttack AUTO' does not cause it. Increasing the NP_StackSize tag value at the daemon side seems to cause the problem gone (even, when we had it set to 65K), but anyhow we recommend to not use MINSTACK with a value lower than 16K or so 2007-10-16 * giFTMui uses now the internal list of installed plugins alphabetically sorted, so that mui objects are created ordered in such way. * The network status lamps of the main giFTMui window are now clickable, its functionality will be to select at which network protocols do you want to send the search request, in the same way as if you use the advanced search panel's protocol checkmarks. In addition, the lamps will no longer use RGB colors but user-defined colors instead (configurable from the global MUI settings), When the network is online it will be the color "Ok", while the network isn't ready to accept searches it will be "Processing", and if you click on the Lamp, to activate searches at that network only, it will blink with the "Looking Up" color altogether with the previous status color. those are the names which appear on the mcp, btw. * a few changes here and there on the look of some MUI objects, and other little fixes. 2007-10-01 * Updated Italian and German catalogs kindly provided by Samir Hawamdeh and Hans-Jrg Ottinger respectively. * Default settings was set after loading the settings saved on disk when is the opposite the right action obviously. - Fixed. * some minor fix. 2007-09-28 * The functions strdup and strndup which amigift.library implements (and both the library itself and giFTMui uses) have been replaced by somehow faster ones, being a change made on them needing a mention: such C-Standard functions only fails if passed a NULL as argument or if was unable to allocate memory, BUT our old implementations also checked if the first character is Zero, failing then as well in such case - this no longer happens being therefor empty strings dup'ed as well (as the standards specifies) unfortunately this could means some unpredictable behaviour may happens as we have not checked the whole code, just inform us if you notice some strange issue. There has been made a major code cleanup on amigift.library as well. * The whole daemon/plugins's configuration handling have been rewritten according the new giFTMui's plugins management. This includes that only plugins currently installed will be allowed to be configured, and several other internal features/improvements. * Updated and "fixed" giFTMui.cd, look at it for more info. * The file amigift:data/shareroots.txt will no longer be independient from the rest of the core, instead it will actually be a safe-copy of your sharing roots - This has been made to be friendly to the new ASIU program. 2007-09-11 * giFTMui have been fully adapted to dinamically work with plugins, so that he works knowing nothing about the plugins installed for AMIGIFT, however... it still handles preferences for the currently know plugins Ares,FastTrack,Gnutella,OpenFT. New plugins must use the new method as follow described so that giFTMui needs not to be recompiled to allow any particular new plugin to work properly inside the GUI. Go ahead user-groups creating your private network for your community only, it should work like a charm from AMIGIFT now! :-) Basically, what giFTMui needs to work with new plugins is just a MUI's Public Custom Class (.mcc) located inside the AMIGIFT:PlugIns directory, this class could be a subclass of whatever you want, but obviously the quicker way would be creating it as a subclass of MUIC_Group, it should return a valid MUI Object which will be placed as a children of a PageGroup on the preferences window. The class should additionally handle the reading and writing of the corresponding giftd's config file, those found into AMIGIFT:daemon/<plugin>/<plugin>.conf, as available for the rest of plugins as well. There is provided a Demo.mcc and Demo.PlugIn (with full source code, of course) which demostrates to developers interested how this works, The Demo.PlugIn source is just a quickstart on how to write PlugIns, for better info and examples OpenFT sources are the best choice. NOTE that how giFTMui will handle your plugin is based on the plugin's filename as found into AMIGIFT:PlugIns, and the .mcc and image (logo) based on that name, e.g. it founds into AMIGIFT:PlugIns a file named BacaBurra.PlugIn then it extract the name and stores it as "BacaBurra" (case sensitive!, at least for MUI..), then it tryes to load the mcc using: MUI_NewObjectA("AMIGIFT:PlugIns/BacaBurra.mcc", NULL); (additional tags support may come later if needed, just request it!) and then the logos loaded as well as: AMIGIFT:Images/networks/normal/BacaBurra.iff AMIGIFT:Images/networks/small/BacaBurra.iff (being fixed width/height a requirement, 32x32 & 16x16 respectively) Note that giFTMui will still work with your plugin if neither the mcc nor the logos are found!, what we understand as your plugin needs no configuration, being the logo replaced with a build-in image (with a "?" sign) if yours aren't found. If you create a MCC, you'll need to implement the following MUI Methods on your class dispatcher: #define MUIM_GIFTMUI_MCCLOADCONFIG0x800FF00A #define MUIM_GIFTMUI_MCCSAVECONFIG0x800FF00B Such methods will be invoked by giFTMui when a user uses "Save To Disk ALL" or "Load From Disk ALL" menu options. be aware you must return the same method-id if your function succeed, and something else otherwise. Don't hesitate to contact us if you have some suggestion/comment or improvement/implementation idea about this new plugins handling! * Created a new standalone program to update/create your AMIGIFT's shares index file, ASIU (short for "Amigift Shares Index Updater") is its name and available from the root of the distribution. It creates a MUI-friendly (and simple) GUI with a NList and three buttons, to add/remove paths and to launch the hashing process. Note what it does is just a quick way of launching "giftd i" shell process, but with internal features to verify your config and update/fix it if needed, that includes activating all of your installed plugins (if aren't already) to create a full shares index file before launching the daemon, and restoring the config to your previous plugins once finished. It's highly recommended to use this program after a fresh boot to work faster and smooth and obvioulsy without another daemon instance running on the background (or without any other program on the background ;-) * Added a timeout to the splash window at exit stage... that timeout will be one minute under OS4/MOS and three minutes under other systems. 2007-08-03 * Updated German catalog, Thanks a lot to H.J. Ottinger. * Added usage of MUIA_Application_UsedClasses to give MUI a list of external classes used by giFTMui. * Added a few sanity check to the Ares.plugin to prevent some issue(s) while updating our shares index. * giftd should correctly assign the AMIGIFT: path now if it's loaded from a shell to generate/update the shares index. * Added recognition of 'SFS\2' partitions. * Fixed a failed assertion on the Gnutella plugin which happens sometimes by a strange rand() issue... in addtition, the rand() function have been replaced on the whole core (all daemon components) using a libnix-based implementation which just uses utility.library/SMult32() ... * There will be no longer the 'one month old' shares index requester, since todays the shares index update process is launched from a thread there shouldn't be no major problem on that, so that on each startup your shares will be checked, note that even on large shares index files this process should take a few time if no changed files are found (On a 060 with the default A1200's IDE Controller, giftd shows an average of 24MB/s when checking unchanged files, being near 300MB/s under MOS/OS4) 2007-07-29 * Some users complain about the daemon does not return results matching the exact phrase they want, so that looking for "hello world" may returns entrys containing "hello" only. By that reason a new filter have been created, it's a cycle object with match any word, all words, or all words ordered (as-is as you typed it). You'll find it on the vertical search pannel with the rest of giFTMui's filters. * Since we changed the bandwidth's downstream/upstream objects from a String to a Slider, saving to disk those options wasn't working due we was trying to get a string contents still. - Fixed. * How to create/manage multi-lists (results) have been rewrited to be more MUI-Friendly, so that it should work smooth and fast. * Using FIOASYNC+FIONBIO+SendQueue altogether didn't worked properly due a bug on how packets are queued. - Fixed. * The giFTMui's online firewall checking didn't worked properly if your router is blocking pings, - Fixed. 2007-07-18 * Added a new SpashWindow to the exit stage. It's just a tiny window with a "AMIGIFT Exiting" and progress messages, you'll may notice it looks like it needs more time to exit now, isn't that right, just that giFTMui will wait to the daemon to be fully aborted before it exists completely as previously when giFTMui has already exited the daemon was still there in the background. It works on that way when 'Remove On Exit' option is on, of course. 2007-07-15 * Optimized how Compact-Mode windows are diposed on exit, as there seems to be some issue under MorphOS. * If some window cannot be created for whatever reason (out of memory, missing mccs, etc) there will be now a requester informing the user.. * Updated Italian catalog, thanks Samir! 2007-07-08 * Fixed a bug while using CHUNKPROGRESS which caused giFTMui to crash horribly by a missing statement not telling NList.mcc to stop using our BodyChunk's chunkprogress object. * Fixed some possible bug into our OpenLibrary() replacement ... * vapor_toolkit library will no longer be checked on startup for his existence (such library is/was needed by TextInput#?.mcc but it's build-in on newer MUI versions) * On startup we'll check now if there exists an AMIGIFT: assign which does not belong to the current directory (from where you started giFTMui), warning you in such case. Same kind of test will be perfomed to check that you do not have amigift libs on both places SYS:Libs/ and AMIGIFT:Libs/ * You'll be able now to ban a supernode, apart a single user, for those results received from doubtful origin... * Main window's cloned dls-list will use the NList "images" only when needed instead of allocated from the beginning. * some little fix/optimization here and there... 2007-07-01 * Being a new pre-release archive to be released (or released as you read this), we have added some code which check for the file time of the default MUI config giFTMui uses, so that if it was created previously than the 1 of June it will be automatically deleted on startup, according to the changes made the last month which has made this a requeriment by the new structure of mui's objects. Hence, remember you'll need to reconfigure giFTMui almost from scratch on the first run, for the daemon and plugins part you can just use 'Read From Disk ALL', from the settings menu, if you wish to keep your previous settings, and next save the settings from the same menu or dont forget to enable 'save settings on exit' switch ... In the other hand, if you want to use a clean installation (which recommended, by just extracting the archive somewhere and double click the giFTMui icon, - you can still use your incoming and completed folders), for a quick-start all you have to do, BEFORE the daemon is launched, is selecting the networks you wish to connect to, and then use 'Save To Disk ALL' from the settings menu (the default settings for everything should fit most users), and you'll be able to connect to the network(s) in a few minutes. Look at the AMIGIFT.readme file for more info! * ShareMonkey (http://www.sharemonkey.com/) have been implemented into giFTMui! ShareMonkey is a WEB Service which allows users to locate where to buy legally any of those files you'll find from the various p2p networks. Theres a new context-menu option to the transfers and results lists, "Where is this file from?", when you use it you'll be redirected to the website which will show you quickly any product matching the filename, filesize, and/or filehash. NOTE: you need to have installed openurl.library! I want to give the Thanks to Keiron Waites for his great support and efforts in making the ShareMonkey website compatible with IBrowse, currently the website was using Ajax and CSS, but Keiron kindly allowed us to upload a php (wrapper) script which makes the site perfectly working from our AmigaOS Browser(s). * Samir Hawamdeh updated his catalog (time record, thanks Samir!), so that Italian users can enjoy the whole amigift interface on its natural language. 2007-06-22 * Changed a bit the SplashWindow so that it will show now the "release name" and compile time. * Implemeted the "msg" commad to the chat, used to send messages directly to users, or to identify after a nick change (mainly to) * Theres a new option to use a queue for automatically launched Locators, so that they get no lost in space when a new request comes while a previous instance is still running. NOTE: If you launch a Locator manually while the list isn't empty your request will be dispatched asap, being the Locator currently running aborted and re-added to the tail of the list. * Fixed gift.library functions file_unix_path and file_host_path to check against NULL parameters passed, which sometimes could happend as we've noticed when a new download finishes and the re-hashing subprocess call them... * The transfer's window top bar will inform now which Locator is running, and the number of queues. * Reggae have been integrated into giFTMui, so that users of MorphOS will benefit from this great datatypes-replacement. If multimedia.library cannot be opened, the old subprocess system will be used instead. 2007-06-15 * Added new tools menu option to tell the daemon to update the shares index file on-the-fly from the current session. Note though this is slower than running 'giftd i' alone, since the re-hashing subprocess is launched with priority -1. * There seems to be some little issue with the player process (atleast noticiable under MorphOS), we've changed a bit how it works being the async flag no longer used... * The function which formats the requests to be sent to the daemon have been rewrited from scratch, being moved from amigift.library to the giFTMui sources to be working faster.. * Implemented a new group of objects at top of the transfer window's downloads list which will track the total number of downloads, how many are active, and those without sources. Theres a Lamp as well which will be green when there is some download active. NOTE: Such group will be only visible when there are more than two downloads, and updated (if there are changes) once each 2.5 seconds. * How the Inspector is launched was using a global timer to the given interval, this have been changed so that the interval will be the real time passed between Inspectors invocation. * The debug and socket activity windows has now the ability to clear or save the nlist contents, by adding a new context menu to the custom class which manages them. * The AppIcons feature of giFTMui have been re-enabled. * By the change made recently to the sound system of giFTMui, there seems to be now some issue under MorphOS... atleast it looks like some MOS datatype is buggy on the sense it makes the application to crash if we dispose a SoundDTObject which curretly playing, as we was able to trace with the help of some mos betatester. From now on, and only under MorphOS, we'll create a subprocess to handle the sounds (not the same subprocess we removed the last month, it have been rewrited with the issue in mind), such subprocess will wait to the sound to be fully played before disposing it, and ignoring any new play request it receives while a sound is playing. * The ContextMenu of the results list has a new item which let you be able to BAN the user which returned the selected entry. Thats currently working to the FastTrack and Gnutella plugins, which are the only networks which manages ATM banlist files. Please be sensitive using this new feature, adding (banning) to many IPs may isn't good in the long run... 2007-06-07 * Created a Slider.mui's Custom Class to handle on a nice way all those slider-related objects. for example, now the stats, locator or inspector times will be show with a clock, or the downstream and upstream values will be represented with b/s or Kb/s * Since the beginning, giftd reported transfers progress once each second, being each 60 second forced a report if there was no progress for a particular transfer - those hardcoded values have been removed to let the user the chance to use the values/times he wishes from giFTMui preferences. (mainly focused to users with slower machines which has lots of downloads). There was the prefs page giftd->bandwidth which have been replaced with giftd->tunning where you can find both, to set the bandwidth limit and the reports times (whose accuracy is milliseconds). * The incoming's #?.state files was saved each 10 seconds whatever there is any change or no, this have been changed so that such files get only updated when there is real data transfered since it was last saved. (but still gets re-saved at registering downloads step, ie: at startup) * While working on Compact-Windows mode, the last active settings page isn't set in startup. - Fixed 2007-06-03 * Fixed several hits while a Locator finishes, due we was closing the connection from the recv() dispatcher and removing it from the linked list of socket events (for non-FIOASYNC mode). Also, the Locator receive stub have been adapted to use the new-style daemon parser, being EWOULDBLOCK (resource temporaly unavailable) handled corrently for FIONBIO connections. * The Inspector was not properly automatically started when there is a Locator running (by user). - Fixed. 2007-05-31 * Cleaned up the code to event sounds and players, being the objects stored on allocated space rather than on the stack. * The percent completed (to the trasnfers list) was wrongly calculated for biger files (>= 1000MB) - Fixed. * While downloading a file with several sources, the string to the Status field could be wrong (for example, telling 'Queued' while indeed we are actively downloaidng it), Fixed. * While sending a LOCATE query to the daemon, we'll no longer use the protocol() tag to specify at which network the request should go, keeping that decision in hands of the daemon and not giFTMui. 2007-05-27 * The sound system of giFTMui no longer creates a new subprocess to play the sounds, it is now handled from the main task, since at least using v41sound.datatype isn't needed (creates its own subprocess) ... let us know if you notice the giFTMui task sleeps while playing a sound, and which datatypes do you use. * There seems to be some issue under OS4 at time of closing the chat log at giFTMui shutdown, hence we decided to change how chat logging is handled, previously at time of writing a chat line we checked if logging is enabled, we'll now use a hook which automatically opens the chatlog file at time the checkmark is enabled and/or the file location changed, so that when a new chat line needs to be writen we only have to check if the filehandle is valid, avoiding as well to use two GetAttr() on each function call... * Added two new menu items at giFTMui to 'Read From Disk' ALL core settings as well to 'Save To Disk' ALL of them, so that you can use these to load/save all plugins and daemon configs files into giFTMui at once!, specially useful to the change made the last day where you was needed to use 'Read From Disk' to all. * Fixed a bug on the Inspector which sometimes failed to select the nlist entry it should start to locate sources for. (really the bug wasn't on the Inspector itself, but on the method we was overloading to switch the entry selection between downloads/uploads lists, which have been changed to a hook..) * When used 'Last Saved' giFTMui's settings, we just reloaded ENVARC:MUI/giFTMui.cfg which could end on some error if you changed (and saved to disk) some of the daemon/plugins config files, we was in a little doubt about if we should allow the user to choose between reloading from disk all of them, or instead save all of them to disk with the copy of the settings stored into envarc:mui/giftmui.cfg ... we decided to (transparently to the user) reload all of the daemon and plugins config files, since after all those are the really 'last saved' files... 2007-05-25 * ++++++ IMPORTANT NOTICE +++++++++++++ For consistence on mui objects creation, the ID assigned per object have been changed, we was using previously common functions which used an incremented number as ID on each new call, we'll use now statically defined IDs. Hence, manual deletion of the file ENVARC:MUI/giFTMui.cfg is REQUIRED, same applyes to the file AMIGIFT:data/defmuisettings.cfg - Also, since the giFTmui.cfg file needs to be deleted, on the next giFTmui's run you'll need to use 'Read From Disk' for each of the plugins you're using, apart reconfiguration for giFTMui settings itself, obviously. * The gifTMui's preferences page 'History' have been removed, as it was containing just threee objects, them was added to the group of objects from the 'main' page. * nlist sorting for transfers lists were broken. - Fixed. 2007-05-20 * While giftd is exiting, calls to gift.library's free() function (used by the whole system) will be blocked, so that the memory isn't freed, this makes giftd exit stage considerably faster (specially when Gnutella is/was running), we can do this safely because 1) amigift uses a common memory pool, and 2) because giftd auto-expunges gift.library from memory, so that the pool is removed and hence all memory used gets freed successfully. * giFTMui player function didn't worked properly reading dirs which are softlinks (like for 'downcheck'), - Fixed. * Increased the time giFTMui waits to the daemon to be reloaded, from 16 seconds to 28... 2007-05-15 * 'downcheck' is now able to preperly use softlinks for both files and dirs, previously only files was handled properly by Examine()'ing Zero-size files to obtain the real size, now we'll use ReadLink(). * How to cancel a Locator for a download recently finished have been changed, previously we waited to receive notification from the daemon, now we'll abort it just after you cancel it. * Another nlist parser which have been improved to be working faster, this time for the download's sources list, which you can access using the downloads list context-menu .. * The amount of memory used to the re-hashing process was 60MB as maximun, being 4MB to remain free - Those values have been changed to 20 and 6MB respectively, there was fixed a issue which has made to allocate all free memory if it's less than that 4MB * Fixed a bug disabling 'SendQueue' option while we are connected to the daemon, we'll check now if there are pending requests to send them, so that they are not lost in space.. 2007-05-10 * Reworked how network images (logos) are loaded, now just the logos for the plugins currently installed will be loaded and used. Hence, we'll check now the contents of the AMIGIFT:PlugIns folder and the network names will be stored on an array we'll use later to generate dynamic-oriented objects, thats indeed how giFTMui should (and will) work for everything related, to not depend on the plugins we currently know, so that when a new plugin is available giFTMui needs not to be recompiled to allow that new plugin. For now just a few objects uses this method, but on future versions we'll integrate it in the whole sources. 2007-05-08 * Rewrited from scratch the NList parser to the downloads/uploads transfers, indeed it should work lots faster than before! * Fixed the transfer's chunk progress, whose objects didn't worked properly while multiple transfers are active, due we was creating a 'chunk progress' custom class object for each of the transfer lists where the right action is to create a custom class object for each of the active transfers. If you are running too many transfers at once, plus on a slower machine, may you'll like to disable such feature, to do that just add 'CHUNKPROGRESS=NO' to the tooltypes list. * Related to the two changes above mentioned, the downloads/uploads NList parser have been moved from the Construct Hook to the common list custom class, this helps creating on a nice way the chunk progress objects to all the available lists (on the same way all of them will inherit the same nlist "image" objects), those lists are the ones from the transfers window, the monitor lists, and the 'cloned' lists. * There seems to be some issue trying to adding new sharing paths from the giFTMui preferences window, it should be fixed now. 2007-05-01 * The string-history custom class will check now if the last inserted string is the same the one we are about to insert, to "avoid" duplicates. also, the number of items displayed have been changed from 10 to 25 - Thats the mui class we use as replacement for the default MUI's String class, used on various places, like for the search string or the chat, where you can click RMB to access its history. * The maximun timeout value for Locators have been increased from 3 to 10 minutes.. * The downloads/uploads monitor windows didn't worked properly since we changed the daemon parser. - Fixed. * Improved the Filters check routines to be somewhat faster by using inlined functions rather than amigift.library's functions. There was fixed a bug as well which has make the filters unreachable when it is enabled after you re-run giFTMui. * We was still unable to upload through OpenFT due the HTTP reply version is set by using a float number, and we was using the Locale's DecimalPoint, which could end as malformed request if your Country's decimal point is not a dot. - Fixed. * Some minimal giFTMui/amigift.library fixes here and there... 2007-04-24 * While using multi-lists, if you start a new search on a list previously used, it's title gets no refreshed until some result is received - It should be now right after you click 'Search' * Info's gauge for number of search results being received worked with single-lists only, it should work now with multi-lists as well * FIONBIO's Send Queue didn't worked properly due a bug in the function which checks for already queued commands, it should be working fine now, being also improved. * Recording of last used tabs/pages on multi-lists mode didn't worked properly since severals revisions ago, it have been rewrited to be working fine now, this feature is to let you go back to the last seen page, while working on multi-lists mode, when you remove one of them. * Previously, when the maximun number of results is reached, further addition of results for that session is disabled, so that just the exact number of maximun results defined by you are displayed. This has been changed to show all available results, even therefore execeding the maximun value. - When the maximun defined by you is reached, a cancel request is sent, there may be about ~100 more search results, which even may exceed your desired, but we think now is the right action to do.. * giFTMui on multi-lists mode, was totally broken on how to automatically cancel a search (by maximun reached, fex) IF that wasn't on the currently active page. thousand of apologizes! * Fixed CPU usage giFTMui uses on FIONBIO mode... since we need to handle socket events on our own, the dispatcher for this job was called from the main loop about 18 times per second..(ejem)... it should be no more than 3 times now... this may need probably some retouch though, since giFTMui was originally designed to work on FIOASYNC mode only.. 2007-04-22 * The 'Stop' button gets no automatically ghosted when search results are completely received (you didnt clicked the stop button) - Fixed. * If a download finishes while a Locator is still looking for more sources, there could be the case the source is being added like a new download for the just completed one. - Fixed. * When a Locator is launched, an alarm-based subprocess is created to handle the timeout, if the Locator finishes by itself (not by timeout) that subprocess is not breaked. - Fixed. * The ExAll() "level" the 'downcheck' functions uses was ED_COMMENT when indeed ED_SIZE should be sufficient, hence have been changed. 2007-04-20 * giFTMui includes a new feature to check your Firewall Connectivity, you'll find it from the Tools menu, clicking on "Check Ports". * While using multi-lists, event notification for PATHs selection get no disposed (MUIM_KillNotify) switching between lists, plus to make this working on a nice way it uses a new hook instead of two event notification (MUIM_WriteLong/MUIM_NList_Redraw) * gift.library have been improved/fixed on how subprocesses are launched and killed, which used to the (re)hashing procedure. If you break the daemon while a rehashing subprocess is running there could be the issue giftd has exited while the subprocesses is still exiting due a missing Wait()'ed state. Furthermore this will *never* happen again (even in the case our code is still buggy) since the subprocesses will check now if the parent task is still running, being auto-suspended if it is not (worst case, dont worry) * Fixed a bug into gift.library/TaskExists which prevented some tasks not to be correctly detected due SysBase->TaskWait is not properly traversed. * gift.library/log_init() will no longer be used by other task than the [first] daemon instance... this may change in the future (if needed) but for now there is some factors which has made us to make this restriction: log_init() and log_cleanup() was protected by a semaphore, in the same way as log_print() (which the function used to write each of the giftd.log lines), well, since log_init() works now on that way, log_print() will no longer require the semaphore, this help us in the case giftd is exiting and cleaning up things while it is owning the semaphore and a rehashing subprocess is still running and waiting to write something to giftd.log (essentially, this is by using platform_cleanup(), it's the function which breaks running subprocesses). Also, to prevent any possible issue, log_cleanup() will no longer use the semaphore as well, but instead it is now executed being Forbid()'ed. * We noticed the function giftd/share_clear() could take long time to complete (It's the function used to clear from memory your list of shares at shutdown, being on a pre-formated/linked-lists fashion), testing to share 3200 files (mostly pictures, ~2GB) it took about 6-8 minutes on a 060 !!.... so from now on calling this function will be avoided...but dont worry, since we are using a memory pool there will be no memory leak at all, but then giftd will need to auth-flush gift.library from memory, so the pool gets deleted. Related to this, we noticed having a high amount of shares is a bad idea... more than 1000 shares we mean, at least by the fact Ares is [almost] unable to connect to the network, due the long time it could take on pre-process the list of shares to send them to the supernodes, resulting on 'Connection reset by peer' errors * Uploads were broken until NOW, finally we've found were was (the very stupid, indeed) bug. 2007-04-14 * gift.library have been "fixed" to no longer use globally declared variables... that was used to the logging, mime, platform, and events specific functions, that could be translated as 200KB less of stack usage.... also, our memory allocation system used a pool and semaphore declared globally as well, that is now properly used from the library base pointer. * fixed some bug on the code which forbids a daemon being run twice, there could be the case where a second copy of giftd tryes to free resources previously allocated by the first giftd instance, apart from being protected by semaphores, thats now protected so that only the task who inited the core has the rights to free everything allocated by itself.. * Fixed a possible bug from the giFTMui's save config functions when a plugin drawer have to be created. 2007-04-13 * giftd has a new command line option: SM=SLOWMOTION/S When you use this switch, giftd will work like before.., else transfers progress will be reported more quickly to giFTMui, even when there is no progress to report...transfers are still no pure realtime by design, remember that. Also, while using this swtich, and how giftd worked to date, giftd do not report transfers progress if there is nothing new transfered/received on a period of 60 seconds, that value have been changed to be 20 seconds now. Side-notes: owners of slower CPUs are encouraged to use this switch, check it and decide for yourself, though. * When OpenFT writes the nodes file to disk, and since it uses a temporal file to write them, we'll check now if that temp file size is greater than 0 before trying to replace the real nodes file... * Some other minimal changes made to the main core components.. 2007-04-10 * Since the addition of the network logos at front of the nlist item, the network statistics for downloads/uploads was broken, - Fixed. * The locators when reporting adding new source uses the wrong field about from where it comes (url instead the user), - Fixed. * The daemon integrates a new feature to avoid sending duplicated search results to giFTMui, its checks are based on four ITEM() fields, following that order: size, file, user, url If the four exactly match, that new item is not sent to giFTMui. 2007-03-21 * The whole core uses now a new memory allocation safe point (aka MagicID) to prevent illegal memory accesses...or thats the intention * The maximun connections (hardcoded) default value for OpenFT have been decreased from 30 to 18....just for testing purposes... 2007-02-13 * Updated Italian catalog to the very latests build-in strings, Thanks to Samir Hawamdeh who did the work, Also added Spanish catalog and fixed Swedish and German catalogs (to be working with giFTMui 2.0) which lacks 2.0 strings translations though. * Events, Players, and Sounds groups from the preferences got unaligned while using a catalog file, Fixed. * While checking for the required 3rd part resources, if some isn't found we show a requester, and our own requesters check for some variables which since thats at the very beginning of the execution aren't properly initialized yet, that could cause a severe application crash - Just fixed, sing * Another bug which have been fixed is about the splash window image, If the image cannot be loaded via GuiGfx.mcc for some reason, we fall back using a no-op hidden object as replacement due a common global function being used, this is a wrong function usage to the splash window since the addition of the program version being draw on top of the image - we'll forgot such thing if the image does not exists, or exists but direct GuiGfx usage cannot load it. 2006-12-10 * Reworked (once again) how the daemon is (re)launched from giFTMui, the function is much simple now, and being called from a subprocess which makes 'Unlink from Stack' feature unneeded (which seemed to cause trouble on some systems), also, unlike the previous function, it will work silently until finished (no more annoying requesters..) * Thanks to framiga by a comment by Ken on aorg, we have "fixed" the little network logos, they may need some retouch still tough. With the logos partly fixed (looking better than before) we have added them to be show on the results list for the 'network' column, as well on the downloads list. * giFTMui results list's parser have been rewrited from scratch, it should at least work faster... in addition to make results insertion faster the filters check can be now completely disabled which substantially will increase the speed results are inserted. By switching the search panel to the vertical mode, and opening the "Filters" field, theres a new chekmark to enable it (it is disabled by default now). * giftd: fixed a 'divide by zero' bug while using indexonly * gift.library/giftproto.library: some little optimizations against NULL pointers and removed some assert() calls ... 2006-10-20 * gift.library wronly reported a daemon task already running when indeed there is no such instance, Fixed. 2006-10-16 * There seems to be a bug on the AmiTCP v4 kernel based TCP/IP Stacks while using asynchronous sockets (Well, IMHO it's a bug on the kernel itself and not in the application(s)..) and more than one single socket is used from the same task (short story). Hence we've forced to create a new method to manage connnections from giFTMui, which is not other than the common WaitSelect() way. non-Miami(dx) users are strongly encouraged to disable FIOASYNC from the newly added 'sockopt' preferences page (giFTmui-Prefs->giftmui->sockopt) * If a second daemon task is launched a serious condition about gift.library internals being accidentally freed could happen, this have been fixed being just a single daemon instance allowed to be run... apart that, there shouldn't be any problem from 3rd part programs using gift.library, at least for certain functions since not all are threads-safe...but those which aren't safe are really only used from the daemon..sing * Updated the FAQ with questions from our ML, Thanks to Philippe 'Mrod' Bovier, who did the work. 2006-09-13 * Under Genesis, the function gethostname() seems buggy somehow... at least according to the autodoc if all procedures to obtain the system hostname fails it should set "localhost", which isn't set making the chat connections to hang due an incomplete request sent (due the missing hostname, obviously), that should be fixed now. * Locators do not checked for the 'max sources' value, Fixed. (and we have noticed that using more than 20 is a bad idea, on most cases..) * The Width for the results list columns aren't saved upon exit, Fixed. 2006-09-08 * There was detected some kind of bug saving the daemon/plugins config files from giFTMui while using MCP's CopyMem() patch... what happens is just that appears some garbage at EOF, we have "fixed" it from amigift part just avoiding to use CopyMem() but we have not clear at all if there could be some other(s) issues while using MCP... * giFTMui requires now bzlib.library version 2.0 to be installed, which is available from our site since some time ago, this Version should be working better and fastest * The transfers sources list window lacks a ID which makes it not able to snapshot his position etc, Fixed * Fixed some pointer mismatch issue on the internal blacklist routines, which used when clicking a file to be downloaded. * "Improved" (well structured) the giFTMui's parser to the daemon commands, and fixed some little issue which makes certain packets unrecognizable at some step... 2006-08-09 * Created a new system to launch our Alarm-based Timers which surely will not have the know AllocSignal()'s failure issues... Thats just creating a new process to manage the alarm timeout and reach accordinglyto invoke the appropite callback function or mui method. - plus, it will no longer cause the giFTMui task to die due a failed assertion, now the user will be informed of the real issue which caused a failure (which could be any of: out of memory, failed openning the timer.device, or a break request was received..) * While using "giftd INDEXONLY" the daemon will check if the AMIGIFT: assign exists, automatically assigning it if it does not exists. * There could be certain cases where a daemon/plugin config file isn't saved properly to disk using giFTMui, thats because we used strdup() on the retuend string from xget() without checking if the option is set (the string object is empty), our save-file funtions avoids any further issue caused by out of memory or null strings, but the user is not informed about a missing option and/or about the config file may is incomplete.. It should be fixed now. * The bind() test of the reload daemon function can't be never successful due the "Unlink From Stack" addition... Fixed. 2006-08-06 * Optimized the hashing functions which used to generate the shares index, check this out: Hashing a 2MB file give us the following results: - OpenFT's MD5 works about 30% faster - FastTrack's mod-MD5 works about 80% faster - Ares's SHA works about 78% faster - Gnutella's SHA works about 89% faster How they was optimized is *just* based on how data is loaded, and *not* modifying the algorithms!, basically we'll try to load the entire file to be hashed into memory, if the file is bigger than the free memory we'll try to allocate a big enough chunk to work with, keeping about 4MB of free memory always and allocating a maximun of 60MB (while you has lots of free memory it will work faster, else...not) However, to gain an even better noticeable speed up, it will be great if someone out there could provide us of m68k-ASM coded versions for such algorithms (MD5/SHA[1]), we and every amigift user will greatly appreciate it! 2006-08-05 * Reloading the daemon from giFTMui while we are connected to the chat is making the whole sockets events notifications to hang due the task is "paused" on the reload process (short story), as a quick solve, when we want to reload the daemon we'll first use "Unlink From Stack" feature, which shutdown all open connections and bsdsocket.library is closed as well, to later proceed properly to reload the daemon. * Added a progress indicator for when we use "giftd INDEXONLY" to update the shares index, now you'll be informed of the percent hashed, the average bytes per second (just for fun), and the remaining time to the process to end (ETA), this progress is show when using INDEXONLY option only (not when running on daemon mode) and writing directly to stdout (do not matter if you use the VERBOSE option or no) * some minor fixes... 2006-08-03 * Fixed Bug-Tracking Item #1532519, starting amigift it could freezee for some seconds due a blocking sendto() call being used * The chat uses now the same new method to receive data the daemon connection is using, should work faster and/or without congesting the socket.. Also, some minor fixes on the chat has been done.. 2006-07-30 * Fixed a bug on the Online Updater which fail to update some files due a CRC Checksum error reported by analizing not the correct chunk of data... 2006-07-16 * To reload the daemon from giFTMui a timeout-Timer for daemon shutdown chekout is created, if such timer cannot be created for any reason a 'failed assertion' causes the interface to exit completely, This has been changed to avoid the assert()'ion check and instead trying to bind the daemon port should let us know as well when daemon isn't running to be reloaded. Also, such timeout-Timer calls a dispatcher on intervals of 300000 micro seconds, that value has been changed to 700K as well * On a failed assertion situation, the chat tryes to re-connect itself to the server, due a common method from the chat custom class is invoked, this will no longer happen if such method is invoked disposing the class. 2006-07-13 * Recent Ares versions don't report real stats, it's not a bug, at least not on our part. alas, giftd doesn't allow plugins *not* to provide stats, so we just return what the supernode tells us if it's an old supernode then it'll work, if it's not, it won't ... * Stats window will no longer be activated while it is opened/updated 2006-06-30 * Added new options to the giFTMui's MUI Settings, you can now load the settings from disk, save them to disk, restore current settings to the last saved, and restore and/or reset the settings to the defaults. * Fixed a parser error which has made the Gnutella HTTP requests to be incomplete/truncated causing the supernodes to ignore us and hence there was the problem with this plugin not being able to connect on the latest build. Unfortunatelly there is somewhere some other issue which makes the plugin to take long time to reconnect on shutdown connections.. we should assume the problem comes from the "complicated" input and event notifications mechanism, which seems or probably isnt properly ported on the new shared libraries fashion, any help ?... 2006-06-23 * optimized/improved a bit gift.library's logging facility, while using GLOB_STDERR and GLOB_STDOUT we'll check if pr_COS and pr_CES (which fail back to pr_COS when isnt available) aren't the same and hence avoid logging to both filehandlers. Also giftd.log filesize was checked on each write, making a too unnecessary/possible overload... now only every 1000 writes will be checked, which should be ok as the filesize limit is 10MB ... * How FastTrack loads his banlist file and Gnutella loads his hostiles.txt file has been improved. Previously it was just Open()'ing the file and reading line-by-line, to read each line gift.library/file_read_line() was used, which function does "free-old-buffer > read-line-from-file > dup-line-to-memory", NOW we just "slurp" the whole file into memory and process it later internally in one step. PROS: should be working faster CONS: it needs the filesize's memory at once (about ~500KB) * The maximun number of connections which OpenFT guess at startup has been down to 30 (it was 255) ... you can always override that value by using the appropiate option (max_active) 2006-06-18 * How to request network statistics and how to launch the inspector has been changed... there may be now a bit more overload from the GUI but it will no longer require two standalone-signals on connection for the timers we used... * Searches by realm should be now working fine for all networks. * VerifyIncoming tool must be performed while the daemon isnt running, and giFTMui do not checked for that, Fixed. * Optimized how data is received from the daemon... For information, previously we was receiving line-by-line and then processed each line/packet, that data was received reading byte-by-byte until a CRLF is found, furthermore we checked if that was a multi-line string (comming from a "malformed" META data though), which slowed even more the process... NOW we just receive all data available at once, and the data received are procesed internally without congesting the socket... * There may be some situations where a Inspector could not work properly or fail without notice, those are RARE cases though!, What we have noticed is a little problem on the inspector process while a method is pushed to select the next entry on the downloads list, if in the process the user de-select the active entry or select an entry from the uploads list (which action automatically disables any active entry on the downloads list) once the pushed method take action on the next app loop the inspector will fail to continue as it was unable to get the information needed (from the active entry on the list) to launch a locator, at this step the inspector stopped working internally, but to the user eyes it is running (but doing nothing), and thats the only thing we have found buggy on the inspector procedure (at least for now), now if that happens the inspector will be properly fully aborted and in addition the user will be warned of the issue. * Ghosting of the Stop button when it is clicked didn't worked properly to be re-enabled while using multi-lists, Fixed. * Searches directed to the Ares network (by using giFTMui's protocol checkmark) and Locators launched for this same network wasn't working properly due a very stupid bug... the protocol name to be used on a search request and the check for online plugin state is fetched/detected given the network's HASH type, Ares uses "SHA1" and Gnutella "SHA", and on both functions we checked for the three first bytes of the Gnutella hash before than the Ares hash, making request directed to the Ares network interpreted like if what we wanted is about the Gnutella netowrk, FIXED! * Sometimes a Locator cannot stablish the connection to the daemon due the connect event isn't notifyed... fixed...(hopefully!, and hopefully without side effects..) 2006-06-13 * Fixed some string mismatch issues at giFTMui.cd, where updated strings at the build-in laungage wasn't at his time adapted as well on the catalog descriptor. Most important are string numbers #447, #417, #407, #380, #323, #321 where a formatting was changed (%s to %ld or viceversa), also strings #595, #593, #585, #593, #553, #166, #145, #142, #54 and #5 was minimal corrected for typos. * Some users reported a issue about the OpenFT nodes file ends with 0 bytes of size and making on the next run unable to connect to the network, with the need of the user manually replacing the file, well, first is needed to mention that this happens due OpenFT do not stores nodes where we was unable to connect, but theres some factors to consider which that plugin leave out...(ie, dynamic IPs, not a 24/7 node, etc), also I should mention that Im in doubt if theres a bug somewhere since that behaviour do not happens from the first porting of the plugin, or it wasn't reported on the very firsts builds IIRC, so there will be two workarround for now to that issue, 1) the nodes file size will be checked and deleted if his size is 0, forcing the plugin to copy the nodes from the data dir (amigift:daemon/data/openft/). 2) the plugin will check for the enviroment variable DONT_PURGE_OPENFT_NODES before updating the nodes to disk, if such variable is found it will NOT try to leave out nodes where we was unable to connect. NOTE this way of "fixing" that issue is TOO lame and hence subject to change... * Added a new giftd command-line option: TASKPRI/N Obviously is behaviour is to change the daemon task priority, giFTMui has a new slider object to change it as well. 2006-06-11 * giFTMui has been translated to Italian language, Thanks a lot to Samir Hawamdeh for his work. * German and Swedish catalogs contains some issues and has been renamed on the packages until they are fixed... * bzlib.library can be now loaded from amigift:libs/ as well * Starting a new search we will check now if any/some of the networks are online, warning the user if there is no online network and not proceding with the search then. * Default Ares port for giFTMui settings was missing, Fixed. * Requesters Timeout handling and downcheck was enabled by default where the appropiate is to have both disabled at a first run. * some very little internal fixes... 2006-06-04 * Required Lamp.mcc version has been changed to 11.1, which should work as well, as there seems to be some users who hardly find the latest 11.2 ... * On a first clean installation execution, giFTMui complains about it isn't able to load giftd.conf, Fixed. * On giftd's INDEXONLY command line usage, when the daemon is reloaded theres the following error: platform.c:178(amiga_init): FAILED ASSERTION 'active_children == NULL' it has been reported using amigift from os4, and since we dont noticed it from os3 I'm not sure if it is currently fixed... an extra check has been added on program exit (using a destructor) to verify if the internal resources are freed upon exit. * giFTMui's AppIcons facility has been disabled for now to check if theres a problem on os4 causing a grim on program exit. 2006-06-02 * When the user clicks on "stop", the ToolBar gadget will be disabled, as there is nothing else to stop, and enable it again when a search is started. * gift.library and giftd had debugging to the serial line enabled by default, it has been changed to when DEBUG is ifdef'ed. * There was a bug on the preferences's stats slider... fixed. 2006-05-11 * While using FIONBIO mode, the command strings to be sent to the daemon will be checked against being duplicated on the internal queue, this will prevent ie sending multiple STATS; requests when the daemon re-alive after a congestion.... * Added lots of sanity checks on the socket functions, for valid bsdsocket base pointer, NULL strings, etc since, after the addition of "Unlink from Stack" something could happend... 2006-04-25 * Fixed some hit while openening the preferences window due an "incorrect" usage of MUIM_Setup .. * Updated Gnutella plugin to version 0.0.10.1-CVS and removed expire check to retrieve gwebcaches... 2006-04-23 * GIFTMUI v2.0 has been fully localized, about 300 new (not repeated) strings in total, if you wonder.. 2006-04-19 * Stand-By Mode has been (temporally?) removed, mainly due his usage shouldn't be required since the daemon launch now the (re)hashing procedure from a new process and therefore it isnt blocked. * Added a new context menu item for the results lists to browse a user shares list, it is activated when the entry over the mouse is from the OpenFT network which the only network protocol which *may* could return such results. * Some various code cleanups.. 2006-04-14 * If we exit from giFTMui while the downloads list isn't empty there could be a system's freeze due a bug into ClearCache(), Fixed. * The global timer count has been finally removed, the reason is that it wasn't accurate at all (for what we using it), the history for that counter is long.. first it was using the ciaa.resource, later it was using a Software Interrupt, and finally it was moved to a MUI InputHandler of type MUIIHNF_TIMER, but we detected that such handler isnt accurate to count the uptime seconds to have a mark for certain events, that MUI Handler has a retard of 4 seconds each interval of ~10 seconds, the removal of the counter has took just two minutes since atm only three mui methods was still using it, (before it was used to locators timeout, inspector, etc, but they was adapted to use the newly created alarm based timers), such methods uses from now just a inline time()-like function which should be just fine as well... * Some time ago we detected wheres the problem from the Genesis TCP/IP Stack about asynchronous event notification not being handled corrently all the time, it was just because giFTMui uses SocketBaseTags's SBTC_SIGEVENTMASK attribute, as recomends the bsdsocket.library autodoc, and therefore to the opposite of which it says using the deprecated SBTC_SIGIOMASK attribute Genesis hans't problems at all. Since to Miami(Dx)'s eyes seems to not matter what attribute to use (works without problems on both cases) we decided to keep the deprecated one, but todays a new problem comes... the new Native TCP/IP Stack for MorphOS, MOSNet, seems to have a similar issue... such event notification aren't detected at all!. By that reason the SBTC_SIGIOMASK attribute will be used only when genesis.library can be opened, else only SBTC_SIGEVENTMASK will be used (as it should), even if at time of this write isnt clear and/or tested thats what is causing the MOSNet issues... * Added a new item to the Network menu: "Unlink from Stack", this option will close all active sockets giFTMui has in use, and later the bsdsocket.library will be closed as well. This could be helpfull (apart others) when fex MiamiDx sends a SIGBREAKF_CTRL_C signal to all applications which are still using the bsdsocket library, the first time giFTMui receives such signal it will first 'Unlink From Stack' and if it receives a second ^C signal it will exit completely. 2006-04-09 * fixed and improved the main window's transfers gauge progress by using double linked lists.. * Finally finished the Online Updater to the whole AMIGIFT components, thats for each individual library/plugin, frontend and daemon, as well to update the nodes and banlist files for all networks. 2006-04-07 * gift.library/log.c: fixed to use corrent BPTRs from process caller pr_CES for GLOB_STDERR and pr_COS for GLOB_STDOUT, also added log filesize limit to 10 MB. * Removed GetNodes tool (used to get OpenFT-only nodes) completelly. * Requesters timeout value are now settable from the preferences window as well, its initial value is get from the tooltypes firstly, and a option to disallow requesters completelly has been added. * "chat log stopped" msg is written twice to the log on exit, fixed. * Added InputBuffered method calls here and there... ie, before processing socket events. 2006-03-27 * gift.library/dataset.c: added thousands of sanity checks by using 'MagicID' fields on Dataset * and ds_data_t struct types, even if there could be still some hits on certain cases it should now hopefully make the system alive without further issues, also because the original giFT sources do not checked for NULL struct parameters passed to the library functions, and used them without caution where a damaged memory area could happend... theres the first benefit of using the new allocation system, which btw isnt working properly from gift.library =), but atleast let us reduce the memory used by datasets for about a 68%. Must to mention as well that all assert() calls (~153) have been removed from this file, following ofcourse a recursive trace to the callers, given them a chance to the daemon to continue working without annoying 'failed assertion' requesters, thats indeed something the *whole* core should do, but a single file took me about 3 hours to fix everything, so how many damn time I'll need for the others 200 files... * gift.library/strobj.c: fixed and improved string_appendvf() function which sometimes writted +1 bytes of the buffer length (our allocation system reserved already enought room, but this behaviour was buggy anyway), This function now also uses the global semaphore since static data is used (a fixed fmt passed to RawDoFmt()) * Removed usage of unneeded "constructors" and "destructors" from the libraries and plugins. 2006-03-26 * The TCP/IP Stack is now detected on the oposite way to activate FIONBIO (non-blocking) sockets, before we just check if an AMITCP port is available, now we only check if a MIAMI.1 is, the reason for this is that todays have been release new tcpip stacks which are all based on the AmiTCP API and since Miami(Dx) seems the only stack which DO NOT have problems with AMIGIFT..that change should work fine for all now.... * When a new Timer request could not be created it shows a requester to inform of the error, This end up on a endless loop if the timer which can't be created comes from the requester timeout feature, its fixed now just showing the error to the debug window. * The global timer count was automatically started and stoped overloading MUIM_Setup/MUIM_Cleanup from the 'Advanced Search' custom class, when we replaced this class we forgot to move the timer making certain events unreachable, Fixed. * Updated Ares plugin to Version 0.3.0, fixing some illegal abort() calls and added meta data tags for various AmigaOS-only filetypes like lha, iff, etc * Added some background colors to some preferences groups, fixed also some inner spacings and incorrect usage of Label2() for Checkmarks were Label1() must be used... * OGG Vorbis support has been (temporally?) removed from giftMeta.library, the reason for this is that new additions on our stdlib has make this lib dont loading itself no more... there seems to be some kind of conflic with his constructors since giftMeta was the only component which still used libnix, however I dunno for sure what was the real problem here, I only know atm that removing libnix completelly the library works again :-/ 2006-03-12 * libraries are now loaded from anywhere, thats first from CurrentDir, then from HomeDir (if isnt equal to CurrentDir), and if unsuccesfull fail back to standard system's libs directory, for each lock we check on the root as well into a "LIBS" subdirectory. * our amigift's stdlib (standard link library) lacks a essential feature until now, reallocating the programs stack space to fit the needs, this has been fixed implementing a basic expansion method using Exec's StackSwap() ... * The memory allocation routines using pools have been replaced, the only real benefit about this will be to the developers thanks to his internal debugging capabilities, which are more sofisticated the olders we used from amigift.library. * daemon and frontend have been adapted to use a new Local files location, that is "amigift:daemon/Local"'s contents must be moved to the parent, nothing more. 2006-01-05 * The standalone AMIGIFT: assign is no longer needed, giFTMui will assign it automaticaly on startup if such path is not found. * giFTMui uses now a dimanically loadable plugin names to the search protocols, loadable from amigift:data/protocols which contains a network name by line. (editing that file and using only relevant plguins to you will result on a less height object as well, if you want to, but that file has nothing to do with the daemon plugins, thats just for when you want to search at specific networks). 2006-01-04 * giFTMui launches a new Timer request when a MUI_requester is opened, the default seconds to wait is 45, once timeout the requester will we automatically closed (selecting 'cancel'). This will prevent "annoying" requester from blocking the gui when you're not on front of your computer.. That default value can be configured using the TOOLTYPE: REQTIMEOUT * Added clipboard, console, and printer devices functions, printer and console devices aren't used right now but planned for further improvements.. 2006-01-03 * Added some giFTMui's AppIcons to the common working status, thats downloading / uploading / both, online / offline. (On startup we check if the daemon is running, if it is, the appicon is set to Offline, if isnt, the default program icon is keep) * Removed 'Advanced Search' popup object and created a new mui class on which you'll have two appeacence panels to the searchs, the single one (like before at bottom of the toolbar) and the new one at left side of the results list, which uses a virtual group to fit nicely from here, as well another class created (EGroup, short for Expandible Group) inspired on Windw's explorer menus... EGroups are used to the realms, protocols, and results filter, which are the objects previously on the 'Advanced ...' popup. From now the file advs.cfg are no longer used and you can remove it safely. Both search panels are switched using the arrow images. 2006-01-02 * Improved our cached-strings class, (used ie on the search string object or the chat), they has now a context menu where you can pick last added entrys (apart using the arrow keys), as well save them on exit to be loaded on the next run. 2005-12-16 * Added a new giFTMui's InfoBar at main window bottom, with two huge lamps and the info string itself. one of the lamps is the previously added as giFTMui Status marker, the new one will indicate a daemon's share sync/rehashing process, and the informational string will be used to daemon-issues only, thats subject to change however... 2005-12-11 * Implemented a thread-like system into gift.library. The index/hashing of your shares and/or completed downloads (on Share Completed mode) will no longer block the daemon!. Those threads will be launched on the background with priority -1 so the system doenst grind to a halt. * Fixed some WaitSelect() issues (mainly noticeable on AmigaOS4) where a wrong descriptor is used.... 2005-11-30 * Changed MUI's ObjectIDs to the prefs, which mean you MUST delete/rename your envarc:mui/giftmui.cfg file before running giFTMui now (just once, ofcourse), and regenerate your preferences, dont forget to do it or things will not work properly! * Removed usage of getopt() from the daemon to use ReadArgs(), the commandline arguments are now as follow: H=HELP/S, V=VERSION/S, I=INDEXONLY/S, P=PROTOCOL/K/M, Q=QUIET/S, VERBOSE/S, DEBUG/S, L=LOGFILE/K, HD=HOMEDIR/K, LD=LOCALDIR/K, DD=DATADIR/K, PD=PLUGINSDIR/K, AB=ASYNCIOBUFSIZE/N Use the HELP switch to know more about them. giFTMui's prefs has been adapted to support some of they, as well a CONSOLE option has been added which will use the VERBOSE switch to output the daemon logging to the given console (mainly to debug purposes and/or read interactively what the daemon is doing internally)... * Implemented usage of asyncio.library on the daemon for the downloads. This library is now required!. The internal buffer size asigned to AsyncIO has been set to 32KB, which you can override using the AB commandline option, or ofcourse from giFTMui. * The networks status lamps worked just as On/Off, now the networks which you chossed to have active from the giftd prefs will have a initial yellow color, when the network goes online will be green, and the rest, which arent selected on the prefs, will remain with the black/off color. * .Cache items which are no longer on use arent removed on exit if the downloads list is empty. Fixed. * OpenFT's max_active guessing value has been fixed to be 255 as max for that network connections.. that value is used when max_active is set to -1, change it if you want.. a value of 40-64 should be ok as well... 2005-11-18 * Added a new huge a lamp as status for what is doing giFTMui internally, for now SendingData/ReceivingData Loading/Saving Connecting/LookingUp are supported, which remember its colors are configurable from the MUI prefs. 2005-10-03 * On completed downloads, giFTMui just checks the downloaded file from the completed folder (to play it, or add the URL as comment on the file), but this is wrong since it dont consider if the downloaded file may be corrupted and moved to that folder, now you will be warned as well on those cases.. 2005-09-16 * The Transfers List(s) has been improved, working as follow: - When the 'status' field is 'Active' the porcentage transfered is showed. - When the 'chunk' field is 'Active' also, the text is replaced by an NList "Image" (area obj) which graphically paints the tranfered chunks, if the chunks for a transfer are as follow: 'chunks = 1661274-1761590 5023086-5234266' those ranges are filled with a rectangle, using MUI's HALFSHADOW pen, when a chunk (whole range) is complete the pen is changed to FILL/MASK, and so on... Unfortunatelly, on how works the daemon, if we download various chunks from a same user, the previous chunk is erased from the list (command line returned from the daemon), and therefore we can't mantain a correlative filled rectangles, (or, the same applyes if we restart giftmui when we have active/pending transfers), and in that case (if the total transfered bytes mismatch from the sum of all chunks) the background is filled using HALFSHINE pen (just like a gauge does). However, to make a correlative painting, just a little cache system is needed, but we keep just as-is for now, until we check if that could produce or no an unnecessary overload... 2005-09-10 * Fixed creation of cache files when the .Cache folder doenst exists. * sharing root paths file is readed just after creating the prefs object class instead at opening the preferences window, therefore FBrowse should work properly now. * How the daemon is launched from giFTMui has been completelly rewrited, we use now a properly SystemTags call using ExitCode Tag to detect when the daemon exits itself succesfully (that previously was intuited..), also we use now mui's methods to the Application class dispatcher which allow to remove everything on a system-friendly fashion when a fatal error (a failed assertion, out of memory, or something) happens. 2005-09-06 * When a connection to the daemon failed and we aren't using 'launch on startup' a check on the incoming folder is performed to verify #?.state files, this has been removed from here and moved to the tools menu, now you decide when to do that check (its really needed only if the daemon didn't exit properly, due a failed assertion or something.., and there was pending downloads on which case may the files #?.state are keep as #?.state.tmp and on the next daemon run they aren't recognized. -- erm.. however this should be made by the daemon itself. . . 2005-09-04 * Removed timer.device's software interrupt and created a new complete timers system based/inspired on unix's alarm() behaviour. pros and cons: new timers-system uses UNIT_VBLANK precission and softint used UNIT_MICROHZ which overload the system since we used it to count seconds only.., also the seconds counted was stored on a variable which as well was used as marker to manage all timer-related events..(yeah, very wrong method, I know now :P) overloading even more the system at mui's loop procedure... New timers-system should overload much less (or, no overload, better say ;) ... For the main seconds counter we use now an MUI's InputHandler of type MUIIHNF_TIMER, when a connection to the daemon is stablished we use the mentioned alarm-based timers to receive networks statistics, to manage Locators timeout, and detect Inspector intervals. * As you should already know, the transfer progress inserted on the downloads list comes from the first source on the string/command returned by the daemon, firstly I thought on doing that action to avoid the parser being overload scanning the whole string, but this could become on mistake from the users thinking a transfer has finished when indeed did not, and therefore wondering that is a bug on giFTMui... by this now the whole sources are scanned looking for an active status or the end of the string is reached, I fear what could happend when a transfer has about 20 sources and the last is the active... but, even if that could end on a high overload parsing downloads progress, is the right action which should be performed. * Due the above mentioned point, cloned lists (like main-window's dlist), can be deactivated, using his context-menu, you decide if you want that extra overload... 2005-09-02 * optimized logging functions (info gauge, debug, chat logger) * fixed downcheck paths issue... 2005-09-01 * The whole core ISN'T using LIBNIX**** We have "created" our own 'standard library', as replacement for libnix, from sources from various places as well created/optimized by us, check the LICENCE amigaguide's section for more info about from where they comes, however some of those sources comes from the libnix distro as well, for functions like setjmp/longjmp. The main advantage for the usage from this library is that it isnt using unix-FILE I/O since amigift do not use it (we use dos.library directly for quite all related) and therefore there should be a noticeable speed up for strings parsing (ie: vfprintf->vsprintf) 2005-08-23 * Since no more than one Locator is allowed on the current version, if you try to launch a second one you will be asked to abort whichs running actually and launch a new one for the selected transfer. 2005-08-22 * in case you disable the chat there is a new message which allows you to connect later if you want. * added more blank spaces to the embeed giftd.conf (compressed into amigift.library, by using bzlib.library) for the sharing roots. (about 20000 chars, hope its enought.. ;) 2005-08-21 * Splash Window was closed once tha main window receives a MUIA_Window_Open attr, this has been changed to be closed just before the mui loop since beetwen that Splash Window is closed and the Main opened could take some seconds.. 2005-08-19 * giFTMui has a new option to check if the running TCP/IP Stack is online, and therefore calls to gethostbyname() wouldn't block if you're not online. active it from main giftmui prefs at page bottom. * The popup string for sharing roots has been changed to accept unlimited number of paths since that is allowed by the daemon. * added some "hacks" to use customclass's objects.. this isn't legal for mui classes since objects can't be shared outside them, but well, since they aren't externally loadable who matter... (this should speed up certain loop jobs, ie. inserting items, transfers, etc..) 2005-08-18 * amigift's core, libs and plugins, implement a new method to failed assertions behaviour, previously the whole core is suspended, now it uses setjmp/longjmp to set and jump to a working stack frame when something went wrong, I dunno how legal is this to the system.. (by being called from shared libs), but firsts tests passed OK and even if its/could be still buggy should be better the previous method on which you was forced to reset. * The transfers's downloads list has been added/cloned on the main window, it is (de)activated by a gauge-based toogle button at results list bottom, that gauge button has four pixel height and therefore shouln't be annoying if you do not want to have it activated. Also that gauge has another nice feature, it is global counter for active downloads, it computes total size, transfered and average cps, 'Estimate Time Arrival' and the number of active/pending/queued downloads, that gauge's behaviour is activated by using his Context Menu. 2005-06-22 * Added new tooltype 'COMPACTMODE', which creates the main window on a page group fashion to show all primary windows (transfers, debug, chat, prefs) from the same main window. * If the chat can't connect succesfully the nlist object is replaced with a new informative object containing a button to reconnect... 2005-06-19 * Added two new giFTMui options to the results list, they are "Insert Sorted" which insert items using MUIV_NList_Insert_Sorted and "SpeedUp Insert" to use MUIV_NList_Insert_Flag_Raw. (refer to the NList.mcc docs for more info). * The string "[ 00 | 00 ]" at right pos of the info-gauge, which inform of selected entrys and his sources, are now showed on two differents TextObjects. * The results on multi-lists functions have been completely rewrited, custom-class based, accepting unlimited number of lists and some others enacements, ie. number of results for a search no longer shows on the informative gauge when there are more than one simultaneous search, instead it uses the page title, as well if the list isn't active and new items are inserted its page text color change to white, if ends changes to black-bold showing the size of all items on the list, etc 2005-06-03 * Inspector, Locators and Chat NO LONGER uses a new Task!, this should make the client work heavily more stable, with the "bad point" that the main task may notice a bit more overload... (however thats subject to change once again just to allow creating tasks if the user wants it, just request it) * Optimized giftmui's network functions, everything is supposed to work just fine... (atleast using Miami(Dx)) * Networks Logos are now externaly loadable (no longer linked with the executable) via datatypes.library/iffparse.library. 2005-05-12 * Configured shortcuts for menu options and added a new option, as suggested by Framiga, to allow save settings before quit. 2005-04-29 * Added/replaced math functions which now supports 64 bit integers allowing upto One ExaByte (1152921504606846976 Bytes). (for now the unique advantage of this is when showing the size on bytes on the various nlists, which previously there wasn't ok with filesizes >2Gb) * Replaced Networks statistics window by a new one using a more likely NList Object to show the data, also added four new fields, "size by file", "files by user", "downloads", "Uploads", which will show (as you can deduce by the name) the average size of each file the network owns, the average amount of files each user is sharing on the network, and the number of downloads and uploads you did on the network, respectively. 2005-04-15 * Cleaned up amigift.library's unused functions, that is some unsorted implementations we created and at the end not being used for one or other reason..., this means that the library is totally INCOMPATIBLE with olders versions, however there shouldn't be any end-user problem because the first library function at offset 0x1e has been preserved (__init_amigift(), which just return NULL), so the user will be warned if he tryes to call this (no-longer used) function from a old client. * gift.library's platform_init()/platform_cleanup() ISN't safe because could be the case that two processes call them... fixed. (adding for the job a new semaphore. The same behavior applyes to libgift_init() and libgift_finish() but those functions shouldn't be used more than once instead those platform_* which should be able to be called anywhere anytime when some of the platform globals are needed by clients..., as an additional note: those platform dependent functions should be further reworked/renamed since we should assume that they will be no longer used outside an AmigaOS enviroment). * Everything has been compiled with latest libnix. and giftmeta.library with latest vorbislibs optimized for 020 and 060 using -O3. 2005-02-13 * When giFTMui worked with normal objects functions and/or created at application creation time, everything was using hooks to launch each action, this has been changed to use respective methods/attributes for each new custom class. * giFTMui is able to use TearOff MUI Class on the main, transfers, and monitors windows. However that class seems a bit..buggy... it may freeze your system while you are moving objects, on that case you can use SmartCrash to intercept illegal accesses..and be able to continue. Once you have configured your own interface there is no need to use SC (but I recommend you to use it always!), and you can enjoy safely..your new giFTMui's look. To activate TearOff.mcc you must set to 'YES' the TOOLTYPE 'TEAROFF'. Also, you can change the ToolBar from a horizontal bay to a vertical one, but looking horizontally... to look really vertically it can't be done on-the-fly just changind an attribute (why? ask the author), and the toolbar object must be re-generated which is buggy ATM... if you want you can try and see yourself how is working setting the TOOLTYPE 'TOOLBARHVERT' to 'YES', what happens is that the toolbar object isn't always properly created and we hope to fix it soon... 2005-02-11 * improved putmsg() routines used by the subprocesses and added some more debuging messages. now the tasks will not continue if the message wasn't received and/or processed correctly... 2005-02-07 * amigift.library: re-enabled startup initilization for all needed resources (at LibInit() stage) * Created a global/common NList parser (using the formatting the daemon uses to send his strings). * HistoryLoad() Optimized (which should load the transfers history more faster), also size parameter to InsertHistoryItem() has been changed to be ULONG (which could make problems if the lib is used on a older client). * giFTMui's file browser no longer creates a new task. 2005-02-04 * The whole MUI Interface (well, ~90%) is now using custom classes for everything, instead static objects.. as well, a Splash window has been added which shows the progress of creation for "everything". (This Window can be (de)activated using the TOOLTYPE 'SPLASHWINDOW') * Context menus on the monitors has no effect, so we removed it (its a monitor after all). 2005-01-23 * dataset.c: removed all abort() calls which just do problems on gift.library, using for now traces to ensure there aren't other(s) problems by doing that. * Fixed some hits generating the shares db file... * Now the daemon check on what filesystem the incoming dir is on, warning if it isn't a SFS/PFS partition. * Current amigift.library's strdup() implementation is forwarded to gift.library one (like all allocation related functions), which has made problems due the original one wasn't allocating an additional byte as claim the ANSI stardard, so when a string has 0 length and it isn't NULL it returns NULL when in fact it shouldn't, it produces problems/hits when searching, which are fixed now, atleast on that point... * removed assertion check from fst_peer.c(remove_global) which makes Genesis users (!?) not be able to exit nicely. now if the assertion isnt true just returns (which seems fine for his job). * Chat ID isn't cleared properly on exit which makes giftmui task remains (hidden) forever on the tasks list, Fixed. * we forgot to allocate the used memory on the locators when his initialization was reworked, which ofcourse makes them crash horribly, its fixed now. * reworked connect() functions and moved macros to functions... 2005-01-22 * There was several problems regarding subprocesses and how they are launched/killed, how they manages global variables... and what when they are running and the user quit the client... so we decided to create a dedicated msgports system just to do that job properly, each problematic task and/or each which isn't independent (those which need to interact with giFTMui's global varialbes without affecting in any way to this main task), has assigned an ID which is set/cleared when the subprocess start/exit as well when they need to to change the status/attribute/etc to an object, they instruct the main task to do it himself instead try to manage them itself (like PushMethod but more advanced :), which could create certain problems sometimes.. a clear example of this is the Locators, chat, getnodes.. * Changed protocol selection MUI's CheckMark to toggle-buttons including his respective network logo. * PFS3 partitions reported as working on the noixemul version with (apparently) no problems. 2005-01-21 * giFTMui's ARexx port has been reworked, however a little implementation still (commads requests are welcome) * There are parser errors on the chat when the nick used is too long, Fixed, rewroted the whole parser... 2005-01-19 * HubLists which are bzip'ed are ignored, fixed (using bzlib.library). 2005-01-15 * The client has been adapted to support the latest new plugins, also no more unix to amiga paths (and viceversa) conversion is perfomed which means should be used with the noixemul daemon version only. 2005-01-09 * Two new plugins available, Ares (http://www.aresgalaxy.org/), and DirectConnect (http://www.neo-modus.com/), However DC is really unstable ATM... 2004-12-21 * First noixemul daemon version. It has been compiled on separated components for everything, instead all on the same executable. There are giftd (the daemon itself), gift.library (gift's core design), giftproto.library (gift's API to plugins) and giftMeta.library which manages meta data tags. As well the plugins as been designed as they should be... FastTrack.PlugIn, OpenFT.PlugIn, Gnutella.PlugIn, etc. Also, pleased to announce the new memory allocation system (replacements for malloc, realloc, calloc, free) is based on mempools, which will make amigift (hopefully) memory leaks free... but frustrated we have noticed giftd keeps too many..chunks unfreed when they are apparently no longer used, ofcourse they are been freed when the mempool is removed but god know what could happens after few days uptime... however the memory unfreed isn't too much after some hours of use, so do not consider this an impediment to use this nice piece of software :) Unfortunately there are two know bugs on the noixemul conversion, the shares system dont work properly, and the OpenFT and Gnutella plugins sometimes "hangs" itself... 2004-12-13 * Fixed a problem when saving a plugin config when his drawer doenst exists... 2004-11-28ML Release Version 1.1.3 * Reworked ReadFromDisk/SaveToDisk functions, they worked unsafely because just looked for the option name without matter what is the group it is on, when indeed there could be the same option for various groups. * Fully supported Aminet plugin from the client (the plugin itself should be checked his working still..) 2004-11-19 * Added lots of new prefs options, for the daemon and plugins, they are those that are UnDocumented, and shouldn't be normallly modified by the end user... We have added it just to have full control over the daemon from the client. REMEMBER that you MUST reconfigure everything!, best way: rename EnvArc:MUI/giFTMui.cfg and load the client to do so. * Used bzlib.library for the build-in daemon and plugins configuration files which makes final executable much smaller, so you need that lib to "Save To Disk" function. * Created a TODO list. 2004-11-16 * Changed how the daemon is launched, instead of connect at startup and wait for a connection refused now the gui try to bind the daemon's port and if sucessful then run it. * Added timeout to forbid/permit re-assign the socket signal mask. 2004-11-04 * Fixed a bug on the multi-lists which makes last list "unquitable" 2004-10-28Public Release Version 1.1.2 * Fixed hits creating the Cache files.. * Fixed transfer sources list and optimized his NList parser. * Fixed a hit on the chat. 2004-10-26Luca 'Hexaae' Longone * AmiGift archive contains a mangled sample throwing hits with V41sound.dt and its 8svx datatype!. (Zurriagazo.8svx) Fixed. 2004-10-24 * Fixed pointer mismatch when using FilePart() to extract the filename from networks which support files with full paths. * Some Warning strings received from the daemon are lost, Fixed 2004-10-22Public Release Version 1.1.1 * Fixed how the client proccess the daemon command ADDSOURCE(). When adding a source which is already being used the daemon automatically remove/replaces it and the client errnoneously interpret the old one has been removed (if no CHGDOWNLOAD() command is sent between ADDSOURCE() and DELSOURCE()..), theres a big problem when that source is the only one for a transfer and auto-Locators is active, with result as you can imagine... * Improved scanning of the results list to look for more sources, we have noticed out there are too funny people sharing/faking the same file with different name, (which result is applicable to the above mentioned problem with ADDSOURCE() command), on those cases all sources from the same user are added independently, which becomes in a high overload (as high as you has the 'max sources' option) performing the ADDSOURCE()->DELSOURCE() behavior. Now all those loser users are ignored. * Multi-Downloads Counter dont work when 'downcheck' isn't active, Fixed. * Locators being running can be now controlled via commodities. * Fixed GetNodes Tool, and added a 'verify' option which will read your current nodes file to perform some basic report about whats the bigest/lower vitality/uptime nodes and some other info. * Updated AmigaGuide Docs, including History and FAQ sections. * Fixed and improved multi-list names behavior... * Changed ALL %d's TO %ld from all sources (and catalog descriptor) to use (v|s)(n)printf replacements (no more libnix) using RawDoFmt() 2004-10-15 * Fixed a bug on the daemon when it is loaded only to generate the 'shares' database file, which caused a failed assertion... * (hopefully) fixed the bug which avoids to connect to the daemon sometimes when 'launch on startup' is active... reports plz? * ADDED FIONBIO (non-blocking) sockets mode on client->daemon communication, using as well queue sending method. ( unfortunatelly this is disabled to Genesis users until notice) * Reduced SocketBaseTags's DTABLESIZE value to his original size... * Fixed hit $000173C8 on amigift.library ... * Optimized 'Advanced Search' functions. * When a requester pop up a sound is played, but if it shows before the MUI app has been created (failed loading a lib, allocating memory, etc), there are unpledictable results when trying to read the (unavailable) MUI Object containing the sound file. Fixed. * Added kprintf() in addittion to the internal debug assertions checks, and added optionally usage of the enviroment variable AMIGIFT_DISABLE_DEBUGREQS to avoid requesters from being pop up with debug messages. * Listing Shares wasn't possible due the 'Advanced Search Options' checks..., Fixed. * On disconnect (not quiting) if there are pendinng searchs, they are cancelled on the daemon side but the client remains his session number which on reconnect a new list is opened when performing a new search (when using multi-lists and the currennt list is empty), Fixed. * Fixed a bug on StandBy mode which causes the window to pop up even if not connected... (the socket could be != -1 but isn't conected) * When using StandBy mode, if the chat window is open the StandBy remains inactive but closing the chat it isn't reactiveted, Fixed. * ADDED ToolTypes recognition, currently suported are: BWINDOWS (to activate BWin.mcc's windows, same as using envar GIFTMUI_USING_BWIN which you should remove now), DAEMONWARNS (to insert in the debug window warnings sent from the daemon), DEBUGREQS (as above mentioned to disable reqs with debug messages), and FORCE_REHASH (the same as using the envar, the daemon shouldn't be runnng (when you start the gui) to this to work). If the tooltypes could not be found default values will be used, that is: FALSE, TRUE, TRUE, FALSE, respectively. * Optimized parsing of default prefs values. 2004-10-08 * ADDED Feature to know how many sources has the file you selected from the results list. (Support Request #1041687). A new field will show at the right on the info bar, Something like "[ 01 | 07 ]" this means you selected a file which have 7 sources. * Rewrited the function which parse the (Transfers) Sources list. * Visible (results list) columns aren't properly saved, Fixed. * Fixed a bug introduced on the new nList parser used for the Transfer in progress which pointers (the string received from the daemon) are lost after use... it affected to the DL/UL Monitor and the Sources list. * When a upload goes complete the size stored on the Transfers Statistics comes from the total size, but it isn't the real size uploaded if it was just a chunk, Fixed. * Fixed a nasty bug introduced on the last version due the function _GetSession() which was optimized and changed to not allocate his own pointer on memory, it affects to the multi-list system and Locators. * ...and some minor internal fixes/optimizations. 2004-10-06 * Corrected Locale strings numbers in ascending order. (after removing some of they non needed in .cd/.catalog) * Added German translation, and fixed Swedish catalog. 2004-10-04 * Fixed low stack size for MUI's NList.mcc class. * Changed error message returned when failed opening amigiftt.library to match exact library version needed. * Removed assertion check into _getConfigStr() * Rewrited windowTitle and onlineLamps functions, which should work faster and safe... * Clicking twice on the stats window both pop up but the first one can't be closed, Fixed. 2004-10-03Public Release Version 1.1 * Resources updated on the full archive. (thx to Kevsamiga by maintain a uptodate list of latests versions) * - Updated Daemon to Version 0.11.7 * - Updated OpenFT plugin to Version 0.2.1.4 2004-10-01 * Reverted context menu function to old method... * fixed a nasty behavior on the new bubble function.. * some minor fixes and optimizations... 2004-07-09 * The field Transmit inserted on the Transfer Window comes from the last source, it could make misunderstanding leting us to think there is no data downloaded when in fact there is it. - Fixed. * On daemon startup your sharedir is scaned, and if there was any change and/or addition that file is (re)hashed, thats so hatefull if you have lots of files, since, even if rehashing isn't needed all timestamps are compared, to avoid that frustrating situtation the operation will be perfomed *only* if you set the envar: 'GIFTD_FORCE_REHASH_ON_STARTUP', and if you own a low processor is recommended that you never uses it, instead launch 'giftd -x -v' after a fresh boot. Now the startup isn't instantaneous since the shares db must be loaded into memory, on my 060 less than 2 minutes to parse about 4000 files and 2Gb (consider the time depending the number of files) * Added 'available plugins' to About window. If the current plugins could not be obtained for some reason.. defaults at compile-time will be used. * Rewrited (main nlist) bubble help and context menu functions. * Fixed a bug on Gnutella, when parsing meta-data tags, which causes the daemon to exit itself without futher notice/error message. * auto-disable 'scan files' if the item do not have a HASH value. * Optimized 'Read/Save from Disk' functions. * fixed a hit on the new nList parsers. 2004-06-28 * Removed CIAs usage. (now the client should work on the next Amiga compatible platforms, MorphOS, AmigaOS4...) * The chat uses his own MUI application. * Rewrited exit method.. (which should fix subproceses troubles). * Rewrited event, sounds and player preferences groups. (they looks like before but the creation/loading is fasster). * - Updated FasTrack to Version 0.8.7 * Some minor fixes/optimizations/cleanups ... 2004-05-30 * Optimized Transfers and Results NList parsers. they should work alot faster, safe and with less memory consumition. (to insert a 999 results list was needed about 8/10 Mb, now the needed are about 3!..) Note: newly added meta-data tags are appended to the comment field. * Added debug and safe modes to some amigift.lib's functions. * Networks statistics keep no more main window slepping. * Fixed chat window corruption with p96 users. * CManager is no longer required. * Fixed some hit on GetNodes. * Some chat improvements.. * Fixed a bug and optimized CreateCache function. * Supported MESSAGE command (sent by the daemon). * Fixed a bug on Stop (Transfers window) procedure. * - Updated OpenFT to Version 0.2.1.3 * - Updated FasTrack to Version 0.8.6 2004-05-09 2nd bugfix update * Fixed ramlib trouble, which on systems without a ramlib-stack-patch causes amigift to freezee on startup, now the purpose of such a patch is performed by amigift.library at LibInit() stage increasing the ramlib stack to 16KB...and loading here everything* amigift (and third part resources) needs to work properly (even if not used at this point), as well checking for latest versions. * Fixed the issue which causes amigift/giFTMui not be able to be loaded as first MUI program on startup, caused by muigfx.library... * Fixed chat window corruption on scroll down. * Decreased internal allocated memory to swap stack size. * included patches for xml2.library which fixes a memory access error... 2004-05-02 bugfix update * Fixed memory leak * Changed min rexxsyslib required to v36 * Fixed bug #946324 (hits disconnecting) 2004-05-01 First public release.
The AMIGIFT Project Team is proud to announce the inmediate availability of the Final 2.0 Release. AMIGIFT is a peer-to-peer filesharing application which connect to several networks at once by using plug-ins. Furthermore, it isn't another simple port but a 100% AmigaOS Native Application, and thanks to its dinamically loadable system to plugins it's not limited to the current know network plugins, being new plugins easly created. And, of course, it includes a full-featured Graphical User Interface, made using MUI. (Read More) Yeah, it has happened... after a very long period of development, the Final 2.0 Version see the light, no more pre-releases! The list of changes since the previous public release are quite considerable, we encourage you to take the time to read through the ChangeLog if you're interested on using the program. Most important changes to mention are the following: 1) The daemon no longer uses ixemul, we have now a totally native application! 2) Each of the libs and plug-ins are now compiled and loaded individually, rather than linked with the daemon executable. 3) GiFTMui (The MUI front-end) uses now MUI Custom Classes for everything. 4) LOTS of code have been either rewritten from scratch or optimized. 5) There's now a dopus-like file manager embed into GiFTMui. 6) ...and much, MUCH, more! AMIGIFT 2.0 is designed on a portable fashion, hence you can test it quite easly, Here's a Quick-Start Guide: 1) Remove any signal of existance of any previous amigift version. 2) Download the main archive (AMIGIFT-2.0.lha, link below) 3) Extract it somewhere, eg RAM:, and launch GiFTMui. 4) On this step, at your first run, you need to configure it, please read the documentation for further info on this (link below). Please take a few minutes to read through the Getting Started documentation chapter for full details on how to start using AMiGiFT, the link is: http://amigift.sourceforge.net/index.php?starting You should be able to use your previous Incoming drawer, though. Links as follow: Online Documentation: http://amigift.sourceforge.net/docs/ ChangeLog: http://sourceforge.net/project/shownotes.php?release_id=683386&amp;group_id=89295 Main Archive: http://sourceforge.net/project/downloading.php?group_id=89295&amp;filename=AMIGIFT-2.0.lha Dependencies: http://sourceforge.net/project/downloading.php?group_id=89295&amp;filename=AMIGIFT-deps.lha All of the available downloads can be found from the following URL: http://amigift.sourceforge.net/index.php?archives And don't forget to visit our homepage, and link to us: http://amigift.sourceforge.net/ Thanks a lot to everybody supporting us, and specially for your understanding with the slow development, we hope the delay worth the trouble and you'll enjoy the best ever amigift release :-) Sincerely, Diego Casorran.
------------------------ AMIGIFT - ChangeLog ----------------------------------------------------------------------------- $Id: ChangeLog,v 12.7 2009/05/31 14:30:51 diegocr Exp $ ############################################################################# ####### AMIGIFT 2.0 (Final) PUBLIC RELEASE ####################### 2009-06-01 2009-05-07 * Improved the way search results are inserted, specially noticeable while working on multi-lists mode. 2009-05-04 * Added tooltype MUICFG. Now AMIGIFT can work fully Portable. Use this tooltype to provide a filename where to store MUI settings, eg: MUICFG=AMIGIFT:GiFTMui.cfg - If no tooltype is provided it will fallback to the default ENVARC:MUI/GiFTMui.cfg 2009-05-03 * Added tooltype WSEASYNC. While FIOASYNC isn't activated, Socket events will still be handled asynchronously (Internally by GiFTMui itself), using this tooltype you can disable such async way, just in case you *really* need to for whatever reason... 2009-05-02 * Changed the way Context-Menus for results/transfers lists are created (Replaced OM_ADDMEMBER by MUIM_Family_Insert) * Several -little- internal fixes and improvements... 2009-04-07 * Online Updater's updating everything automatically became broken at some point... Fixed. * Some minimal internal fixes. 2009-03-24 * When a Download is cancelled, or in the Verifying/Completed stage, the session-id will be stored on a new 'transfer in limbo' list, this should avoid Locators from acting on them, just in case of.. * Transfers Window's info-bar to downloads (aka 'trackdls') wasn't correctly refreshed - Fixed. * The Inspector was being launched when there is no pending dls, Fixed * Updated Italian catalog, Thanks to Samir Hawamdeh. 2009-03-01 * GiFTMui is now available in french language, Thanks a lot to Eric 'Tarzin' Luczyszyn and Philippe 'Mrod' Bovier. 2009-02-20 * The 'Create Cache' became broken at some point.., Fixed. * GiFTMui's Threads subsytem was buggy dispatching async messages, which was only noticeable from the 'Uploads Queue' (where a NListree bug was fixed as well). * Moved 'trackdls' stub from NList's Destruct to NList's Remove... * Fixed some issue on the MUI's PushMethod() emulation... 2009-02-15 * The NList Images (network logos) to the Stats and Updater windows will be handled on demand now. (Created at MUIM_Setup and deleted on MUIM_Cleanup) * The plugins has now MD5/SHA1 checksum routines in m68k ASM! Thanks a lot to Jochen Hoenicke who originally created them for PalmOS... * a few internal fixes... 2009-02-07 * Added tooltype NLSLEEP to put on/off the feature/hack of forcing NLists to be set "to sleep" (as previously mentioned) regardless of the CMAPSETUP status. Disabled by default. * FFS partitions to the incoming/completed folders are from now officially supported, it works in the follow way: The first time you request a download (and only the first time per session) your incoming folder will be checked to discover over which filesystem it is, if (( DiskType & 0xFFFFF000 ) == 0x444f5000) AND it's NOT a FFS2 (OS4) partition, the maximun number of chars a filename can have will be automatically set to 20 chars, only 20 chars because downloads are saved as .DLID.<filename>.state max on the incoming folder, until they are moved to completed. However, we still don't recomend to use FFS, since most todays files have long names... * Certain messages coming from the daemon will be intercepted and localized on-the-fly if a catalog was loaded, this should be nice than localizing individually each of the amigift components... * a few number of little internal fixes... 2009-02-01 - During the last two months there was lots and lots of changes made to GiFTMui due a quite annoying MUI-related bug found, below is a list of the most significant changes... * All of the NLists will share a common memory pool. Also, downloads/uploads lists will now use MUIM_NList_Contrust/Destruct replacing the old Hooks way, plus other little enhacements. * Removed about 70 functions from the amigift.library API, which either was obsolete or used only by GiFTMui, which has been therefore moved to the GiFTMui sources. * Transfers History Window will no longer use a dedicated custom class, it will use static set of functions which will handle the history on demand (when new items are inserted, or the window needs to be opened, else it will be keep silently unused) * Replaced usage of MUI's PushMethod by GiFTMui's PushEvents, which handled by eventdsp_class.c.. that custom class have been rewriten from scratch to dispatch events/methods on a better way... * Many of our GiFTMui's custom classes was creating Notifications on objects since OM_NEW method, this has been changed to handle it at MUIM_Setup and killling such notifications at MUIM_Cleanup as it should have been since the beginning... Usage of MUIM_Window_Setup/Cleanup have been added as well to all of our MUIC_Window's subclasses as for the matter. * Replaced ALL NLists where they are really not required (as for example one-column lists), MUI's normal lists should be just Ok.. * Added GiFTMui's Tooltypes: AUTOREADSAVE: Handling of 'Read/Save From/To Disk' will be perfomed automatically when requesters pop-up asking for it. TFSTATUS: Controls whenever the main window's counter for all active transfers should be enabled. TRACKDLS: This control if the Transfers Window's downloads list should include the info bar... NLWINML: Control whenever debug and socket activity windows should use NList or normal MUI Lists (just added for testing purposes) CMAPSETUP: Short for Compact-Mode ActivePage Setup. This is some MUI *hack* which while working on COMPACTMODE will handle objects's MUIM_Setup and MUIM_Cleanup switching between tabs (RegisterGroup Pages), and therefore starting/killing notifications and other setup/cleanup actions when the ActivePage isn't the visible one. Also, there NLists will be put "to sleep" as possible to try to achieve a better perfomance, this is just done by using Quiet, Disabled, and GoInactive, but "unfortunately" there is still an EventHandler which executed each 30 milliseconds even when the NLists aren't used and we having more than a docen NLists on the same window could be not nice on slow systems... * And, as above mentioned, lots and lots of code rewrited partially or from scratch, cleanups, paranoid checks, etc etc, and all that shit and annoyance to try to get rid of a MUI-related bug which at the end does not look to happend on our code, it seems to point to the NList/NListview classes... around when ScrollBars are refreshed/redraw probably I guess... i hate god by not letting me see it before :'-( 2008-11-30 * The Hash/Checksum build-in functions into amigift.library will no longer be inlined together, as it seems to have caused some checksum errors under MorphOS (Trance bug? dunno!) * Rewritten/optimized the function which saves MUI-Settings to daemon's config files. Also, a backup will be created before overwriting such files. 2008-11-25 * A few minimal fixes; URL-Decoding on filenames and url to file comments will be performed on a loop ensuring eg %252526 is properly translated to '&' 2008-11-23 * Replaced a few gift.library's API Functions with a inline version.. * Changed the way downloads are saved into the incoming folder, previously 20 additional chars to the filename being downloaded was used, as a mean to be a unique identifier (UWORD+ULONG+ULONG) that have been changed to be a single UWORD (4 chars) which should be enought as well. This change has made the filename limit of GiFTMui to be increased from 77 to 93 chars (by using the CutLongFilenames option switch) * Added to the Tools menu (GiFTMui) the avility to temporary disable shares, hence requests to download from you will be blocked... * The way lists are cleared have been changed, instead of making a notificacion for each new list (multi-lists mode) we'll handle this by a single notification handled by the application custom class. * GiFTMui will now flush used MCCs as well on program exit. 2008-11-19 * gift.library/event.c: Increased the maximun number of input events, and made certain static functions to be inline using its parameters passed to registers... * Changed gift.library memory's MagicID from 0xff1cb43a to 0x7ABBA000 * giftproto.library/share_hash.c: the result from hashing procedures will be now cached, ensuring a file isn't hashed two times from the same session.. unless that file's datestamp has changed... * gift.library/interface.c: improved for speed, which teorically should be lots noticeable... apart that file wasn't changed since its Linux version, each key(value) pairs the daemon sends to GiFTMui are created with a call to interface_put(), that function made a copy of such key/value strings by using strdup() which uses the own memory system of gift.library based on memory pools, which must be protected by a semaphore, that need to use strdup() has been removed and the way strings are parsed optimized as well removing the usage of a few function calls (string_sep and family) by a single call to strchr()... Considering for example a CHG#? command needs eight of such key(value) pairs, plus four additional ones for each source, thats at least twelve accesses to the memory system which has been succesfully avoided, with a hopefully great speed up (os3, at least) * a few other internal fixes/improvements gift.library related. 2008-11-18 * Added sanity check code on the Threads subsystem to verify the Task's State and SigWait at exit stage... 2008-11-17 * The avility to set the download's URL as file-comment had become broken at some point. - Fixed. * The way we allocate and refresh the multi-lists was somehow broken due certain actions being performed always rather than only when more that a single list is in use. * Fixed some memory leaks (which wasn't really since we use a memory pool, but which may is noticeable after a long session) * Added support to perform UTF(8) to ASCII/Latin1 and URL-Decode conversions on download filenames (such things will be performed just before the 'Cut Long Filenames' filter take action), the correct thing would be doing so at NList insertion time from search results, but we decided to do it at download time only so that results insertion aren't slowed... * Fixed some wrong pointer passed to FreeMem() while using the Main Window's Downloads List... * A few other internal fixes... 2008-11-13 * Improved the way Gnutella' hostiles are loaded, and added support for banned IPs in CIDR notaion (<ip>[/(<netmask>|<cidr>)]), for example 192.168.0.0/255.255.255.0 or in cidr 192.168.0.0/24 The load time has been decreased by almost half minute. 2008-11-12 * gift.library/conf.c: if the provided config pointer is NULL we'll get the default value from the provided string rather than trying to fetch something unreachable from the private dataset. This should ensure no NULL pointer is returned while fetching a cofiguration option if a plugin was unable to load its config. * Our strtol/strtoul functions will now check for empty strings and not only for NULL pointer argument, this should avoid some possible race condition which may happened... * gift.library/parse.c: changed CopyMem/strncpy usage by memmove 2008-11-09 * Optimized/Restructured the GiFTMui's Threading System. It will no longer use its own message port but sharing the application one. * The Online Updater's received data will be now cached for twenty minutes, this will be helpfull (faster) if for example you switch between 'show only never files' option. Also, the function we use to get executables version will now cache the $VER: string as long the program datestamp does not change. And, a Updater's Thread will now forbid the application from exiting with a DisplayBeep. 2008-11-03 * There was 10 FastTrack hardcoded options which are now configurable from the preferences window, look there for further info. 2008-11-02 * The Online Updater's Engine have been rewritten. Enhacements and improvements apart, updates are now received on a compressed way by using BZIP format, and therefore it will work much faster now. * Added new sockopt option: 'Check Connectivity On Startup' This option which enabled by default, will check if you can reach internet (and viceversa) before any other socket-related action is performed. Its purpose is similar to 'check tcp/ip interface' with the following advantages: a) It's more accurate as it will fisically try to reach some servers b) It works on every TCP/IP Stack (Not only MiamiDx/Genesis) c) MiamiIsOnline() and Genesis's IsOnline() only reports if you are connected to your router, and not if your router is really connected to internet. * You'll be now notified when plugins goes Online/Offline, into the main window's info bar, debug window, and playing the stats sample. * Tooltypes aren't readed if GiFTMui is launched from shell - Fixed. * A few other minimal improvements... 2008-10-21 * The feature added in the daemon to avoid duplicated search results is now settable by the end-user (no longer hardcoded) so that you can decide if you want such feature or no... * The mentioned times to the new auto-(re)connect features are now configurable from the preferences window (sockopts) - but you are not encouraged to change them unless you notice some side-effect.. * Fixed some issue at exit while a FBrowse's subprocess is running. 2008-10-19 * Our StringHistory's Custom Class will use now BetterString.mcc instead of the default String.mui class, the usage of the up/down keys with or without shift pressed have been preserved, and additionally mouse wheel support has been added. As a reminder, that's the class we use to the search string, chat, filters, etc 2008-10-17 * Playing a transfer from the uploads list didn't worked - fixed. * We'll no longer try to re-create an AppIcon when it's the same we used previously. * As an addition to the auto-(re)connect improvements, when we receive an FD_CLOSE event (eg, connection refused at startup) we'll queue the auto-connect event/method to be dispatched in two seconds rather than trying to launch it instantaneously, since else we noticed there could be about eight connection tries each second (under os4) * Cliking the Stop button from the Transfers window didn't worked sometimes for certain external players... Fixed. 2008-10-14 * Fixed and improved how GiFTMui auto-connects to the daemon on startup. To make a long story short, the daemon could accept the connection but without being ready to reply commands, if GiFTMui detects this it will try to auto-reconnect on intervals of six seconds until a reply is received... * GiFTMui's menu->network->daemon->quit only worked if we are connected to the daemon, as of today the daemon will be breaked if we are not connected to it. * The reloading process will now check for the daemon executable as well as the way of checking a library isn't accurate (eg, some 3rd part component could be using it)... * If some sound sample cannot be played (for whatever reason) it will be automatically disabled, resulting on GiFTMui no longer trying to re-create a datatypes object for something unreachable.. * Added support for REGEXP (Regular Expresiones) to the Filter's pattern string, to use a regexp pattern the first character must be a colon, eg: ":/.*?(mp3|wav)^/i" (whichs returns any file ending with either mp3 or wav (case insensitive)) - Note regexp patterns must be provided on a perl-style way. * Reworked the Pattern Selection window, accesible from the results context menu (results listview->context menu->select->by pattern) It now supports regexps as well. Also, added selection by max number of sources to the same context menu, which will auto-select the entry with the highest number of sources. * Several little fixes here and there.. 2008-10-06 * Improved how the daemon is reloaded from GiFTMui - previously we only checked if the daemon's port can be bind()'ed, as of today build we also we'll check if gift.library is expunged from memory resulting on no more 'daemon launched twice' requesters... * The GiFTMui's shutdown window could be keep opened forever if for some reason a timer.device request cannot be created - Fixed. 2008-09-28 * Improved FBrowser's COPY/MOVE Routine. * a few other minimal changes.. 2008-08-17 * Recompiled everything as of preparation for the 2.0-final Release. The Changes/Fixes made are minimal, though. 2008-01-24 * Our way to create the Compact-Mode Window seems to be causing trouble under MUI v3.9 - by that reason a special version of the related functions have been created to be used when muimaster version is equal or greater than 20 ... * If FIOASYNC is being used, the MUI Timer interval managed by eventdsp_class will be incremented by 1500ms (and probably should be even higher..) since it will be used then to request stats and launch the Inspector, only. * Since almost the beginning, there was a internal feature to adjust the maximum number of sockets giftd is able to use, that was by using the enviroment variable AMIGIFT_DTABLESIZE, Now you can use a fixed value for maximum sockets by using giFTMui's tooltypes. Hence, using DTABLESIZE=60 tooltype will forbid giftd to create more than 60 sockets. If such a tooltype is found by giFTMui at startup it will automatically set the enviroment variable, that means it will work only if the daemon isn't running already, but obviously the enviroment variable will be there until reboot. Note that if you reload giFTMui the enviroment variable will be overwritten, but if the daemon is already running it will not be aware of the change... It needs also a mention, for those of you who don't know it, that the default maximum sockets assigned per task by AmiTCP/MiamiDx is 64 sockets, being the maximum allowed 255 sockets - giftd by default always used (and uses) the maximum allowed. Also, all plugins have been "fixed" to not show tcp_open() errors if they are of type EMFILE ('Too many open sockets'), in case you wish to use a lower number of sockets. NOTE: we have opted to force the number of sockets to be 64 while running under Miami(Dx), if you want to use higher amount you'll have to use the tooltype. * If we abort a download, while a Inspector is running, there could be the case where one of them isn't checked for sources...Fixed. * F(ile )Browser Improvements: - On Compact-Mode, it will be part of the main window. - Created two vertical buttons attached to each listviews which can be used to go to the parent directory. - To stop a Copy or Move procedure, you can now press the space key to abort the operation. - The DoubleClick's action hook will wait a second if a player is launched while a previous instance is already running, this will give the subprocess some time to end and hence the new playing request should take action without errors... * a few internal fixes here and there 2008-01-13 * There is available a video showing (mainly) the current cpu load of amigift, It's a quick 10 minutes session from the start of the program to the shutdown: http://www.youtube.com/watch?v=17_0jzO-k2Q You can as well watch there the program load time, how fast it connects to the network or the common response time to search requests, along other fine behaviours :-) The video was recorded using the ServicePack builds, todays as of giFTMui #165 we achieved to improve socket events handling so that the cpu load should be lower... * Now, the near 40 custom classes giFTMui uses will be created once the SplashWindow have been created, following changes made recently on that matter, so that the program appears faster. * Replaced usage of MUIM_WriteLong, on a couple of places, by our own methods to do things on a nice way... * Created a new custom class (aka eventdsp_class) with the only job of handling socket events on a nice way by using MUI's buildin timer rather than our own timers... how stats are requested, and the Inspector launched, are now handled by this class as well. NOTES: 1) The real improvement resides for non-FIOASYNC sockets, since is in this mode when giFTMui must handle/dispatch socket notifications on his own. 2) The interval of milliseconds we request MUI to notify our method is by default 1000ms (each second), but this could be adjusted from the giftd settings (tunning->report interval) The reason why we have decided to use a giftd option(s) for a giFTMui-only feature is simple: if we request giftd to report transfers progress each 4 seconds, there is no sense from giFTMui to check for events each second.. hence, the minimum value for downloads/uploads will be used for the MUI timer, this should decrease the cpu load even more! It's highly recommended to use under os3 a *minimum* of two seconds for transfers progress there, you'll notice a better performance.. 3) There is available as well, at the giFTMui settings, a new option which will cause this class to drop all open connections when you iconify the application, on that way the cpu load will be Zero when giFTMui is iconified. However, note that in such case there will be no sound/player notification when eg a download finishes. * When FIONBIO isn't enabled the SendQueue's switch will be disabled, since it's useless without using fionbio (non-blocking) sockets. * The Inspector will no longer active the entry a locator is going to look sources for, same for Locators automatically launched. * Fixed a bug which caused a socket being closed without removing the associated node from our private sockets-list, this may caused unpredictable results if eg we inserted a new socket with the same number of the previous already closed... * The giFTMui settings which was right-aligned are now left-aligned.. * Some minor fixes and code cleanups. 2008-01-07 * Created the first ever AMIGIFT Service Pack, which includes up-to-date binaries for all m68k flavours (68020 to 68060 with and without FPU support) along with bonus material. This includes: giFTMui Build #164 07.01.2008 amigift.library 2.146 04.01.2008 gift.library 2.19 05.01.2008 giftproto.library 2.4 29.08.2007 Gnutella.PlugIn 2.7 03.09.2007 FastTrack.PlugIn 2.7 21.08.2007 Ares.PlugIn 2.7 20.08.2007 The SP is provided with a installation script which detects your CPU and automatically installs everything (patching if needed), it has to be installed over your existing installation. Note: Service Packs are intended to registered users... 2008-01-04 * Our NList parser to the transfers lists will use now AllocMem() rather than our malloc()-replacement which is slower due we use a memory pool that needs to be protected by a semaphore - This effectively should speed up the transfers progress. * Fixed some issue on the main window's downloads gauge, it has been improved a bit to require less cpu usage... * Decreased our memory-pool's puddle size since some benchmarks show it's a little faster (a gain of 6 seconds each 8000 allocations..) 2008-01-02 * The check for 3rd part resources, and some others startup checks, will be now performed once the SplashWindow have been opened. * As requested, the daemon will no longer check your shares index on each startup (...), it will check the shares index datestamp and perform such check once a month only, it will do that silently launching a subprocess on startup rather than refusing to start and warning you with a requester (as it was several builds ago) * Some minor fixes. 2007-12-26 * Updated the list of mime-types build into amigift.library * Changed the way giFTMui's private MUI Classes are created, basically we'll use allocated memory rather than stack space to store a pointer to the class instance... * Replaced usage of AllocMem(0x7ffffff0,MEMF_PUBLIC), to flush our libraries from memory, by RemLibrary() when OpenCnt==0 ... This is done if the library is amigift.library or gift#?.library, ofcourse. 2007-12-23 * Fixed a wrong Gnutella's ObjectID which caused the packet ascii log file setting not saved properly upon exit, and hence what caused as well a de-sync warning poping on startup if you aren't using his default value. * Re-implemented giFTMui's registration system, which indeed should be lots better than the previous method (which was a crap anyway), you will find all related info on the Register window (opening it from the application menu, or About window - The About Window have been rewritten from scratch as well being now much clear and well structured... using Urltext.mcc to link to the website resources). * Added OpenURL.library 7.0 and Urltext.mcc 19.7 (By Alfonso Ranieri) to the list of required resources by giFTMui - We have replaced web links usage inside giFTMui using Textinput.mcc by Urltext.mcc which is more comfortable, and OpenURL 7.0 is needed to properly handle mailto: links. * Fixed a couple of hits caused while trying to obtain the mime type of a file which hasn't extension - this is mostly noticeable while trying to play files from the File Browser. * File Browser's right-list will list now the RAM: disk instead of the list of devices so that it is opened faster. * Replaced some thirty BOOLeans (60 bytes) by a single ULONG (4 bytes) and bit mask, this should make somewhat faster certain loops... 2007-12-03 * The giFTMui's SplashWindow isn't shown correctly under UAE - Fixed. 2007-12-02 * Several builds ago the way maximum results are handled was changed, allowing more results than the maximum defined (read this changelog entry for 2007-04-24 for more info), However... it comes to our attention that some users dislike this change, therefore a new settings option was added so that is you who decide how to handle maximum results - You'll find such a option at the settings window on giFTMui->main->mList * Re-implemented the giFTMui's File Browser, being rewritten from scratch so that it will no longer be usable for overview only but to allow common actions to be performed (copy/delete/rename/etc) and to jump between directories with no limit, double-clicking an entry will display such file using the pre-defined players from the settings window - basically, it has become a little file-mamager! (Next step would be to add to it an embed music/video player ;) * Upon giFTMui's startup, (and only at the first startup after a system restart), the program will verify that the daemon's config files are in sync will the settings stored by giFTMui, warning you if a 'Read From Disk' procedure is required. 2007-11-28 * Fixed a bug which caused a 'out of memory' requester opened on each new entry to be added to the results listview while the filter's pattern check is performed. 2007-11-23 * Users of StackAttack2 may have noticed a daemon failure at time of launching the SharesIndex sub-process (which giftd does using the CreateNewProc() function that StackAttack[2] patches). It seems to be caused by an "unusual" usage of StackAttack2 (and it only seems to happen with version 2.9), e.g: using 'StackAttack MINSTACK 8192' causes such a crash but using 'StackAttack AUTO' does not cause it. Increasing the NP_StackSize tag value at the daemon side seems to cause the problem gone (even, when we had it set to 65K), but anyhow we recommend to not use MINSTACK with a value lower than 16K or so 2007-10-16 * giFTMui uses now the internal list of installed plugins alphabetically sorted, so that mui objects are created ordered in such way. * The network status lamps of the main giFTMui window are now clickable, its functionality will be to select at which network protocols do you want to send the search request, in the same way as if you use the advanced search panel's protocol checkmarks. In addition, the lamps will no longer use RGB colors but user-defined colors instead (configurable from the global MUI settings), When the network is online it will be the color "Ok", while the network isn't ready to accept searches it will be "Processing", and if you click on the Lamp, to activate searches at that network only, it will blink with the "Looking Up" color altogether with the previous status color. those are the names which appear on the mcp, btw. * a few changes here and there on the look of some MUI objects, and other little fixes. 2007-10-01 * Updated Italian and German catalogs kindly provided by Samir Hawamdeh and Hans-Jrg Ottinger respectively. * Default settings was set after loading the settings saved on disk when is the opposite the right action obviously. - Fixed. * some minor fix. 2007-09-28 * The functions strdup and strndup which amigift.library implements (and both the library itself and giFTMui uses) have been replaced by somehow faster ones, being a change made on them needing a mention: such C-Standard functions only fails if passed a NULL as argument or if was unable to allocate memory, BUT our old implementations also checked if the first character is Zero, failing then as well in such case - this no longer happens being therefor empty strings dup'ed as well (as the standards specifies) unfortunately this could means some unpredictable behaviour may happens as we have not checked the whole code, just inform us if you notice some strange issue. There has been made a major code cleanup on amigift.library as well. * The whole daemon/plugins's configuration handling have been rewritten according the new giFTMui's plugins management. This includes that only plugins currently installed will be allowed to be configured, and several other internal features/improvements. * Updated and "fixed" giFTMui.cd, look at it for more info. * The file amigift:data/shareroots.txt will no longer be independient from the rest of the core, instead it will actually be a safe-copy of your sharing roots - This has been made to be friendly to the new ASIU program. 2007-09-11 * giFTMui have been fully adapted to dinamically work with plugins, so that he works knowing nothing about the plugins installed for AMIGIFT, however... it still handles preferences for the currently know plugins Ares,FastTrack,Gnutella,OpenFT. New plugins must use the new method as follow described so that giFTMui needs not to be recompiled to allow any particular new plugin to work properly inside the GUI. Go ahead user-groups creating your private network for your community only, it should work like a charm from AMIGIFT now! :-) Basically, what giFTMui needs to work with new plugins is just a MUI's Public Custom Class (.mcc) located inside the AMIGIFT:PlugIns directory, this class could be a subclass of whatever you want, but obviously the quicker way would be creating it as a subclass of MUIC_Group, it should return a valid MUI Object which will be placed as a children of a PageGroup on the preferences window. The class should additionally handle the reading and writing of the corresponding giftd's config file, those found into AMIGIFT:daemon/<plugin>/<plugin>.conf, as available for the rest of plugins as well. There is provided a Demo.mcc and Demo.PlugIn (with full source code, of course) which demostrates to developers interested how this works, The Demo.PlugIn source is just a quickstart on how to write PlugIns, for better info and examples OpenFT sources are the best choice. NOTE that how giFTMui will handle your plugin is based on the plugin's filename as found into AMIGIFT:PlugIns, and the .mcc and image (logo) based on that name, e.g. it founds into AMIGIFT:PlugIns a file named BacaBurra.PlugIn then it extract the name and stores it as "BacaBurra" (case sensitive!, at least for MUI..), then it tryes to load the mcc using: MUI_NewObjectA("AMIGIFT:PlugIns/BacaBurra.mcc", NULL); (additional tags support may come later if needed, just request it!) and then the logos loaded as well as: AMIGIFT:Images/networks/normal/BacaBurra.iff AMIGIFT:Images/networks/small/BacaBurra.iff (being fixed width/height a requirement, 32x32 & 16x16 respectively) Note that giFTMui will still work with your plugin if neither the mcc nor the logos are found!, what we understand as your plugin needs no configuration, being the logo replaced with a build-in image (with a "?" sign) if yours aren't found. If you create a MCC, you'll need to implement the following MUI Methods on your class dispatcher: #define MUIM_GIFTMUI_MCCLOADCONFIG0x800FF00A #define MUIM_GIFTMUI_MCCSAVECONFIG0x800FF00B Such methods will be invoked by giFTMui when a user uses "Save To Disk ALL" or "Load From Disk ALL" menu options. be aware you must return the same method-id if your function succeed, and something else otherwise. Don't hesitate to contact us if you have some suggestion/comment or improvement/implementation idea about this new plugins handling! * Created a new standalone program to update/create your AMIGIFT's shares index file, ASIU (short for "Amigift Shares Index Updater") is its name and available from the root of the distribution. It creates a MUI-friendly (and simple) GUI with a NList and three buttons, to add/remove paths and to launch the hashing process. Note what it does is just a quick way of launching "giftd i" shell process, but with internal features to verify your config and update/fix it if needed, that includes activating all of your installed plugins (if aren't already) to create a full shares index file before launching the daemon, and restoring the config to your previous plugins once finished. It's highly recommended to use this program after a fresh boot to work faster and smooth and obvioulsy without another daemon instance running on the background (or without any other program on the background ;-) * Added a timeout to the splash window at exit stage... that timeout will be one minute under OS4/MOS and three minutes under other systems. 2007-08-03 * Updated German catalog, Thanks a lot to H.J. Ottinger. * Added usage of MUIA_Application_UsedClasses to give MUI a list of external classes used by giFTMui. * Added a few sanity check to the Ares.plugin to prevent some issue(s) while updating our shares index. * giftd should correctly assign the AMIGIFT: path now if it's loaded from a shell to generate/update the shares index. * Added recognition of 'SFS\2' partitions. * Fixed a failed assertion on the Gnutella plugin which happens sometimes by a strange rand() issue... in addtition, the rand() function have been replaced on the whole core (all daemon components) using a libnix-based implementation which just uses utility.library/SMult32() ... * There will be no longer the 'one month old' shares index requester, since todays the shares index update process is launched from a thread there shouldn't be no major problem on that, so that on each startup your shares will be checked, note that even on large shares index files this process should take a few time if no changed files are found (On a 060 with the default A1200's IDE Controller, giftd shows an average of 24MB/s when checking unchanged files, being near 300MB/s under MOS/OS4) 2007-07-29 * Some users complain about the daemon does not return results matching the exact phrase they want, so that looking for "hello world" may returns entrys containing "hello" only. By that reason a new filter have been created, it's a cycle object with match any word, all words, or all words ordered (as-is as you typed it). You'll find it on the vertical search pannel with the rest of giFTMui's filters. * Since we changed the bandwidth's downstream/upstream objects from a String to a Slider, saving to disk those options wasn't working due we was trying to get a string contents still. - Fixed. * How to create/manage multi-lists (results) have been rewrited to be more MUI-Friendly, so that it should work smooth and fast. * Using FIOASYNC+FIONBIO+SendQueue altogether didn't worked properly due a bug on how packets are queued. - Fixed. * The giFTMui's online firewall checking didn't worked properly if your router is blocking pings, - Fixed. 2007-07-18 * Added a new SpashWindow to the exit stage. It's just a tiny window with a "AMIGIFT Exiting" and progress messages, you'll may notice it looks like it needs more time to exit now, isn't that right, just that giFTMui will wait to the daemon to be fully aborted before it exists completely as previously when giFTMui has already exited the daemon was still there in the background. It works on that way when 'Remove On Exit' option is on, of course. 2007-07-15 * Optimized how Compact-Mode windows are diposed on exit, as there seems to be some issue under MorphOS. * If some window cannot be created for whatever reason (out of memory, missing mccs, etc) there will be now a requester informing the user.. * Updated Italian catalog, thanks Samir! 2007-07-08 * Fixed a bug while using CHUNKPROGRESS which caused giFTMui to crash horribly by a missing statement not telling NList.mcc to stop using our BodyChunk's chunkprogress object. * Fixed some possible bug into our OpenLibrary() replacement ... * vapor_toolkit library will no longer be checked on startup for his existence (such library is/was needed by TextInput#?.mcc but it's build-in on newer MUI versions) * On startup we'll check now if there exists an AMIGIFT: assign which does not belong to the current directory (from where you started giFTMui), warning you in such case. Same kind of test will be perfomed to check that you do not have amigift libs on both places SYS:Libs/ and AMIGIFT:Libs/ * You'll be able now to ban a supernode, apart a single user, for those results received from doubtful origin... * Main window's cloned dls-list will use the NList "images" only when needed instead of allocated from the beginning. * some little fix/optimization here and there... 2007-07-01 * Being a new pre-release archive to be released (or released as you read this), we have added some code which check for the file time of the default MUI config giFTMui uses, so that if it was created previously than the 1 of June it will be automatically deleted on startup, according to the changes made the last month which has made this a requeriment by the new structure of mui's objects. Hence, remember you'll need to reconfigure giFTMui almost from scratch on the first run, for the daemon and plugins part you can just use 'Read From Disk ALL', from the settings menu, if you wish to keep your previous settings, and next save the settings from the same menu or dont forget to enable 'save settings on exit' switch ... In the other hand, if you want to use a clean installation (which recommended, by just extracting the archive somewhere and double click the giFTMui icon, - you can still use your incoming and completed folders), for a quick-start all you have to do, BEFORE the daemon is launched, is selecting the networks you wish to connect to, and then use 'Save To Disk ALL' from the settings menu (the default settings for everything should fit most users), and you'll be able to connect to the network(s) in a few minutes. Look at the AMIGIFT.readme file for more info! * ShareMonkey (http://www.sharemonkey.com/) have been implemented into giFTMui! ShareMonkey is a WEB Service which allows users to locate where to buy legally any of those files you'll find from the various p2p networks. Theres a new context-menu option to the transfers and results lists, "Where is this file from?", when you use it you'll be redirected to the website which will show you quickly any product matching the filename, filesize, and/or filehash. NOTE: you need to have installed openurl.library! I want to give the Thanks to Keiron Waites for his great support and efforts in making the ShareMonkey website compatible with IBrowse, currently the website was using Ajax and CSS, but Keiron kindly allowed us to upload a php (wrapper) script which makes the site perfectly working from our AmigaOS Browser(s). * Samir Hawamdeh updated his catalog (time record, thanks Samir!), so that Italian users can enjoy the whole amigift interface on its natural language. 2007-06-22 * Changed a bit the SplashWindow so that it will show now the "release name" and compile time. * Implemeted the "msg" commad to the chat, used to send messages directly to users, or to identify after a nick change (mainly to) * Theres a new option to use a queue for automatically launched Locators, so that they get no lost in space when a new request comes while a previous instance is still running. NOTE: If you launch a Locator manually while the list isn't empty your request will be dispatched asap, being the Locator currently running aborted and re-added to the tail of the list. * Fixed gift.library functions file_unix_path and file_host_path to check against NULL parameters passed, which sometimes could happend as we've noticed when a new download finishes and the re-hashing subprocess call them... * The transfer's window top bar will inform now which Locator is running, and the number of queues. * Reggae have been integrated into giFTMui, so that users of MorphOS will benefit from this great datatypes-replacement. If multimedia.library cannot be opened, the old subprocess system will be used instead. 2007-06-15 * Added new tools menu option to tell the daemon to update the shares index file on-the-fly from the current session. Note though this is slower than running 'giftd i' alone, since the re-hashing subprocess is launched with priority -1. * There seems to be some little issue with the player process (atleast noticiable under MorphOS), we've changed a bit how it works being the async flag no longer used... * The function which formats the requests to be sent to the daemon have been rewrited from scratch, being moved from amigift.library to the giFTMui sources to be working faster.. * Implemented a new group of objects at top of the transfer window's downloads list which will track the total number of downloads, how many are active, and those without sources. Theres a Lamp as well which will be green when there is some download active. NOTE: Such group will be only visible when there are more than two downloads, and updated (if there are changes) once each 2.5 seconds. * How the Inspector is launched was using a global timer to the given interval, this have been changed so that the interval will be the real time passed between Inspectors invocation. * The debug and socket activity windows has now the ability to clear or save the nlist contents, by adding a new context menu to the custom class which manages them. * The AppIcons feature of giFTMui have been re-enabled. * By the change made recently to the sound system of giFTMui, there seems to be now some issue under MorphOS... atleast it looks like some MOS datatype is buggy on the sense it makes the application to crash if we dispose a SoundDTObject which curretly playing, as we was able to trace with the help of some mos betatester. From now on, and only under MorphOS, we'll create a subprocess to handle the sounds (not the same subprocess we removed the last month, it have been rewrited with the issue in mind), such subprocess will wait to the sound to be fully played before disposing it, and ignoring any new play request it receives while a sound is playing. * The ContextMenu of the results list has a new item which let you be able to BAN the user which returned the selected entry. Thats currently working to the FastTrack and Gnutella plugins, which are the only networks which manages ATM banlist files. Please be sensitive using this new feature, adding (banning) to many IPs may isn't good in the long run... 2007-06-07 * Created a Slider.mui's Custom Class to handle on a nice way all those slider-related objects. for example, now the stats, locator or inspector times will be show with a clock, or the downstream and upstream values will be represented with b/s or Kb/s * Since the beginning, giftd reported transfers progress once each second, being each 60 second forced a report if there was no progress for a particular transfer - those hardcoded values have been removed to let the user the chance to use the values/times he wishes from giFTMui preferences. (mainly focused to users with slower machines which has lots of downloads). There was the prefs page giftd->bandwidth which have been replaced with giftd->tunning where you can find both, to set the bandwidth limit and the reports times (whose accuracy is milliseconds). * The incoming's #?.state files was saved each 10 seconds whatever there is any change or no, this have been changed so that such files get only updated when there is real data transfered since it was last saved. (but still gets re-saved at registering downloads step, ie: at startup) * While working on Compact-Windows mode, the last active settings page isn't set in startup. - Fixed 2007-06-03 * Fixed several hits while a Locator finishes, due we was closing the connection from the recv() dispatcher and removing it from the linked list of socket events (for non-FIOASYNC mode). Also, the Locator receive stub have been adapted to use the new-style daemon parser, being EWOULDBLOCK (resource temporaly unavailable) handled corrently for FIONBIO connections. * The Inspector was not properly automatically started when there is a Locator running (by user). - Fixed. 2007-05-31 * Cleaned up the code to event sounds and players, being the objects stored on allocated space rather than on the stack. * The percent completed (to the trasnfers list) was wrongly calculated for biger files (>= 1000MB) - Fixed. * While downloading a file with several sources, the string to the Status field could be wrong (for example, telling 'Queued' while indeed we are actively downloaidng it), Fixed. * While sending a LOCATE query to the daemon, we'll no longer use the protocol() tag to specify at which network the request should go, keeping that decision in hands of the daemon and not giFTMui. 2007-05-27 * The sound system of giFTMui no longer creates a new subprocess to play the sounds, it is now handled from the main task, since at least using v41sound.datatype isn't needed (creates its own subprocess) ... let us know if you notice the giFTMui task sleeps while playing a sound, and which datatypes do you use. * There seems to be some issue under OS4 at time of closing the chat log at giFTMui shutdown, hence we decided to change how chat logging is handled, previously at time of writing a chat line we checked if logging is enabled, we'll now use a hook which automatically opens the chatlog file at time the checkmark is enabled and/or the file location changed, so that when a new chat line needs to be writen we only have to check if the filehandle is valid, avoiding as well to use two GetAttr() on each function call... * Added two new menu items at giFTMui to 'Read From Disk' ALL core settings as well to 'Save To Disk' ALL of them, so that you can use these to load/save all plugins and daemon configs files into giFTMui at once!, specially useful to the change made the last day where you was needed to use 'Read From Disk' to all. * Fixed a bug on the Inspector which sometimes failed to select the nlist entry it should start to locate sources for. (really the bug wasn't on the Inspector itself, but on the method we was overloading to switch the entry selection between downloads/uploads lists, which have been changed to a hook..) * When used 'Last Saved' giFTMui's settings, we just reloaded ENVARC:MUI/giFTMui.cfg which could end on some error if you changed (and saved to disk) some of the daemon/plugins config files, we was in a little doubt about if we should allow the user to choose between reloading from disk all of them, or instead save all of them to disk with the copy of the settings stored into envarc:mui/giftmui.cfg ... we decided to (transparently to the user) reload all of the daemon and plugins config files, since after all those are the really 'last saved' files... 2007-05-25 * ++++++ IMPORTANT NOTICE +++++++++++++ For consistence on mui objects creation, the ID assigned per object have been changed, we was using previously common functions which used an incremented number as ID on each new call, we'll use now statically defined IDs. Hence, manual deletion of the file ENVARC:MUI/giFTMui.cfg is REQUIRED, same applyes to the file AMIGIFT:data/defmuisettings.cfg - Also, since the giFTmui.cfg file needs to be deleted, on the next giFTmui's run you'll need to use 'Read From Disk' for each of the plugins you're using, apart reconfiguration for giFTMui settings itself, obviously. * The gifTMui's preferences page 'History' have been removed, as it was containing just threee objects, them was added to the group of objects from the 'main' page. * nlist sorting for transfers lists were broken. - Fixed. 2007-05-20 * While giftd is exiting, calls to gift.library's free() function (used by the whole system) will be blocked, so that the memory isn't freed, this makes giftd exit stage considerably faster (specially when Gnutella is/was running), we can do this safely because 1) amigift uses a common memory pool, and 2) because giftd auto-expunges gift.library from memory, so that the pool is removed and hence all memory used gets freed successfully. * giFTMui player function didn't worked properly reading dirs which are softlinks (like for 'downcheck'), - Fixed. * Increased the time giFTMui waits to the daemon to be reloaded, from 16 seconds to 28... 2007-05-15 * 'downcheck' is now able to preperly use softlinks for both files and dirs, previously only files was handled properly by Examine()'ing Zero-size files to obtain the real size, now we'll use ReadLink(). * How to cancel a Locator for a download recently finished have been changed, previously we waited to receive notification from the daemon, now we'll abort it just after you cancel it. * Another nlist parser which have been improved to be working faster, this time for the download's sources list, which you can access using the downloads list context-menu .. * The amount of memory used to the re-hashing process was 60MB as maximun, being 4MB to remain free - Those values have been changed to 20 and 6MB respectively, there was fixed a issue which has made to allocate all free memory if it's less than that 4MB * Fixed a bug disabling 'SendQueue' option while we are connected to the daemon, we'll check now if there are pending requests to send them, so that they are not lost in space.. 2007-05-10 * Reworked how network images (logos) are loaded, now just the logos for the plugins currently installed will be loaded and used. Hence, we'll check now the contents of the AMIGIFT:PlugIns folder and the network names will be stored on an array we'll use later to generate dynamic-oriented objects, thats indeed how giFTMui should (and will) work for everything related, to not depend on the plugins we currently know, so that when a new plugin is available giFTMui needs not to be recompiled to allow that new plugin. For now just a few objects uses this method, but on future versions we'll integrate it in the whole sources. 2007-05-08 * Rewrited from scratch the NList parser to the downloads/uploads transfers, indeed it should work lots faster than before! * Fixed the transfer's chunk progress, whose objects didn't worked properly while multiple transfers are active, due we was creating a 'chunk progress' custom class object for each of the transfer lists where the right action is to create a custom class object for each of the active transfers. If you are running too many transfers at once, plus on a slower machine, may you'll like to disable such feature, to do that just add 'CHUNKPROGRESS=NO' to the tooltypes list. * Related to the two changes above mentioned, the downloads/uploads NList parser have been moved from the Construct Hook to the common list custom class, this helps creating on a nice way the chunk progress objects to all the available lists (on the same way all of them will inherit the same nlist "image" objects), those lists are the ones from the transfers window, the monitor lists, and the 'cloned' lists. * There seems to be some issue trying to adding new sharing paths from the giFTMui preferences window, it should be fixed now. 2007-05-01 * The string-history custom class will check now if the last inserted string is the same the one we are about to insert, to "avoid" duplicates. also, the number of items displayed have been changed from 10 to 25 - Thats the mui class we use as replacement for the default MUI's String class, used on various places, like for the search string or the chat, where you can click RMB to access its history. * The maximun timeout value for Locators have been increased from 3 to 10 minutes.. * The downloads/uploads monitor windows didn't worked properly since we changed the daemon parser. - Fixed. * Improved the Filters check routines to be somewhat faster by using inlined functions rather than amigift.library's functions. There was fixed a bug as well which has make the filters unreachable when it is enabled after you re-run giFTMui. * We was still unable to upload through OpenFT due the HTTP reply version is set by using a float number, and we was using the Locale's DecimalPoint, which could end as malformed request if your Country's decimal point is not a dot. - Fixed. * Some minimal giFTMui/amigift.library fixes here and there... 2007-04-24 * While using multi-lists, if you start a new search on a list previously used, it's title gets no refreshed until some result is received - It should be now right after you click 'Search' * Info's gauge for number of search results being received worked with single-lists only, it should work now with multi-lists as well * FIONBIO's Send Queue didn't worked properly due a bug in the function which checks for already queued commands, it should be working fine now, being also improved. * Recording of last used tabs/pages on multi-lists mode didn't worked properly since severals revisions ago, it have been rewrited to be working fine now, this feature is to let you go back to the last seen page, while working on multi-lists mode, when you remove one of them. * Previously, when the maximun number of results is reached, further addition of results for that session is disabled, so that just the exact number of maximun results defined by you are displayed. This has been changed to show all available results, even therefore execeding the maximun value. - When the maximun defined by you is reached, a cancel request is sent, there may be about ~100 more search results, which even may exceed your desired, but we think now is the right action to do.. * giFTMui on multi-lists mode, was totally broken on how to automatically cancel a search (by maximun reached, fex) IF that wasn't on the currently active page. thousand of apologizes! * Fixed CPU usage giFTMui uses on FIONBIO mode... since we need to handle socket events on our own, the dispatcher for this job was called from the main loop about 18 times per second..(ejem)... it should be no more than 3 times now... this may need probably some retouch though, since giFTMui was originally designed to work on FIOASYNC mode only.. 2007-04-22 * The 'Stop' button gets no automatically ghosted when search results are completely received (you didnt clicked the stop button) - Fixed. * If a download finishes while a Locator is still looking for more sources, there could be the case the source is being added like a new download for the just completed one. - Fixed. * When a Locator is launched, an alarm-based subprocess is created to handle the timeout, if the Locator finishes by itself (not by timeout) that subprocess is not breaked. - Fixed. * The ExAll() "level" the 'downcheck' functions uses was ED_COMMENT when indeed ED_SIZE should be sufficient, hence have been changed. 2007-04-20 * giFTMui includes a new feature to check your Firewall Connectivity, you'll find it from the Tools menu, clicking on "Check Ports". * While using multi-lists, event notification for PATHs selection get no disposed (MUIM_KillNotify) switching between lists, plus to make this working on a nice way it uses a new hook instead of two event notification (MUIM_WriteLong/MUIM_NList_Redraw) * gift.library have been improved/fixed on how subprocesses are launched and killed, which used to the (re)hashing procedure. If you break the daemon while a rehashing subprocess is running there could be the issue giftd has exited while the subprocesses is still exiting due a missing Wait()'ed state. Furthermore this will *never* happen again (even in the case our code is still buggy) since the subprocesses will check now if the parent task is still running, being auto-suspended if it is not (worst case, dont worry) * Fixed a bug into gift.library/TaskExists which prevented some tasks not to be correctly detected due SysBase->TaskWait is not properly traversed. * gift.library/log_init() will no longer be used by other task than the [first] daemon instance... this may change in the future (if needed) but for now there is some factors which has made us to make this restriction: log_init() and log_cleanup() was protected by a semaphore, in the same way as log_print() (which the function used to write each of the giftd.log lines), well, since log_init() works now on that way, log_print() will no longer require the semaphore, this help us in the case giftd is exiting and cleaning up things while it is owning the semaphore and a rehashing subprocess is still running and waiting to write something to giftd.log (essentially, this is by using platform_cleanup(), it's the function which breaks running subprocesses). Also, to prevent any possible issue, log_cleanup() will no longer use the semaphore as well, but instead it is now executed being Forbid()'ed. * We noticed the function giftd/share_clear() could take long time to complete (It's the function used to clear from memory your list of shares at shutdown, being on a pre-formated/linked-lists fashion), testing to share 3200 files (mostly pictures, ~2GB) it took about 6-8 minutes on a 060 !!.... so from now on calling this function will be avoided...but dont worry, since we are using a memory pool there will be no memory leak at all, but then giftd will need to auth-flush gift.library from memory, so the pool gets deleted. Related to this, we noticed having a high amount of shares is a bad idea... more than 1000 shares we mean, at least by the fact Ares is [almost] unable to connect to the network, due the long time it could take on pre-process the list of shares to send them to the supernodes, resulting on 'Connection reset by peer' errors * Uploads were broken until NOW, finally we've found were was (the very stupid, indeed) bug. 2007-04-14 * gift.library have been "fixed" to no longer use globally declared variables... that was used to the logging, mime, platform, and events specific functions, that could be translated as 200KB less of stack usage.... also, our memory allocation system used a pool and semaphore declared globally as well, that is now properly used from the library base pointer. * fixed some bug on the code which forbids a daemon being run twice, there could be the case where a second copy of giftd tryes to free resources previously allocated by the first giftd instance, apart from being protected by semaphores, thats now protected so that only the task who inited the core has the rights to free everything allocated by itself.. * Fixed a possible bug from the giFTMui's save config functions when a plugin drawer have to be created. 2007-04-13 * giftd has a new command line option: SM=SLOWMOTION/S When you use this switch, giftd will work like before.., else transfers progress will be reported more quickly to giFTMui, even when there is no progress to report...transfers are still no pure realtime by design, remember that. Also, while using this swtich, and how giftd worked to date, giftd do not report transfers progress if there is nothing new transfered/received on a period of 60 seconds, that value have been changed to be 20 seconds now. Side-notes: owners of slower CPUs are encouraged to use this switch, check it and decide for yourself, though. * When OpenFT writes the nodes file to disk, and since it uses a temporal file to write them, we'll check now if that temp file size is greater than 0 before trying to replace the real nodes file... * Some other minimal changes made to the main core components.. 2007-04-10 * Since the addition of the network logos at front of the nlist item, the network statistics for downloads/uploads was broken, - Fixed. * The locators when reporting adding new source uses the wrong field about from where it comes (url instead the user), - Fixed. * The daemon integrates a new feature to avoid sending duplicated search results to giFTMui, its checks are based on four ITEM() fields, following that order: size, file, user, url If the four exactly match, that new item is not sent to giFTMui. 2007-03-21 * The whole core uses now a new memory allocation safe point (aka MagicID) to prevent illegal memory accesses...or thats the intention * The maximun connections (hardcoded) default value for OpenFT have been decreased from 30 to 18....just for testing purposes... 2007-02-13 * Updated Italian catalog to the very latests build-in strings, Thanks to Samir Hawamdeh who did the work, Also added Spanish catalog and fixed Swedish and German catalogs (to be working with giFTMui 2.0) which lacks 2.0 strings translations though. * Events, Players, and Sounds groups from the preferences got unaligned while using a catalog file, Fixed. * While checking for the required 3rd part resources, if some isn't found we show a requester, and our own requesters check for some variables which since thats at the very beginning of the execution aren't properly initialized yet, that could cause a severe application crash - Just fixed, sing * Another bug which have been fixed is about the splash window image, If the image cannot be loaded via GuiGfx.mcc for some reason, we fall back using a no-op hidden object as replacement due a common global function being used, this is a wrong function usage to the splash window since the addition of the program version being draw on top of the image - we'll forgot such thing if the image does not exists, or exists but direct GuiGfx usage cannot load it. 2006-12-10 * Reworked (once again) how the daemon is (re)launched from giFTMui, the function is much simple now, and being called from a subprocess which makes 'Unlink from Stack' feature unneeded (which seemed to cause trouble on some systems), also, unlike the previous function, it will work silently until finished (no more annoying requesters..) * Thanks to framiga by a comment by Ken on aorg, we have "fixed" the little network logos, they may need some retouch still tough. With the logos partly fixed (looking better than before) we have added them to be show on the results list for the 'network' column, as well on the downloads list. * giFTMui results list's parser have been rewrited from scratch, it should at least work faster... in addition to make results insertion faster the filters check can be now completely disabled which substantially will increase the speed results are inserted. By switching the search panel to the vertical mode, and opening the "Filters" field, theres a new chekmark to enable it (it is disabled by default now). * giftd: fixed a 'divide by zero' bug while using indexonly * gift.library/giftproto.library: some little optimizations against NULL pointers and removed some assert() calls ... 2006-10-20 * gift.library wronly reported a daemon task already running when indeed there is no such instance, Fixed. 2006-10-16 * There seems to be a bug on the AmiTCP v4 kernel based TCP/IP Stacks while using asynchronous sockets (Well, IMHO it's a bug on the kernel itself and not in the application(s)..) and more than one single socket is used from the same task (short story). Hence we've forced to create a new method to manage connnections from giFTMui, which is not other than the common WaitSelect() way. non-Miami(dx) users are strongly encouraged to disable FIOASYNC from the newly added 'sockopt' preferences page (giFTmui-Prefs->giftmui->sockopt) * If a second daemon task is launched a serious condition about gift.library internals being accidentally freed could happen, this have been fixed being just a single daemon instance allowed to be run... apart that, there shouldn't be any problem from 3rd part programs using gift.library, at least for certain functions since not all are threads-safe...but those which aren't safe are really only used from the daemon..sing * Updated the FAQ with questions from our ML, Thanks to Philippe 'Mrod' Bovier, who did the work. 2006-09-13 * Under Genesis, the function gethostname() seems buggy somehow... at least according to the autodoc if all procedures to obtain the system hostname fails it should set "localhost", which isn't set making the chat connections to hang due an incomplete request sent (due the missing hostname, obviously), that should be fixed now. * Locators do not checked for the 'max sources' value, Fixed. (and we have noticed that using more than 20 is a bad idea, on most cases..) * The Width for the results list columns aren't saved upon exit, Fixed. 2006-09-08 * There was detected some kind of bug saving the daemon/plugins config files from giFTMui while using MCP's CopyMem() patch... what happens is just that appears some garbage at EOF, we have "fixed" it from amigift part just avoiding to use CopyMem() but we have not clear at all if there could be some other(s) issues while using MCP... * giFTMui requires now bzlib.library version 2.0 to be installed, which is available from our site since some time ago, this Version should be working better and fastest * The transfers sources list window lacks a ID which makes it not able to snapshot his position etc, Fixed * Fixed some pointer mismatch issue on the internal blacklist routines, which used when clicking a file to be downloaded. * "Improved" (well structured) the giFTMui's parser to the daemon commands, and fixed some little issue which makes certain packets unrecognizable at some step... 2006-08-09 * Created a new system to launch our Alarm-based Timers which surely will not have the know AllocSignal()'s failure issues... Thats just creating a new process to manage the alarm timeout and reach accordinglyto invoke the appropite callback function or mui method. - plus, it will no longer cause the giFTMui task to die due a failed assertion, now the user will be informed of the real issue which caused a failure (which could be any of: out of memory, failed openning the timer.device, or a break request was received..) * While using "giftd INDEXONLY" the daemon will check if the AMIGIFT: assign exists, automatically assigning it if it does not exists. * There could be certain cases where a daemon/plugin config file isn't saved properly to disk using giFTMui, thats because we used strdup() on the retuend string from xget() without checking if the option is set (the string object is empty), our save-file funtions avoids any further issue caused by out of memory or null strings, but the user is not informed about a missing option and/or about the config file may is incomplete.. It should be fixed now. * The bind() test of the reload daemon function can't be never successful due the "Unlink From Stack" addition... Fixed. 2006-08-06 * Optimized the hashing functions which used to generate the shares index, check this out: Hashing a 2MB file give us the following results: - OpenFT's MD5 works about 30% faster - FastTrack's mod-MD5 works about 80% faster - Ares's SHA works about 78% faster - Gnutella's SHA works about 89% faster How they was optimized is *just* based on how data is loaded, and *not* modifying the algorithms!, basically we'll try to load the entire file to be hashed into memory, if the file is bigger than the free memory we'll try to allocate a big enough chunk to work with, keeping about 4MB of free memory always and allocating a maximun of 60MB (while you has lots of free memory it will work faster, else...not) However, to gain an even better noticeable speed up, it will be great if someone out there could provide us of m68k-ASM coded versions for such algorithms (MD5/SHA[1]), we and every amigift user will greatly appreciate it! 2006-08-05 * Reloading the daemon from giFTMui while we are connected to the chat is making the whole sockets events notifications to hang due the task is "paused" on the reload process (short story), as a quick solve, when we want to reload the daemon we'll first use "Unlink From Stack" feature, which shutdown all open connections and bsdsocket.library is closed as well, to later proceed properly to reload the daemon. * Added a progress indicator for when we use "giftd INDEXONLY" to update the shares index, now you'll be informed of the percent hashed, the average bytes per second (just for fun), and the remaining time to the process to end (ETA), this progress is show when using INDEXONLY option only (not when running on daemon mode) and writing directly to stdout (do not matter if you use the VERBOSE option or no) * some minor fixes... 2006-08-03 * Fixed Bug-Tracking Item #1532519, starting amigift it could freezee for some seconds due a blocking sendto() call being used * The chat uses now the same new method to receive data the daemon connection is using, should work faster and/or without congesting the socket.. Also, some minor fixes on the chat has been done.. 2006-07-30 * Fixed a bug on the Online Updater which fail to update some files due a CRC Checksum error reported by analizing not the correct chunk of data... 2006-07-16 * To reload the daemon from giFTMui a timeout-Timer for daemon shutdown chekout is created, if such timer cannot be created for any reason a 'failed assertion' causes the interface to exit completely, This has been changed to avoid the assert()'ion check and instead trying to bind the daemon port should let us know as well when daemon isn't running to be reloaded. Also, such timeout-Timer calls a dispatcher on intervals of 300000 micro seconds, that value has been changed to 700K as well * On a failed assertion situation, the chat tryes to re-connect itself to the server, due a common method from the chat custom class is invoked, this will no longer happen if such method is invoked disposing the class. 2006-07-13 * Recent Ares versions don't report real stats, it's not a bug, at least not on our part. alas, giftd doesn't allow plugins *not* to provide stats, so we just return what the supernode tells us if it's an old supernode then it'll work, if it's not, it won't ... * Stats window will no longer be activated while it is opened/updated 2006-06-30 * Added new options to the giFTMui's MUI Settings, you can now load the settings from disk, save them to disk, restore current settings to the last saved, and restore and/or reset the settings to the defaults. * Fixed a parser error which has made the Gnutella HTTP requests to be incomplete/truncated causing the supernodes to ignore us and hence there was the problem with this plugin not being able to connect on the latest build. Unfortunatelly there is somewhere some other issue which makes the plugin to take long time to reconnect on shutdown connections.. we should assume the problem comes from the "complicated" input and event notifications mechanism, which seems or probably isnt properly ported on the new shared libraries fashion, any help ?... 2006-06-23 * optimized/improved a bit gift.library's logging facility, while using GLOB_STDERR and GLOB_STDOUT we'll check if pr_COS and pr_CES (which fail back to pr_COS when isnt available) aren't the same and hence avoid logging to both filehandlers. Also giftd.log filesize was checked on each write, making a too unnecessary/possible overload... now only every 1000 writes will be checked, which should be ok as the filesize limit is 10MB ... * How FastTrack loads his banlist file and Gnutella loads his hostiles.txt file has been improved. Previously it was just Open()'ing the file and reading line-by-line, to read each line gift.library/file_read_line() was used, which function does "free-old-buffer > read-line-from-file > dup-line-to-memory", NOW we just "slurp" the whole file into memory and process it later internally in one step. PROS: should be working faster CONS: it needs the filesize's memory at once (about ~500KB) * The maximun number of connections which OpenFT guess at startup has been down to 30 (it was 255) ... you can always override that value by using the appropiate option (max_active) 2006-06-18 * How to request network statistics and how to launch the inspector has been changed... there may be now a bit more overload from the GUI but it will no longer require two standalone-signals on connection for the timers we used... * Searches by realm should be now working fine for all networks. * VerifyIncoming tool must be performed while the daemon isnt running, and giFTMui do not checked for that, Fixed. * Optimized how data is received from the daemon... For information, previously we was receiving line-by-line and then processed each line/packet, that data was received reading byte-by-byte until a CRLF is found, furthermore we checked if that was a multi-line string (comming from a "malformed" META data though), which slowed even more the process... NOW we just receive all data available at once, and the data received are procesed internally without congesting the socket... * There may be some situations where a Inspector could not work properly or fail without notice, those are RARE cases though!, What we have noticed is a little problem on the inspector process while a method is pushed to select the next entry on the downloads list, if in the process the user de-select the active entry or select an entry from the uploads list (which action automatically disables any active entry on the downloads list) once the pushed method take action on the next app loop the inspector will fail to continue as it was unable to get the information needed (from the active entry on the list) to launch a locator, at this step the inspector stopped working internally, but to the user eyes it is running (but doing nothing), and thats the only thing we have found buggy on the inspector procedure (at least for now), now if that happens the inspector will be properly fully aborted and in addition the user will be warned of the issue. * Ghosting of the Stop button when it is clicked didn't worked properly to be re-enabled while using multi-lists, Fixed. * Searches directed to the Ares network (by using giFTMui's protocol checkmark) and Locators launched for this same network wasn't working properly due a very stupid bug... the protocol name to be used on a search request and the check for online plugin state is fetched/detected given the network's HASH type, Ares uses "SHA1" and Gnutella "SHA", and on both functions we checked for the three first bytes of the Gnutella hash before than the Ares hash, making request directed to the Ares network interpreted like if what we wanted is about the Gnutella netowrk, FIXED! * Sometimes a Locator cannot stablish the connection to the daemon due the connect event isn't notifyed... fixed...(hopefully!, and hopefully without side effects..) 2006-06-13 * Fixed some string mismatch issues at giFTMui.cd, where updated strings at the build-in laungage wasn't at his time adapted as well on the catalog descriptor. Most important are string numbers #447, #417, #407, #380, #323, #321 where a formatting was changed (%s to %ld or viceversa), also strings #595, #593, #585, #593, #553, #166, #145, #142, #54 and #5 was minimal corrected for typos. * Some users reported a issue about the OpenFT nodes file ends with 0 bytes of size and making on the next run unable to connect to the network, with the need of the user manually replacing the file, well, first is needed to mention that this happens due OpenFT do not stores nodes where we was unable to connect, but theres some factors to consider which that plugin leave out...(ie, dynamic IPs, not a 24/7 node, etc), also I should mention that Im in doubt if theres a bug somewhere since that behaviour do not happens from the first porting of the plugin, or it wasn't reported on the very firsts builds IIRC, so there will be two workarround for now to that issue, 1) the nodes file size will be checked and deleted if his size is 0, forcing the plugin to copy the nodes from the data dir (amigift:daemon/data/openft/). 2) the plugin will check for the enviroment variable DONT_PURGE_OPENFT_NODES before updating the nodes to disk, if such variable is found it will NOT try to leave out nodes where we was unable to connect. NOTE this way of "fixing" that issue is TOO lame and hence subject to change... * Added a new giftd command-line option: TASKPRI/N Obviously is behaviour is to change the daemon task priority, giFTMui has a new slider object to change it as well. 2006-06-11 * giFTMui has been translated to Italian language, Thanks a lot to Samir Hawamdeh for his work. * German and Swedish catalogs contains some issues and has been renamed on the packages until they are fixed... * bzlib.library can be now loaded from amigift:libs/ as well * Starting a new search we will check now if any/some of the networks are online, warning the user if there is no online network and not proceding with the search then. * Default Ares port for giFTMui settings was missing, Fixed. * Requesters Timeout handling and downcheck was enabled by default where the appropiate is to have both disabled at a first run. * some very little internal fixes... 2006-06-04 * Required Lamp.mcc version has been changed to 11.1, which should work as well, as there seems to be some users who hardly find the latest 11.2 ... * On a first clean installation execution, giFTMui complains about it isn't able to load giftd.conf, Fixed. * On giftd's INDEXONLY command line usage, when the daemon is reloaded theres the following error: platform.c:178(amiga_init): FAILED ASSERTION 'active_children == NULL' it has been reported using amigift from os4, and since we dont noticed it from os3 I'm not sure if it is currently fixed... an extra check has been added on program exit (using a destructor) to verify if the internal resources are freed upon exit. * giFTMui's AppIcons facility has been disabled for now to check if theres a problem on os4 causing a grim on program exit. 2006-06-02 * When the user clicks on "stop", the ToolBar gadget will be disabled, as there is nothing else to stop, and enable it again when a search is started. * gift.library and giftd had debugging to the serial line enabled by default, it has been changed to when DEBUG is ifdef'ed. * There was a bug on the preferences's stats slider... fixed. 2006-05-11 * While using FIONBIO mode, the command strings to be sent to the daemon will be checked against being duplicated on the internal queue, this will prevent ie sending multiple STATS; requests when the daemon re-alive after a congestion.... * Added lots of sanity checks on the socket functions, for valid bsdsocket base pointer, NULL strings, etc since, after the addition of "Unlink from Stack" something could happend... 2006-04-25 * Fixed some hit while openening the preferences window due an "incorrect" usage of MUIM_Setup .. * Updated Gnutella plugin to version 0.0.10.1-CVS and removed expire check to retrieve gwebcaches... 2006-04-23 * GIFTMUI v2.0 has been fully localized, about 300 new (not repeated) strings in total, if you wonder.. 2006-04-19 * Stand-By Mode has been (temporally?) removed, mainly due his usage shouldn't be required since the daemon launch now the (re)hashing procedure from a new process and therefore it isnt blocked. * Added a new context menu item for the results lists to browse a user shares list, it is activated when the entry over the mouse is from the OpenFT network which the only network protocol which *may* could return such results. * Some various code cleanups.. 2006-04-14 * If we exit from giFTMui while the downloads list isn't empty there could be a system's freeze due a bug into ClearCache(), Fixed. * The global timer count has been finally removed, the reason is that it wasn't accurate at all (for what we using it), the history for that counter is long.. first it was using the ciaa.resource, later it was using a Software Interrupt, and finally it was moved to a MUI InputHandler of type MUIIHNF_TIMER, but we detected that such handler isnt accurate to count the uptime seconds to have a mark for certain events, that MUI Handler has a retard of 4 seconds each interval of ~10 seconds, the removal of the counter has took just two minutes since atm only three mui methods was still using it, (before it was used to locators timeout, inspector, etc, but they was adapted to use the newly created alarm based timers), such methods uses from now just a inline time()-like function which should be just fine as well... * Some time ago we detected wheres the problem from the Genesis TCP/IP Stack about asynchronous event notification not being handled corrently all the time, it was just because giFTMui uses SocketBaseTags's SBTC_SIGEVENTMASK attribute, as recomends the bsdsocket.library autodoc, and therefore to the opposite of which it says using the deprecated SBTC_SIGIOMASK attribute Genesis hans't problems at all. Since to Miami(Dx)'s eyes seems to not matter what attribute to use (works without problems on both cases) we decided to keep the deprecated one, but todays a new problem comes... the new Native TCP/IP Stack for MorphOS, MOSNet, seems to have a similar issue... such event notification aren't detected at all!. By that reason the SBTC_SIGIOMASK attribute will be used only when genesis.library can be opened, else only SBTC_SIGEVENTMASK will be used (as it should), even if at time of this write isnt clear and/or tested thats what is causing the MOSNet issues... * Added a new item to the Network menu: "Unlink from Stack", this option will close all active sockets giFTMui has in use, and later the bsdsocket.library will be closed as well. This could be helpfull (apart others) when fex MiamiDx sends a SIGBREAKF_CTRL_C signal to all applications which are still using the bsdsocket library, the first time giFTMui receives such signal it will first 'Unlink From Stack' and if it receives a second ^C signal it will exit completely. 2006-04-09 * fixed and improved the main window's transfers gauge progress by using double linked lists.. * Finally finished the Online Updater to the whole AMIGIFT components, thats for each individual library/plugin, frontend and daemon, as well to update the nodes and banlist files for all networks. 2006-04-07 * gift.library/log.c: fixed to use corrent BPTRs from process caller pr_CES for GLOB_STDERR and pr_COS for GLOB_STDOUT, also added log filesize limit to 10 MB. * Removed GetNodes tool (used to get OpenFT-only nodes) completelly. * Requesters timeout value are now settable from the preferences window as well, its initial value is get from the tooltypes firstly, and a option to disallow requesters completelly has been added. * "chat log stopped" msg is written twice to the log on exit, fixed. * Added InputBuffered method calls here and there... ie, before processing socket events. 2006-03-27 * gift.library/dataset.c: added thousands of sanity checks by using 'MagicID' fields on Dataset * and ds_data_t struct types, even if there could be still some hits on certain cases it should now hopefully make the system alive without further issues, also because the original giFT sources do not checked for NULL struct parameters passed to the library functions, and used them without caution where a damaged memory area could happend... theres the first benefit of using the new allocation system, which btw isnt working properly from gift.library =), but atleast let us reduce the memory used by datasets for about a 68%. Must to mention as well that all assert() calls (~153) have been removed from this file, following ofcourse a recursive trace to the callers, given them a chance to the daemon to continue working without annoying 'failed assertion' requesters, thats indeed something the *whole* core should do, but a single file took me about 3 hours to fix everything, so how many damn time I'll need for the others 200 files... * gift.library/strobj.c: fixed and improved string_appendvf() function which sometimes writted +1 bytes of the buffer length (our allocation system reserved already enought room, but this behaviour was buggy anyway), This function now also uses the global semaphore since static data is used (a fixed fmt passed to RawDoFmt()) * Removed usage of unneeded "constructors" and "destructors" from the libraries and plugins. 2006-03-26 * The TCP/IP Stack is now detected on the oposite way to activate FIONBIO (non-blocking) sockets, before we just check if an AMITCP port is available, now we only check if a MIAMI.1 is, the reason for this is that todays have been release new tcpip stacks which are all based on the AmiTCP API and since Miami(Dx) seems the only stack which DO NOT have problems with AMIGIFT..that change should work fine for all now.... * When a new Timer request could not be created it shows a requester to inform of the error, This end up on a endless loop if the timer which can't be created comes from the requester timeout feature, its fixed now just showing the error to the debug window. * The global timer count was automatically started and stoped overloading MUIM_Setup/MUIM_Cleanup from the 'Advanced Search' custom class, when we replaced this class we forgot to move the timer making certain events unreachable, Fixed. * Updated Ares plugin to Version 0.3.0, fixing some illegal abort() calls and added meta data tags for various AmigaOS-only filetypes like lha, iff, etc * Added some background colors to some preferences groups, fixed also some inner spacings and incorrect usage of Label2() for Checkmarks were Label1() must be used... * OGG Vorbis support has been (temporally?) removed from giftMeta.library, the reason for this is that new additions on our stdlib has make this lib dont loading itself no more... there seems to be some kind of conflic with his constructors since giftMeta was the only component which still used libnix, however I dunno for sure what was the real problem here, I only know atm that removing libnix completelly the library works again :-/ 2006-03-12 * libraries are now loaded from anywhere, thats first from CurrentDir, then from HomeDir (if isnt equal to CurrentDir), and if unsuccesfull fail back to standard system's libs directory, for each lock we check on the root as well into a "LIBS" subdirectory. * our amigift's stdlib (standard link library) lacks a essential feature until now, reallocating the programs stack space to fit the needs, this has been fixed implementing a basic expansion method using Exec's StackSwap() ... * The memory allocation routines using pools have been replaced, the only real benefit about this will be to the developers thanks to his internal debugging capabilities, which are more sofisticated the olders we used from amigift.library. * daemon and frontend have been adapted to use a new Local files location, that is "amigift:daemon/Local"'s contents must be moved to the parent, nothing more. 2006-01-05 * The standalone AMIGIFT: assign is no longer needed, giFTMui will assign it automaticaly on startup if such path is not found. * giFTMui uses now a dimanically loadable plugin names to the search protocols, loadable from amigift:data/protocols which contains a network name by line. (editing that file and using only relevant plguins to you will result on a less height object as well, if you want to, but that file has nothing to do with the daemon plugins, thats just for when you want to search at specific networks). 2006-01-04 * giFTMui launches a new Timer request when a MUI_requester is opened, the default seconds to wait is 45, once timeout the requester will we automatically closed (selecting 'cancel'). This will prevent "annoying" requester from blocking the gui when you're not on front of your computer.. That default value can be configured using the TOOLTYPE: REQTIMEOUT * Added clipboard, console, and printer devices functions, printer and console devices aren't used right now but planned for further improvements.. 2006-01-03 * Added some giFTMui's AppIcons to the common working status, thats downloading / uploading / both, online / offline. (On startup we check if the daemon is running, if it is, the appicon is set to Offline, if isnt, the default program icon is keep) * Removed 'Advanced Search' popup object and created a new mui class on which you'll have two appeacence panels to the searchs, the single one (like before at bottom of the toolbar) and the new one at left side of the results list, which uses a virtual group to fit nicely from here, as well another class created (EGroup, short for Expandible Group) inspired on Windw's explorer menus... EGroups are used to the realms, protocols, and results filter, which are the objects previously on the 'Advanced ...' popup. From now the file advs.cfg are no longer used and you can remove it safely. Both search panels are switched using the arrow images. 2006-01-02 * Improved our cached-strings class, (used ie on the search string object or the chat), they has now a context menu where you can pick last added entrys (apart using the arrow keys), as well save them on exit to be loaded on the next run. 2005-12-16 * Added a new giFTMui's InfoBar at main window bottom, with two huge lamps and the info string itself. one of the lamps is the previously added as giFTMui Status marker, the new one will indicate a daemon's share sync/rehashing process, and the informational string will be used to daemon-issues only, thats subject to change however... 2005-12-11 * Implemented a thread-like system into gift.library. The index/hashing of your shares and/or completed downloads (on Share Completed mode) will no longer block the daemon!. Those threads will be launched on the background with priority -1 so the system doenst grind to a halt. * Fixed some WaitSelect() issues (mainly noticeable on AmigaOS4) where a wrong descriptor is used.... 2005-11-30 * Changed MUI's ObjectIDs to the prefs, which mean you MUST delete/rename your envarc:mui/giftmui.cfg file before running giFTMui now (just once, ofcourse), and regenerate your preferences, dont forget to do it or things will not work properly! * Removed usage of getopt() from the daemon to use ReadArgs(), the commandline arguments are now as follow: H=HELP/S, V=VERSION/S, I=INDEXONLY/S, P=PROTOCOL/K/M, Q=QUIET/S, VERBOSE/S, DEBUG/S, L=LOGFILE/K, HD=HOMEDIR/K, LD=LOCALDIR/K, DD=DATADIR/K, PD=PLUGINSDIR/K, AB=ASYNCIOBUFSIZE/N Use the HELP switch to know more about them. giFTMui's prefs has been adapted to support some of they, as well a CONSOLE option has been added which will use the VERBOSE switch to output the daemon logging to the given console (mainly to debug purposes and/or read interactively what the daemon is doing internally)... * Implemented usage of asyncio.library on the daemon for the downloads. This library is now required!. The internal buffer size asigned to AsyncIO has been set to 32KB, which you can override using the AB commandline option, or ofcourse from giFTMui. * The networks status lamps worked just as On/Off, now the networks which you chossed to have active from the giftd prefs will have a initial yellow color, when the network goes online will be green, and the rest, which arent selected on the prefs, will remain with the black/off color. * .Cache items which are no longer on use arent removed on exit if the downloads list is empty. Fixed. * OpenFT's max_active guessing value has been fixed to be 255 as max for that network connections.. that value is used when max_active is set to -1, change it if you want.. a value of 40-64 should be ok as well... 2005-11-18 * Added a new huge a lamp as status for what is doing giFTMui internally, for now SendingData/ReceivingData Loading/Saving Connecting/LookingUp are supported, which remember its colors are configurable from the MUI prefs. 2005-10-03 * On completed downloads, giFTMui just checks the downloaded file from the completed folder (to play it, or add the URL as comment on the file), but this is wrong since it dont consider if the downloaded file may be corrupted and moved to that folder, now you will be warned as well on those cases.. 2005-09-16 * The Transfers List(s) has been improved, working as follow: - When the 'status' field is 'Active' the porcentage transfered is showed. - When the 'chunk' field is 'Active' also, the text is replaced by an NList "Image" (area obj) which graphically paints the tranfered chunks, if the chunks for a transfer are as follow: 'chunks = 1661274-1761590 5023086-5234266' those ranges are filled with a rectangle, using MUI's HALFSHADOW pen, when a chunk (whole range) is complete the pen is changed to FILL/MASK, and so on... Unfortunatelly, on how works the daemon, if we download various chunks from a same user, the previous chunk is erased from the list (command line returned from the daemon), and therefore we can't mantain a correlative filled rectangles, (or, the same applyes if we restart giftmui when we have active/pending transfers), and in that case (if the total transfered bytes mismatch from the sum of all chunks) the background is filled using HALFSHINE pen (just like a gauge does). However, to make a correlative painting, just a little cache system is needed, but we keep just as-is for now, until we check if that could produce or no an unnecessary overload... 2005-09-10 * Fixed creation of cache files when the .Cache folder doenst exists. * sharing root paths file is readed just after creating the prefs object class instead at opening the preferences window, therefore FBrowse should work properly now. * How the daemon is launched from giFTMui has been completelly rewrited, we use now a properly SystemTags call using ExitCode Tag to detect when the daemon exits itself succesfully (that previously was intuited..), also we use now mui's methods to the Application class dispatcher which allow to remove everything on a system-friendly fashion when a fatal error (a failed assertion, out of memory, or something) happens. 2005-09-06 * When a connection to the daemon failed and we aren't using 'launch on startup' a check on the incoming folder is performed to verify #?.state files, this has been removed from here and moved to the tools menu, now you decide when to do that check (its really needed only if the daemon didn't exit properly, due a failed assertion or something.., and there was pending downloads on which case may the files #?.state are keep as #?.state.tmp and on the next daemon run they aren't recognized. -- erm.. however this should be made by the daemon itself. . . 2005-09-04 * Removed timer.device's software interrupt and created a new complete timers system based/inspired on unix's alarm() behaviour. pros and cons: new timers-system uses UNIT_VBLANK precission and softint used UNIT_MICROHZ which overload the system since we used it to count seconds only.., also the seconds counted was stored on a variable which as well was used as marker to manage all timer-related events..(yeah, very wrong method, I know now :P) overloading even more the system at mui's loop procedure... New timers-system should overload much less (or, no overload, better say ;) ... For the main seconds counter we use now an MUI's InputHandler of type MUIIHNF_TIMER, when a connection to the daemon is stablished we use the mentioned alarm-based timers to receive networks statistics, to manage Locators timeout, and detect Inspector intervals. * As you should already know, the transfer progress inserted on the downloads list comes from the first source on the string/command returned by the daemon, firstly I thought on doing that action to avoid the parser being overload scanning the whole string, but this could become on mistake from the users thinking a transfer has finished when indeed did not, and therefore wondering that is a bug on giFTMui... by this now the whole sources are scanned looking for an active status or the end of the string is reached, I fear what could happend when a transfer has about 20 sources and the last is the active... but, even if that could end on a high overload parsing downloads progress, is the right action which should be performed. * Due the above mentioned point, cloned lists (like main-window's dlist), can be deactivated, using his context-menu, you decide if you want that extra overload... 2005-09-02 * optimized logging functions (info gauge, debug, chat logger) * fixed downcheck paths issue... 2005-09-01 * The whole core ISN'T using LIBNIX**** We have "created" our own 'standard library', as replacement for libnix, from sources from various places as well created/optimized by us, check the LICENCE amigaguide's section for more info about from where they comes, however some of those sources comes from the libnix distro as well, for functions like setjmp/longjmp. The main advantage for the usage from this library is that it isnt using unix-FILE I/O since amigift do not use it (we use dos.library directly for quite all related) and therefore there should be a noticeable speed up for strings parsing (ie: vfprintf->vsprintf) 2005-08-23 * Since no more than one Locator is allowed on the current version, if you try to launch a second one you will be asked to abort whichs running actually and launch a new one for the selected transfer. 2005-08-22 * in case you disable the chat there is a new message which allows you to connect later if you want. * added more blank spaces to the embeed giftd.conf (compressed into amigift.library, by using bzlib.library) for the sharing roots. (about 20000 chars, hope its enought.. ;) 2005-08-21 * Splash Window was closed once tha main window receives a MUIA_Window_Open attr, this has been changed to be closed just before the mui loop since beetwen that Splash Window is closed and the Main opened could take some seconds.. 2005-08-19 * giFTMui has a new option to check if the running TCP/IP Stack is online, and therefore calls to gethostbyname() wouldn't block if you're not online. active it from main giftmui prefs at page bottom. * The popup string for sharing roots has been changed to accept unlimited number of paths since that is allowed by the daemon. * added some "hacks" to use customclass's objects.. this isn't legal for mui classes since objects can't be shared outside them, but well, since they aren't externally loadable who matter... (this should speed up certain loop jobs, ie. inserting items, transfers, etc..) 2005-08-18 * amigift's core, libs and plugins, implement a new method to failed assertions behaviour, previously the whole core is suspended, now it uses setjmp/longjmp to set and jump to a working stack frame when something went wrong, I dunno how legal is this to the system.. (by being called from shared libs), but firsts tests passed OK and even if its/could be still buggy should be better the previous method on which you was forced to reset. * The transfers's downloads list has been added/cloned on the main window, it is (de)activated by a gauge-based toogle button at results list bottom, that gauge button has four pixel height and therefore shouln't be annoying if you do not want to have it activated. Also that gauge has another nice feature, it is global counter for active downloads, it computes total size, transfered and average cps, 'Estimate Time Arrival' and the number of active/pending/queued downloads, that gauge's behaviour is activated by using his Context Menu. 2005-06-22 * Added new tooltype 'COMPACTMODE', which creates the main window on a page group fashion to show all primary windows (transfers, debug, chat, prefs) from the same main window. * If the chat can't connect succesfully the nlist object is replaced with a new informative object containing a button to reconnect... 2005-06-19 * Added two new giFTMui options to the results list, they are "Insert Sorted" which insert items using MUIV_NList_Insert_Sorted and "SpeedUp Insert" to use MUIV_NList_Insert_Flag_Raw. (refer to the NList.mcc docs for more info). * The string "[ 00 | 00 ]" at right pos of the info-gauge, which inform of selected entrys and his sources, are now showed on two differents TextObjects. * The results on multi-lists functions have been completely rewrited, custom-class based, accepting unlimited number of lists and some others enacements, ie. number of results for a search no longer shows on the informative gauge when there are more than one simultaneous search, instead it uses the page title, as well if the list isn't active and new items are inserted its page text color change to white, if ends changes to black-bold showing the size of all items on the list, etc 2005-06-03 * Inspector, Locators and Chat NO LONGER uses a new Task!, this should make the client work heavily more stable, with the "bad point" that the main task may notice a bit more overload... (however thats subject to change once again just to allow creating tasks if the user wants it, just request it) * Optimized giftmui's network functions, everything is supposed to work just fine... (atleast using Miami(Dx)) * Networks Logos are now externaly loadable (no longer linked with the executable) via datatypes.library/iffparse.library. 2005-05-12 * Configured shortcuts for menu options and added a new option, as suggested by Framiga, to allow save settings before quit. 2005-04-29 * Added/replaced math functions which now supports 64 bit integers allowing upto One ExaByte (1152921504606846976 Bytes). (for now the unique advantage of this is when showing the size on bytes on the various nlists, which previously there wasn't ok with filesizes >2Gb) * Replaced Networks statistics window by a new one using a more likely NList Object to show the data, also added four new fields, "size by file", "files by user", "downloads", "Uploads", which will show (as you can deduce by the name) the average size of each file the network owns, the average amount of files each user is sharing on the network, and the number of downloads and uploads you did on the network, respectively. 2005-04-15 * Cleaned up amigift.library's unused functions, that is some unsorted implementations we created and at the end not being used for one or other reason..., this means that the library is totally INCOMPATIBLE with olders versions, however there shouldn't be any end-user problem because the first library function at offset 0x1e has been preserved (__init_amigift(), which just return NULL), so the user will be warned if he tryes to call this (no-longer used) function from a old client. * gift.library's platform_init()/platform_cleanup() ISN't safe because could be the case that two processes call them... fixed. (adding for the job a new semaphore. The same behavior applyes to libgift_init() and libgift_finish() but those functions shouldn't be used more than once instead those platform_* which should be able to be called anywhere anytime when some of the platform globals are needed by clients..., as an additional note: those platform dependent functions should be further reworked/renamed since we should assume that they will be no longer used outside an AmigaOS enviroment). * Everything has been compiled with latest libnix. and giftmeta.library with latest vorbislibs optimized for 020 and 060 using -O3. 2005-02-13 * When giFTMui worked with normal objects functions and/or created at application creation time, everything was using hooks to launch each action, this has been changed to use respective methods/attributes for each new custom class. * giFTMui is able to use TearOff MUI Class on the main, transfers, and monitors windows. However that class seems a bit..buggy... it may freeze your system while you are moving objects, on that case you can use SmartCrash to intercept illegal accesses..and be able to continue. Once you have configured your own interface there is no need to use SC (but I recommend you to use it always!), and you can enjoy safely..your new giFTMui's look. To activate TearOff.mcc you must set to 'YES' the TOOLTYPE 'TEAROFF'. Also, you can change the ToolBar from a horizontal bay to a vertical one, but looking horizontally... to look really vertically it can't be done on-the-fly just changind an attribute (why? ask the author), and the toolbar object must be re-generated which is buggy ATM... if you want you can try and see yourself how is working setting the TOOLTYPE 'TOOLBARHVERT' to 'YES', what happens is that the toolbar object isn't always properly created and we hope to fix it soon... 2005-02-11 * improved putmsg() routines used by the subprocesses and added some more debuging messages. now the tasks will not continue if the message wasn't received and/or processed correctly... 2005-02-07 * amigift.library: re-enabled startup initilization for all needed resources (at LibInit() stage) * Created a global/common NList parser (using the formatting the daemon uses to send his strings). * HistoryLoad() Optimized (which should load the transfers history more faster), also size parameter to InsertHistoryItem() has been changed to be ULONG (which could make problems if the lib is used on a older client). * giFTMui's file browser no longer creates a new task. 2005-02-04 * The whole MUI Interface (well, ~90%) is now using custom classes for everything, instead static objects.. as well, a Splash window has been added which shows the progress of creation for "everything". (This Window can be (de)activated using the TOOLTYPE 'SPLASHWINDOW') * Context menus on the monitors has no effect, so we removed it (its a monitor after all). 2005-01-23 * dataset.c: removed all abort() calls which just do problems on gift.library, using for now traces to ensure there aren't other(s) problems by doing that. * Fixed some hits generating the shares db file... * Now the daemon check on what filesystem the incoming dir is on, warning if it isn't a SFS/PFS partition. * Current amigift.library's strdup() implementation is forwarded to gift.library one (like all allocation related functions), which has made problems due the original one wasn't allocating an additional byte as claim the ANSI stardard, so when a string has 0 length and it isn't NULL it returns NULL when in fact it shouldn't, it produces problems/hits when searching, which are fixed now, atleast on that point... * removed assertion check from fst_peer.c(remove_global) which makes Genesis users (!?) not be able to exit nicely. now if the assertion isnt true just returns (which seems fine for his job). * Chat ID isn't cleared properly on exit which makes giftmui task remains (hidden) forever on the tasks list, Fixed. * we forgot to allocate the used memory on the locators when his initialization was reworked, which ofcourse makes them crash horribly, its fixed now. * reworked connect() functions and moved macros to functions... 2005-01-22 * There was several problems regarding subprocesses and how they are launched/killed, how they manages global variables... and what when they are running and the user quit the client... so we decided to create a dedicated msgports system just to do that job properly, each problematic task and/or each which isn't independent (those which need to interact with giFTMui's global varialbes without affecting in any way to this main task), has assigned an ID which is set/cleared when the subprocess start/exit as well when they need to to change the status/attribute/etc to an object, they instruct the main task to do it himself instead try to manage them itself (like PushMethod but more advanced :), which could create certain problems sometimes.. a clear example of this is the Locators, chat, getnodes.. * Changed protocol selection MUI's CheckMark to toggle-buttons including his respective network logo. * PFS3 partitions reported as working on the noixemul version with (apparently) no problems. 2005-01-21 * giFTMui's ARexx port has been reworked, however a little implementation still (commads requests are welcome) * There are parser errors on the chat when the nick used is too long, Fixed, rewroted the whole parser... 2005-01-19 * HubLists which are bzip'ed are ignored, fixed (using bzlib.library). 2005-01-15 * The client has been adapted to support the latest new plugins, also no more unix to amiga paths (and viceversa) conversion is perfomed which means should be used with the noixemul daemon version only. 2005-01-09 * Two new plugins available, Ares (http://www.aresgalaxy.org/), and DirectConnect (http://www.neo-modus.com/), However DC is really unstable ATM... 2004-12-21 * First noixemul daemon version. It has been compiled on separated components for everything, instead all on the same executable. There are giftd (the daemon itself), gift.library (gift's core design), giftproto.library (gift's API to plugins) and giftMeta.library which manages meta data tags. As well the plugins as been designed as they should be... FastTrack.PlugIn, OpenFT.PlugIn, Gnutella.PlugIn, etc. Also, pleased to announce the new memory allocation system (replacements for malloc, realloc, calloc, free) is based on mempools, which will make amigift (hopefully) memory leaks free... but frustrated we have noticed giftd keeps too many..chunks unfreed when they are apparently no longer used, ofcourse they are been freed when the mempool is removed but god know what could happens after few days uptime... however the memory unfreed isn't too much after some hours of use, so do not consider this an impediment to use this nice piece of software :) Unfortunately there are two know bugs on the noixemul conversion, the shares system dont work properly, and the OpenFT and Gnutella plugins sometimes "hangs" itself... 2004-12-13 * Fixed a problem when saving a plugin config when his drawer doenst exists... 2004-11-28ML Release Version 1.1.3 * Reworked ReadFromDisk/SaveToDisk functions, they worked unsafely because just looked for the option name without matter what is the group it is on, when indeed there could be the same option for various groups. * Fully supported Aminet plugin from the client (the plugin itself should be checked his working still..) 2004-11-19 * Added lots of new prefs options, for the daemon and plugins, they are those that are UnDocumented, and shouldn't be normallly modified by the end user... We have added it just to have full control over the daemon from the client. REMEMBER that you MUST reconfigure everything!, best way: rename EnvArc:MUI/giFTMui.cfg and load the client to do so. * Used bzlib.library for the build-in daemon and plugins configuration files which makes final executable much smaller, so you need that lib to "Save To Disk" function. * Created a TODO list. 2004-11-16 * Changed how the daemon is launched, instead of connect at startup and wait for a connection refused now the gui try to bind the daemon's port and if sucessful then run it. * Added timeout to forbid/permit re-assign the socket signal mask. 2004-11-04 * Fixed a bug on the multi-lists which makes last list "unquitable" 2004-10-28Public Release Version 1.1.2 * Fixed hits creating the Cache files.. * Fixed transfer sources list and optimized his NList parser. * Fixed a hit on the chat. 2004-10-26Luca 'Hexaae' Longone * AmiGift archive contains a mangled sample throwing hits with V41sound.dt and its 8svx datatype!. (Zurriagazo.8svx) Fixed. 2004-10-24 * Fixed pointer mismatch when using FilePart() to extract the filename from networks which support files with full paths. * Some Warning strings received from the daemon are lost, Fixed 2004-10-22Public Release Version 1.1.1 * Fixed how the client proccess the daemon command ADDSOURCE(). When adding a source which is already being used the daemon automatically remove/replaces it and the client errnoneously interpret the old one has been removed (if no CHGDOWNLOAD() command is sent between ADDSOURCE() and DELSOURCE()..), theres a big problem when that source is the only one for a transfer and auto-Locators is active, with result as you can imagine... * Improved scanning of the results list to look for more sources, we have noticed out there are too funny people sharing/faking the same file with different name, (which result is applicable to the above mentioned problem with ADDSOURCE() command), on those cases all sources from the same user are added independently, which becomes in a high overload (as high as you has the 'max sources' option) performing the ADDSOURCE()->DELSOURCE() behavior. Now all those loser users are ignored. * Multi-Downloads Counter dont work when 'downcheck' isn't active, Fixed. * Locators being running can be now controlled via commodities. * Fixed GetNodes Tool, and added a 'verify' option which will read your current nodes file to perform some basic report about whats the bigest/lower vitality/uptime nodes and some other info. * Updated AmigaGuide Docs, including History and FAQ sections. * Fixed and improved multi-list names behavior... * Changed ALL %d's TO %ld from all sources (and catalog descriptor) to use (v|s)(n)printf replacements (no more libnix) using RawDoFmt() 2004-10-15 * Fixed a bug on the daemon when it is loaded only to generate the 'shares' database file, which caused a failed assertion... * (hopefully) fixed the bug which avoids to connect to the daemon sometimes when 'launch on startup' is active... reports plz? * ADDED FIONBIO (non-blocking) sockets mode on client->daemon communication, using as well queue sending method. ( unfortunatelly this is disabled to Genesis users until notice) * Reduced SocketBaseTags's DTABLESIZE value to his original size... * Fixed hit $000173C8 on amigift.library ... * Optimized 'Advanced Search' functions. * When a requester pop up a sound is played, but if it shows before the MUI app has been created (failed loading a lib, allocating memory, etc), there are unpledictable results when trying to read the (unavailable) MUI Object containing the sound file. Fixed. * Added kprintf() in addittion to the internal debug assertions checks, and added optionally usage of the enviroment variable AMIGIFT_DISABLE_DEBUGREQS to avoid requesters from being pop up with debug messages. * Listing Shares wasn't possible due the 'Advanced Search Options' checks..., Fixed. * On disconnect (not quiting) if there are pendinng searchs, they are cancelled on the daemon side but the client remains his session number which on reconnect a new list is opened when performing a new search (when using multi-lists and the currennt list is empty), Fixed. * Fixed a bug on StandBy mode which causes the window to pop up even if not connected... (the socket could be != -1 but isn't conected) * When using StandBy mode, if the chat window is open the StandBy remains inactive but closing the chat it isn't reactiveted, Fixed. * ADDED ToolTypes recognition, currently suported are: BWINDOWS (to activate BWin.mcc's windows, same as using envar GIFTMUI_USING_BWIN which you should remove now), DAEMONWARNS (to insert in the debug window warnings sent from the daemon), DEBUGREQS (as above mentioned to disable reqs with debug messages), and FORCE_REHASH (the same as using the envar, the daemon shouldn't be runnng (when you start the gui) to this to work). If the tooltypes could not be found default values will be used, that is: FALSE, TRUE, TRUE, FALSE, respectively. * Optimized parsing of default prefs values. 2004-10-08 * ADDED Feature to know how many sources has the file you selected from the results list. (Support Request #1041687). A new field will show at the right on the info bar, Something like "[ 01 | 07 ]" this means you selected a file which have 7 sources. * Rewrited the function which parse the (Transfers) Sources list. * Visible (results list) columns aren't properly saved, Fixed. * Fixed a bug introduced on the new nList parser used for the Transfer in progress which pointers (the string received from the daemon) are lost after use... it affected to the DL/UL Monitor and the Sources list. * When a upload goes complete the size stored on the Transfers Statistics comes from the total size, but it isn't the real size uploaded if it was just a chunk, Fixed. * Fixed a nasty bug introduced on the last version due the function _GetSession() which was optimized and changed to not allocate his own pointer on memory, it affects to the multi-list system and Locators. * ...and some minor internal fixes/optimizations. 2004-10-06 * Corrected Locale strings numbers in ascending order. (after removing some of they non needed in .cd/.catalog) * Added German translation, and fixed Swedish catalog. 2004-10-04 * Fixed low stack size for MUI's NList.mcc class. * Changed error message returned when failed opening amigiftt.library to match exact library version needed. * Removed assertion check into _getConfigStr() * Rewrited windowTitle and onlineLamps functions, which should work faster and safe... * Clicking twice on the stats window both pop up but the first one can't be closed, Fixed. 2004-10-03Public Release Version 1.1 * Resources updated on the full archive. (thx to Kevsamiga by maintain a uptodate list of latests versions) * - Updated Daemon to Version 0.11.7 * - Updated OpenFT plugin to Version 0.2.1.4 2004-10-01 * Reverted context menu function to old method... * fixed a nasty behavior on the new bubble function.. * some minor fixes and optimizations... 2004-07-09 * The field Transmit inserted on the Transfer Window comes from the last source, it could make misunderstanding leting us to think there is no data downloaded when in fact there is it. - Fixed. * On daemon startup your sharedir is scaned, and if there was any change and/or addition that file is (re)hashed, thats so hatefull if you have lots of files, since, even if rehashing isn't needed all timestamps are compared, to avoid that frustrating situtation the operation will be perfomed *only* if you set the envar: 'GIFTD_FORCE_REHASH_ON_STARTUP', and if you own a low processor is recommended that you never uses it, instead launch 'giftd -x -v' after a fresh boot. Now the startup isn't instantaneous since the shares db must be loaded into memory, on my 060 less than 2 minutes to parse about 4000 files and 2Gb (consider the time depending the number of files) * Added 'available plugins' to About window. If the current plugins could not be obtained for some reason.. defaults at compile-time will be used. * Rewrited (main nlist) bubble help and context menu functions. * Fixed a bug on Gnutella, when parsing meta-data tags, which causes the daemon to exit itself without futher notice/error message. * auto-disable 'scan files' if the item do not have a HASH value. * Optimized 'Read/Save from Disk' functions. * fixed a hit on the new nList parsers. 2004-06-28 * Removed CIAs usage. (now the client should work on the next Amiga compatible platforms, MorphOS, AmigaOS4...) * The chat uses his own MUI application. * Rewrited exit method.. (which should fix subproceses troubles). * Rewrited event, sounds and player preferences groups. (they looks like before but the creation/loading is fasster). * - Updated FasTrack to Version 0.8.7 * Some minor fixes/optimizations/cleanups ... 2004-05-30 * Optimized Transfers and Results NList parsers. they should work alot faster, safe and with less memory consumition. (to insert a 999 results list was needed about 8/10 Mb, now the needed are about 3!..) Note: newly added meta-data tags are appended to the comment field. * Added debug and safe modes to some amigift.lib's functions. * Networks statistics keep no more main window slepping. * Fixed chat window corruption with p96 users. * CManager is no longer required. * Fixed some hit on GetNodes. * Some chat improvements.. * Fixed a bug and optimized CreateCache function. * Supported MESSAGE command (sent by the daemon). * Fixed a bug on Stop (Transfers window) procedure. * - Updated OpenFT to Version 0.2.1.3 * - Updated FasTrack to Version 0.8.6 2004-05-09 2nd bugfix update * Fixed ramlib trouble, which on systems without a ramlib-stack-patch causes amigift to freezee on startup, now the purpose of such a patch is performed by amigift.library at LibInit() stage increasing the ramlib stack to 16KB...and loading here everything* amigift (and third part resources) needs to work properly (even if not used at this point), as well checking for latest versions. * Fixed the issue which causes amigift/giFTMui not be able to be loaded as first MUI program on startup, caused by muigfx.library... * Fixed chat window corruption on scroll down. * Decreased internal allocated memory to swap stack size. * included patches for xml2.library which fixes a memory access error... 2004-05-02 bugfix update * Fixed memory leak * Changed min rexxsyslib required to v36 * Fixed bug #946324 (hits disconnecting) 2004-05-01 First public release.
------------------------ AMIGIFT - ChangeLog ----------------------------------------------------------------------------- $Id: ChangeLog,v 12.7 2009/05/31 14:30:51 diegocr Exp $ ############################################################################# ####### AMIGIFT 2.0 (Final) PUBLIC RELEASE ####################### 2009-06-01 2009-05-07 * Improved the way search results are inserted, specially noticeable while working on multi-lists mode. 2009-05-04 * Added tooltype MUICFG. Now AMIGIFT can work fully Portable. Use this tooltype to provide a filename where to store MUI settings, eg: MUICFG=AMIGIFT:GiFTMui.cfg - If no tooltype is provided it will fallback to the default ENVARC:MUI/GiFTMui.cfg 2009-05-03 * Added tooltype WSEASYNC. While FIOASYNC isn't activated, Socket events will still be handled asynchronously (Internally by GiFTMui itself), using this tooltype you can disable such async way, just in case you *really* need to for whatever reason... 2009-05-02 * Changed the way Context-Menus for results/transfers lists are created (Replaced OM_ADDMEMBER by MUIM_Family_Insert) * Several -little- internal fixes and improvements... 2009-04-07 * Online Updater's updating everything automatically became broken at some point... Fixed. * Some minimal internal fixes. 2009-03-24 * When a Download is cancelled, or in the Verifying/Completed stage, the session-id will be stored on a new 'transfer in limbo' list, this should avoid Locators from acting on them, just in case of.. * Transfers Window's info-bar to downloads (aka 'trackdls') wasn't correctly refreshed - Fixed. * The Inspector was being launched when there is no pending dls, Fixed * Updated Italian catalog, Thanks to Samir Hawamdeh. 2009-03-01 * GiFTMui is now available in french language, Thanks a lot to Eric 'Tarzin' Luczyszyn and Philippe 'Mrod' Bovier. 2009-02-20 * The 'Create Cache' became broken at some point.., Fixed. * GiFTMui's Threads subsytem was buggy dispatching async messages, which was only noticeable from the 'Uploads Queue' (where a NListree bug was fixed as well). * Moved 'trackdls' stub from NList's Destruct to NList's Remove... * Fixed some issue on the MUI's PushMethod() emulation... 2009-02-15 * The NList Images (network logos) to the Stats and Updater windows will be handled on demand now. (Created at MUIM_Setup and deleted on MUIM_Cleanup) * The plugins has now MD5/SHA1 checksum routines in m68k ASM! Thanks a lot to Jochen Hoenicke who originally created them for PalmOS... * a few internal fixes... 2009-02-07 * Added tooltype NLSLEEP to put on/off the feature/hack of forcing NLists to be set "to sleep" (as previously mentioned) regardless of the CMAPSETUP status. Disabled by default. * FFS partitions to the incoming/completed folders are from now officially supported, it works in the follow way: The first time you request a download (and only the first time per session) your incoming folder will be checked to discover over which filesystem it is, if (( DiskType & 0xFFFFF000 ) == 0x444f5000) AND it's NOT a FFS2 (OS4) partition, the maximun number of chars a filename can have will be automatically set to 20 chars, only 20 chars because downloads are saved as .DLID.<filename>.state max on the incoming folder, until they are moved to completed. However, we still don't recomend to use FFS, since most todays files have long names... * Certain messages coming from the daemon will be intercepted and localized on-the-fly if a catalog was loaded, this should be nice than localizing individually each of the amigift components... * a few number of little internal fixes... 2009-02-01 - During the last two months there was lots and lots of changes made to GiFTMui due a quite annoying MUI-related bug found, below is a list of the most significant changes... * All of the NLists will share a common memory pool. Also, downloads/uploads lists will now use MUIM_NList_Contrust/Destruct replacing the old Hooks way, plus other little enhacements. * Removed about 70 functions from the amigift.library API, which either was obsolete or used only by GiFTMui, which has been therefore moved to the GiFTMui sources. * Transfers History Window will no longer use a dedicated custom class, it will use static set of functions which will handle the history on demand (when new items are inserted, or the window needs to be opened, else it will be keep silently unused) * Replaced usage of MUI's PushMethod by GiFTMui's PushEvents, which handled by eventdsp_class.c.. that custom class have been rewriten from scratch to dispatch events/methods on a better way... * Many of our GiFTMui's custom classes was creating Notifications on objects since OM_NEW method, this has been changed to handle it at MUIM_Setup and killling such notifications at MUIM_Cleanup as it should have been since the beginning... Usage of MUIM_Window_Setup/Cleanup have been added as well to all of our MUIC_Window's subclasses as for the matter. * Replaced ALL NLists where they are really not required (as for example one-column lists), MUI's normal lists should be just Ok.. * Added GiFTMui's Tooltypes: AUTOREADSAVE: Handling of 'Read/Save From/To Disk' will be perfomed automatically when requesters pop-up asking for it. TFSTATUS: Controls whenever the main window's counter for all active transfers should be enabled. TRACKDLS: This control if the Transfers Window's downloads list should include the info bar... NLWINML: Control whenever debug and socket activity windows should use NList or normal MUI Lists (just added for testing purposes) CMAPSETUP: Short for Compact-Mode ActivePage Setup. This is some MUI *hack* which while working on COMPACTMODE will handle objects's MUIM_Setup and MUIM_Cleanup switching between tabs (RegisterGroup Pages), and therefore starting/killing notifications and other setup/cleanup actions when the ActivePage isn't the visible one. Also, there NLists will be put "to sleep" as possible to try to achieve a better perfomance, this is just done by using Quiet, Disabled, and GoInactive, but "unfortunately" there is still an EventHandler which executed each 30 milliseconds even when the NLists aren't used and we having more than a docen NLists on the same window could be not nice on slow systems... * And, as above mentioned, lots and lots of code rewrited partially or from scratch, cleanups, paranoid checks, etc etc, and all that shit and annoyance to try to get rid of a MUI-related bug which at the end does not look to happend on our code, it seems to point to the NList/NListview classes... around when ScrollBars are refreshed/redraw probably I guess... i hate god by not letting me see it before :'-( 2008-11-30 * The Hash/Checksum build-in functions into amigift.library will no longer be inlined together, as it seems to have caused some checksum errors under MorphOS (Trance bug? dunno!) * Rewritten/optimized the function which saves MUI-Settings to daemon's config files. Also, a backup will be created before overwriting such files. 2008-11-25 * A few minimal fixes; URL-Decoding on filenames and url to file comments will be performed on a loop ensuring eg %252526 is properly translated to '&' 2008-11-23 * Replaced a few gift.library's API Functions with a inline version.. * Changed the way downloads are saved into the incoming folder, previously 20 additional chars to the filename being downloaded was used, as a mean to be a unique identifier (UWORD+ULONG+ULONG) that have been changed to be a single UWORD (4 chars) which should be enought as well. This change has made the filename limit of GiFTMui to be increased from 77 to 93 chars (by using the CutLongFilenames option switch) * Added to the Tools menu (GiFTMui) the avility to temporary disable shares, hence requests to download from you will be blocked... * The way lists are cleared have been changed, instead of making a notificacion for each new list (multi-lists mode) we'll handle this by a single notification handled by the application custom class. * GiFTMui will now flush used MCCs as well on program exit. 2008-11-19 * gift.library/event.c: Increased the maximun number of input events, and made certain static functions to be inline using its parameters passed to registers... * Changed gift.library memory's MagicID from 0xff1cb43a to 0x7ABBA000 * giftproto.library/share_hash.c: the result from hashing procedures will be now cached, ensuring a file isn't hashed two times from the same session.. unless that file's datestamp has changed... * gift.library/interface.c: improved for speed, which teorically should be lots noticeable... apart that file wasn't changed since its Linux version, each key(value) pairs the daemon sends to GiFTMui are created with a call to interface_put(), that function made a copy of such key/value strings by using strdup() which uses the own memory system of gift.library based on memory pools, which must be protected by a semaphore, that need to use strdup() has been removed and the way strings are parsed optimized as well removing the usage of a few function calls (string_sep and family) by a single call to strchr()... Considering for example a CHG#? command needs eight of such key(value) pairs, plus four additional ones for each source, thats at least twelve accesses to the memory system which has been succesfully avoided, with a hopefully great speed up (os3, at least) * a few other internal fixes/improvements gift.library related. 2008-11-18 * Added sanity check code on the Threads subsystem to verify the Task's State and SigWait at exit stage... 2008-11-17 * The avility to set the download's URL as file-comment had become broken at some point. - Fixed. * The way we allocate and refresh the multi-lists was somehow broken due certain actions being performed always rather than only when more that a single list is in use. * Fixed some memory leaks (which wasn't really since we use a memory pool, but which may is noticeable after a long session) * Added support to perform UTF(8) to ASCII/Latin1 and URL-Decode conversions on download filenames (such things will be performed just before the 'Cut Long Filenames' filter take action), the correct thing would be doing so at NList insertion time from search results, but we decided to do it at download time only so that results insertion aren't slowed... * Fixed some wrong pointer passed to FreeMem() while using the Main Window's Downloads List... * A few other internal fixes... 2008-11-13 * Improved the way Gnutella' hostiles are loaded, and added support for banned IPs in CIDR notaion (<ip>[/(<netmask>|<cidr>)]), for example 192.168.0.0/255.255.255.0 or in cidr 192.168.0.0/24 The load time has been decreased by almost half minute. 2008-11-12 * gift.library/conf.c: if the provided config pointer is NULL we'll get the default value from the provided string rather than trying to fetch something unreachable from the private dataset. This should ensure no NULL pointer is returned while fetching a cofiguration option if a plugin was unable to load its config. * Our strtol/strtoul functions will now check for empty strings and not only for NULL pointer argument, this should avoid some possible race condition which may happened... * gift.library/parse.c: changed CopyMem/strncpy usage by memmove 2008-11-09 * Optimized/Restructured the GiFTMui's Threading System. It will no longer use its own message port but sharing the application one. * The Online Updater's received data will be now cached for twenty minutes, this will be helpfull (faster) if for example you switch between 'show only never files' option. Also, the function we use to get executables version will now cache the $VER: string as long the program datestamp does not change. And, a Updater's Thread will now forbid the application from exiting with a DisplayBeep. 2008-11-03 * There was 10 FastTrack hardcoded options which are now configurable from the preferences window, look there for further info. 2008-11-02 * The Online Updater's Engine have been rewritten. Enhacements and improvements apart, updates are now received on a compressed way by using BZIP format, and therefore it will work much faster now. * Added new sockopt option: 'Check Connectivity On Startup' This option which enabled by default, will check if you can reach internet (and viceversa) before any other socket-related action is performed. Its purpose is similar to 'check tcp/ip interface' with the following advantages: a) It's more accurate as it will fisically try to reach some servers b) It works on every TCP/IP Stack (Not only MiamiDx/Genesis) c) MiamiIsOnline() and Genesis's IsOnline() only reports if you are connected to your router, and not if your router is really connected to internet. * You'll be now notified when plugins goes Online/Offline, into the main window's info bar, debug window, and playing the stats sample. * Tooltypes aren't readed if GiFTMui is launched from shell - Fixed. * A few other minimal improvements... 2008-10-21 * The feature added in the daemon to avoid duplicated search results is now settable by the end-user (no longer hardcoded) so that you can decide if you want such feature or no... * The mentioned times to the new auto-(re)connect features are now configurable from the preferences window (sockopts) - but you are not encouraged to change them unless you notice some side-effect.. * Fixed some issue at exit while a FBrowse's subprocess is running. 2008-10-19 * Our StringHistory's Custom Class will use now BetterString.mcc instead of the default String.mui class, the usage of the up/down keys with or without shift pressed have been preserved, and additionally mouse wheel support has been added. As a reminder, that's the class we use to the search string, chat, filters, etc 2008-10-17 * Playing a transfer from the uploads list didn't worked - fixed. * We'll no longer try to re-create an AppIcon when it's the same we used previously. * As an addition to the auto-(re)connect improvements, when we receive an FD_CLOSE event (eg, connection refused at startup) we'll queue the auto-connect event/method to be dispatched in two seconds rather than trying to launch it instantaneously, since else we noticed there could be about eight connection tries each second (under os4) * Cliking the Stop button from the Transfers window didn't worked sometimes for certain external players... Fixed. 2008-10-14 * Fixed and improved how GiFTMui auto-connects to the daemon on startup. To make a long story short, the daemon could accept the connection but without being ready to reply commands, if GiFTMui detects this it will try to auto-reconnect on intervals of six seconds until a reply is received... * GiFTMui's menu->network->daemon->quit only worked if we are connected to the daemon, as of today the daemon will be breaked if we are not connected to it. * The reloading process will now check for the daemon executable as well as the way of checking a library isn't accurate (eg, some 3rd part component could be using it)... * If some sound sample cannot be played (for whatever reason) it will be automatically disabled, resulting on GiFTMui no longer trying to re-create a datatypes object for something unreachable.. * Added support for REGEXP (Regular Expresiones) to the Filter's pattern string, to use a regexp pattern the first character must be a colon, eg: ":/.*?(mp3|wav)^/i" (whichs returns any file ending with either mp3 or wav (case insensitive)) - Note regexp patterns must be provided on a perl-style way. * Reworked the Pattern Selection window, accesible from the results context menu (results listview->context menu->select->by pattern) It now supports regexps as well. Also, added selection by max number of sources to the same context menu, which will auto-select the entry with the highest number of sources. * Several little fixes here and there.. 2008-10-06 * Improved how the daemon is reloaded from GiFTMui - previously we only checked if the daemon's port can be bind()'ed, as of today build we also we'll check if gift.library is expunged from memory resulting on no more 'daemon launched twice' requesters... * The GiFTMui's shutdown window could be keep opened forever if for some reason a timer.device request cannot be created - Fixed. 2008-09-28 * Improved FBrowser's COPY/MOVE Routine. * a few other minimal changes.. 2008-08-17 * Recompiled everything as of preparation for the 2.0-final Release. The Changes/Fixes made are minimal, though. 2008-01-24 * Our way to create the Compact-Mode Window seems to be causing trouble under MUI v3.9 - by that reason a special version of the related functions have been created to be used when muimaster version is equal or greater than 20 ... * If FIOASYNC is being used, the MUI Timer interval managed by eventdsp_class will be incremented by 1500ms (and probably should be even higher..) since it will be used then to request stats and launch the Inspector, only. * Since almost the beginning, there was a internal feature to adjust the maximum number of sockets giftd is able to use, that was by using the enviroment variable AMIGIFT_DTABLESIZE, Now you can use a fixed value for maximum sockets by using giFTMui's tooltypes. Hence, using DTABLESIZE=60 tooltype will forbid giftd to create more than 60 sockets. If such a tooltype is found by giFTMui at startup it will automatically set the enviroment variable, that means it will work only if the daemon isn't running already, but obviously the enviroment variable will be there until reboot. Note that if you reload giFTMui the enviroment variable will be overwritten, but if the daemon is already running it will not be aware of the change... It needs also a mention, for those of you who don't know it, that the default maximum sockets assigned per task by AmiTCP/MiamiDx is 64 sockets, being the maximum allowed 255 sockets - giftd by default always used (and uses) the maximum allowed. Also, all plugins have been "fixed" to not show tcp_open() errors if they are of type EMFILE ('Too many open sockets'), in case you wish to use a lower number of sockets. NOTE: we have opted to force the number of sockets to be 64 while running under Miami(Dx), if you want to use higher amount you'll have to use the tooltype. * If we abort a download, while a Inspector is running, there could be the case where one of them isn't checked for sources...Fixed. * F(ile )Browser Improvements: - On Compact-Mode, it will be part of the main window. - Created two vertical buttons attached to each listviews which can be used to go to the parent directory. - To stop a Copy or Move procedure, you can now press the space key to abort the operation. - The DoubleClick's action hook will wait a second if a player is launched while a previous instance is already running, this will give the subprocess some time to end and hence the new playing request should take action without errors... * a few internal fixes here and there 2008-01-13 * There is available a video showing (mainly) the current cpu load of amigift, It's a quick 10 minutes session from the start of the program to the shutdown: http://www.youtube.com/watch?v=17_0jzO-k2Q You can as well watch there the program load time, how fast it connects to the network or the common response time to search requests, along other fine behaviours :-) The video was recorded using the ServicePack builds, todays as of giFTMui #165 we achieved to improve socket events handling so that the cpu load should be lower... * Now, the near 40 custom classes giFTMui uses will be created once the SplashWindow have been created, following changes made recently on that matter, so that the program appears faster. * Replaced usage of MUIM_WriteLong, on a couple of places, by our own methods to do things on a nice way... * Created a new custom class (aka eventdsp_class) with the only job of handling socket events on a nice way by using MUI's buildin timer rather than our own timers... how stats are requested, and the Inspector launched, are now handled by this class as well. NOTES: 1) The real improvement resides for non-FIOASYNC sockets, since is in this mode when giFTMui must handle/dispatch socket notifications on his own. 2) The interval of milliseconds we request MUI to notify our method is by default 1000ms (each second), but this could be adjusted from the giftd settings (tunning->report interval) The reason why we have decided to use a giftd option(s) for a giFTMui-only feature is simple: if we request giftd to report transfers progress each 4 seconds, there is no sense from giFTMui to check for events each second.. hence, the minimum value for downloads/uploads will be used for the MUI timer, this should decrease the cpu load even more! It's highly recommended to use under os3 a *minimum* of two seconds for transfers progress there, you'll notice a better performance.. 3) There is available as well, at the giFTMui settings, a new option which will cause this class to drop all open connections when you iconify the application, on that way the cpu load will be Zero when giFTMui is iconified. However, note that in such case there will be no sound/player notification when eg a download finishes. * When FIONBIO isn't enabled the SendQueue's switch will be disabled, since it's useless without using fionbio (non-blocking) sockets. * The Inspector will no longer active the entry a locator is going to look sources for, same for Locators automatically launched. * Fixed a bug which caused a socket being closed without removing the associated node from our private sockets-list, this may caused unpredictable results if eg we inserted a new socket with the same number of the previous already closed... * The giFTMui settings which was right-aligned are now left-aligned.. * Some minor fixes and code cleanups. 2008-01-07 * Created the first ever AMIGIFT Service Pack, which includes up-to-date binaries for all m68k flavours (68020 to 68060 with and without FPU support) along with bonus material. This includes: giFTMui Build #164 07.01.2008 amigift.library 2.146 04.01.2008 gift.library 2.19 05.01.2008 giftproto.library 2.4 29.08.2007 Gnutella.PlugIn 2.7 03.09.2007 FastTrack.PlugIn 2.7 21.08.2007 Ares.PlugIn 2.7 20.08.2007 The SP is provided with a installation script which detects your CPU and automatically installs everything (patching if needed), it has to be installed over your existing installation. Note: Service Packs are intended to registered users... 2008-01-04 * Our NList parser to the transfers lists will use now AllocMem() rather than our malloc()-replacement which is slower due we use a memory pool that needs to be protected by a semaphore - This effectively should speed up the transfers progress. * Fixed some issue on the main window's downloads gauge, it has been improved a bit to require less cpu usage... * Decreased our memory-pool's puddle size since some benchmarks show it's a little faster (a gain of 6 seconds each 8000 allocations..) 2008-01-02 * The check for 3rd part resources, and some others startup checks, will be now performed once the SplashWindow have been opened. * As requested, the daemon will no longer check your shares index on each startup (...), it will check the shares index datestamp and perform such check once a month only, it will do that silently launching a subprocess on startup rather than refusing to start and warning you with a requester (as it was several builds ago) * Some minor fixes. 2007-12-26 * Updated the list of mime-types build into amigift.library * Changed the way giFTMui's private MUI Classes are created, basically we'll use allocated memory rather than stack space to store a pointer to the class instance... * Replaced usage of AllocMem(0x7ffffff0,MEMF_PUBLIC), to flush our libraries from memory, by RemLibrary() when OpenCnt==0 ... This is done if the library is amigift.library or gift#?.library, ofcourse. 2007-12-23 * Fixed a wrong Gnutella's ObjectID which caused the packet ascii log file setting not saved properly upon exit, and hence what caused as well a de-sync warning poping on startup if you aren't using his default value. * Re-implemented giFTMui's registration system, which indeed should be lots better than the previous method (which was a crap anyway), you will find all related info on the Register window (opening it from the application menu, or About window - The About Window have been rewritten from scratch as well being now much clear and well structured... using Urltext.mcc to link to the website resources). * Added OpenURL.library 7.0 and Urltext.mcc 19.7 (By Alfonso Ranieri) to the list of required resources by giFTMui - We have replaced web links usage inside giFTMui using Textinput.mcc by Urltext.mcc which is more comfortable, and OpenURL 7.0 is needed to properly handle mailto: links. * Fixed a couple of hits caused while trying to obtain the mime type of a file which hasn't extension - this is mostly noticeable while trying to play files from the File Browser. * File Browser's right-list will list now the RAM: disk instead of the list of devices so that it is opened faster. * Replaced some thirty BOOLeans (60 bytes) by a single ULONG (4 bytes) and bit mask, this should make somewhat faster certain loops... 2007-12-03 * The giFTMui's SplashWindow isn't shown correctly under UAE - Fixed. 2007-12-02 * Several builds ago the way maximum results are handled was changed, allowing more results than the maximum defined (read this changelog entry for 2007-04-24 for more info), However... it comes to our attention that some users dislike this change, therefore a new settings option was added so that is you who decide how to handle maximum results - You'll find such a option at the settings window on giFTMui->main->mList * Re-implemented the giFTMui's File Browser, being rewritten from scratch so that it will no longer be usable for overview only but to allow common actions to be performed (copy/delete/rename/etc) and to jump between directories with no limit, double-clicking an entry will display such file using the pre-defined players from the settings window - basically, it has become a little file-mamager! (Next step would be to add to it an embed music/video player ;) * Upon giFTMui's startup, (and only at the first startup after a system restart), the program will verify that the daemon's config files are in sync will the settings stored by giFTMui, warning you if a 'Read From Disk' procedure is required. 2007-11-28 * Fixed a bug which caused a 'out of memory' requester opened on each new entry to be added to the results listview while the filter's pattern check is performed. 2007-11-23 * Users of StackAttack2 may have noticed a daemon failure at time of launching the SharesIndex sub-process (which giftd does using the CreateNewProc() function that StackAttack[2] patches). It seems to be caused by an "unusual" usage of StackAttack2 (and it only seems to happen with version 2.9), e.g: using 'StackAttack MINSTACK 8192' causes such a crash but using 'StackAttack AUTO' does not cause it. Increasing the NP_StackSize tag value at the daemon side seems to cause the problem gone (even, when we had it set to 65K), but anyhow we recommend to not use MINSTACK with a value lower than 16K or so 2007-10-16 * giFTMui uses now the internal list of installed plugins alphabetically sorted, so that mui objects are created ordered in such way. * The network status lamps of the main giFTMui window are now clickable, its functionality will be to select at which network protocols do you want to send the search request, in the same way as if you use the advanced search panel's protocol checkmarks. In addition, the lamps will no longer use RGB colors but user-defined colors instead (configurable from the global MUI settings), When the network is online it will be the color "Ok", while the network isn't ready to accept searches it will be "Processing", and if you click on the Lamp, to activate searches at that network only, it will blink with the "Looking Up" color altogether with the previous status color. those are the names which appear on the mcp, btw. * a few changes here and there on the look of some MUI objects, and other little fixes. 2007-10-01 * Updated Italian and German catalogs kindly provided by Samir Hawamdeh and Hans-Jrg Ottinger respectively. * Default settings was set after loading the settings saved on disk when is the opposite the right action obviously. - Fixed. * some minor fix. 2007-09-28 * The functions strdup and strndup which amigift.library implements (and both the library itself and giFTMui uses) have been replaced by somehow faster ones, being a change made on them needing a mention: such C-Standard functions only fails if passed a NULL as argument or if was unable to allocate memory, BUT our old implementations also checked if the first character is Zero, failing then as well in such case - this no longer happens being therefor empty strings dup'ed as well (as the standards specifies) unfortunately this could means some unpredictable behaviour may happens as we have not checked the whole code, just inform us if you notice some strange issue. There has been made a major code cleanup on amigift.library as well. * The whole daemon/plugins's configuration handling have been rewritten according the new giFTMui's plugins management. This includes that only plugins currently installed will be allowed to be configured, and several other internal features/improvements. * Updated and "fixed" giFTMui.cd, look at it for more info. * The file amigift:data/shareroots.txt will no longer be independient from the rest of the core, instead it will actually be a safe-copy of your sharing roots - This has been made to be friendly to the new ASIU program. 2007-09-11 * giFTMui have been fully adapted to dinamically work with plugins, so that he works knowing nothing about the plugins installed for AMIGIFT, however... it still handles preferences for the currently know plugins Ares,FastTrack,Gnutella,OpenFT. New plugins must use the new method as follow described so that giFTMui needs not to be recompiled to allow any particular new plugin to work properly inside the GUI. Go ahead user-groups creating your private network for your community only, it should work like a charm from AMIGIFT now! :-) Basically, what giFTMui needs to work with new plugins is just a MUI's Public Custom Class (.mcc) located inside the AMIGIFT:PlugIns directory, this class could be a subclass of whatever you want, but obviously the quicker way would be creating it as a subclass of MUIC_Group, it should return a valid MUI Object which will be placed as a children of a PageGroup on the preferences window. The class should additionally handle the reading and writing of the corresponding giftd's config file, those found into AMIGIFT:daemon/<plugin>/<plugin>.conf, as available for the rest of plugins as well. There is provided a Demo.mcc and Demo.PlugIn (with full source code, of course) which demostrates to developers interested how this works, The Demo.PlugIn source is just a quickstart on how to write PlugIns, for better info and examples OpenFT sources are the best choice. NOTE that how giFTMui will handle your plugin is based on the plugin's filename as found into AMIGIFT:PlugIns, and the .mcc and image (logo) based on that name, e.g. it founds into AMIGIFT:PlugIns a file named BacaBurra.PlugIn then it extract the name and stores it as "BacaBurra" (case sensitive!, at least for MUI..), then it tryes to load the mcc using: MUI_NewObjectA("AMIGIFT:PlugIns/BacaBurra.mcc", NULL); (additional tags support may come later if needed, just request it!) and then the logos loaded as well as: AMIGIFT:Images/networks/normal/BacaBurra.iff AMIGIFT:Images/networks/small/BacaBurra.iff (being fixed width/height a requirement, 32x32 & 16x16 respectively) Note that giFTMui will still work with your plugin if neither the mcc nor the logos are found!, what we understand as your plugin needs no configuration, being the logo replaced with a build-in image (with a "?" sign) if yours aren't found. If you create a MCC, you'll need to implement the following MUI Methods on your class dispatcher: #define MUIM_GIFTMUI_MCCLOADCONFIG0x800FF00A #define MUIM_GIFTMUI_MCCSAVECONFIG0x800FF00B Such methods will be invoked by giFTMui when a user uses "Save To Disk ALL" or "Load From Disk ALL" menu options. be aware you must return the same method-id if your function succeed, and something else otherwise. Don't hesitate to contact us if you have some suggestion/comment or improvement/implementation idea about this new plugins handling! * Created a new standalone program to update/create your AMIGIFT's shares index file, ASIU (short for "Amigift Shares Index Updater") is its name and available from the root of the distribution. It creates a MUI-friendly (and simple) GUI with a NList and three buttons, to add/remove paths and to launch the hashing process. Note what it does is just a quick way of launching "giftd i" shell process, but with internal features to verify your config and update/fix it if needed, that includes activating all of your installed plugins (if aren't already) to create a full shares index file before launching the daemon, and restoring the config to your previous plugins once finished. It's highly recommended to use this program after a fresh boot to work faster and smooth and obvioulsy without another daemon instance running on the background (or without any other program on the background ;-) * Added a timeout to the splash window at exit stage... that timeout will be one minute under OS4/MOS and three minutes under other systems. 2007-08-03 * Updated German catalog, Thanks a lot to H.J. Ottinger. * Added usage of MUIA_Application_UsedClasses to give MUI a list of external classes used by giFTMui. * Added a few sanity check to the Ares.plugin to prevent some issue(s) while updating our shares index. * giftd should correctly assign the AMIGIFT: path now if it's loaded from a shell to generate/update the shares index. * Added recognition of 'SFS\2' partitions. * Fixed a failed assertion on the Gnutella plugin which happens sometimes by a strange rand() issue... in addtition, the rand() function have been replaced on the whole core (all daemon components) using a libnix-based implementation which just uses utility.library/SMult32() ... * There will be no longer the 'one month old' shares index requester, since todays the shares index update process is launched from a thread there shouldn't be no major problem on that, so that on each startup your shares will be checked, note that even on large shares index files this process should take a few time if no changed files are found (On a 060 with the default A1200's IDE Controller, giftd shows an average of 24MB/s when checking unchanged files, being near 300MB/s under MOS/OS4) 2007-07-29 * Some users complain about the daemon does not return results matching the exact phrase they want, so that looking for "hello world" may returns entrys containing "hello" only. By that reason a new filter have been created, it's a cycle object with match any word, all words, or all words ordered (as-is as you typed it). You'll find it on the vertical search pannel with the rest of giFTMui's filters. * Since we changed the bandwidth's downstream/upstream objects from a String to a Slider, saving to disk those options wasn't working due we was trying to get a string contents still. - Fixed. * How to create/manage multi-lists (results) have been rewrited to be more MUI-Friendly, so that it should work smooth and fast. * Using FIOASYNC+FIONBIO+SendQueue altogether didn't worked properly due a bug on how packets are queued. - Fixed. * The giFTMui's online firewall checking didn't worked properly if your router is blocking pings, - Fixed. 2007-07-18 * Added a new SpashWindow to the exit stage. It's just a tiny window with a "AMIGIFT Exiting" and progress messages, you'll may notice it looks like it needs more time to exit now, isn't that right, just that giFTMui will wait to the daemon to be fully aborted before it exists completely as previously when giFTMui has already exited the daemon was still there in the background. It works on that way when 'Remove On Exit' option is on, of course. 2007-07-15 * Optimized how Compact-Mode windows are diposed on exit, as there seems to be some issue under MorphOS. * If some window cannot be created for whatever reason (out of memory, missing mccs, etc) there will be now a requester informing the user.. * Updated Italian catalog, thanks Samir! 2007-07-08 * Fixed a bug while using CHUNKPROGRESS which caused giFTMui to crash horribly by a missing statement not telling NList.mcc to stop using our BodyChunk's chunkprogress object. * Fixed some possible bug into our OpenLibrary() replacement ... * vapor_toolkit library will no longer be checked on startup for his existence (such library is/was needed by TextInput#?.mcc but it's build-in on newer MUI versions) * On startup we'll check now if there exists an AMIGIFT: assign which does not belong to the current directory (from where you started giFTMui), warning you in such case. Same kind of test will be perfomed to check that you do not have amigift libs on both places SYS:Libs/ and AMIGIFT:Libs/ * You'll be able now to ban a supernode, apart a single user, for those results received from doubtful origin... * Main window's cloned dls-list will use the NList "images" only when needed instead of allocated from the beginning. * some little fix/optimization here and there... 2007-07-01 * Being a new pre-release archive to be released (or released as you read this), we have added some code which check for the file time of the default MUI config giFTMui uses, so that if it was created previously than the 1 of June it will be automatically deleted on startup, according to the changes made the last month which has made this a requeriment by the new structure of mui's objects. Hence, remember you'll need to reconfigure giFTMui almost from scratch on the first run, for the daemon and plugins part you can just use 'Read From Disk ALL', from the settings menu, if you wish to keep your previous settings, and next save the settings from the same menu or dont forget to enable 'save settings on exit' switch ... In the other hand, if you want to use a clean installation (which recommended, by just extracting the archive somewhere and double click the giFTMui icon, - you can still use your incoming and completed folders), for a quick-start all you have to do, BEFORE the daemon is launched, is selecting the networks you wish to connect to, and then use 'Save To Disk ALL' from the settings menu (the default settings for everything should fit most users), and you'll be able to connect to the network(s) in a few minutes. Look at the AMIGIFT.readme file for more info! * ShareMonkey (http://www.sharemonkey.com/) have been implemented into giFTMui! ShareMonkey is a WEB Service which allows users to locate where to buy legally any of those files you'll find from the various p2p networks. Theres a new context-menu option to the transfers and results lists, "Where is this file from?", when you use it you'll be redirected to the website which will show you quickly any product matching the filename, filesize, and/or filehash. NOTE: you need to have installed openurl.library! I want to give the Thanks to Keiron Waites for his great support and efforts in making the ShareMonkey website compatible with IBrowse, currently the website was using Ajax and CSS, but Keiron kindly allowed us to upload a php (wrapper) script which makes the site perfectly working from our AmigaOS Browser(s). * Samir Hawamdeh updated his catalog (time record, thanks Samir!), so that Italian users can enjoy the whole amigift interface on its natural language. 2007-06-22 * Changed a bit the SplashWindow so that it will show now the "release name" and compile time. * Implemeted the "msg" commad to the chat, used to send messages directly to users, or to identify after a nick change (mainly to) * Theres a new option to use a queue for automatically launched Locators, so that they get no lost in space when a new request comes while a previous instance is still running. NOTE: If you launch a Locator manually while the list isn't empty your request will be dispatched asap, being the Locator currently running aborted and re-added to the tail of the list. * Fixed gift.library functions file_unix_path and file_host_path to check against NULL parameters passed, which sometimes could happend as we've noticed when a new download finishes and the re-hashing subprocess call them... * The transfer's window top bar will inform now which Locator is running, and the number of queues. * Reggae have been integrated into giFTMui, so that users of MorphOS will benefit from this great datatypes-replacement. If multimedia.library cannot be opened, the old subprocess system will be used instead. 2007-06-15 * Added new tools menu option to tell the daemon to update the shares index file on-the-fly from the current session. Note though this is slower than running 'giftd i' alone, since the re-hashing subprocess is launched with priority -1. * There seems to be some little issue with the player process (atleast noticiable under MorphOS), we've changed a bit how it works being the async flag no longer used... * The function which formats the requests to be sent to the daemon have been rewrited from scratch, being moved from amigift.library to the giFTMui sources to be working faster.. * Implemented a new group of objects at top of the transfer window's downloads list which will track the total number of downloads, how many are active, and those without sources. Theres a Lamp as well which will be green when there is some download active. NOTE: Such group will be only visible when there are more than two downloads, and updated (if there are changes) once each 2.5 seconds. * How the Inspector is launched was using a global timer to the given interval, this have been changed so that the interval will be the real time passed between Inspectors invocation. * The debug and socket activity windows has now the ability to clear or save the nlist contents, by adding a new context menu to the custom class which manages them. * The AppIcons feature of giFTMui have been re-enabled. * By the change made recently to the sound system of giFTMui, there seems to be now some issue under MorphOS... atleast it looks like some MOS datatype is buggy on the sense it makes the application to crash if we dispose a SoundDTObject which curretly playing, as we was able to trace with the help of some mos betatester. From now on, and only under MorphOS, we'll create a subprocess to handle the sounds (not the same subprocess we removed the last month, it have been rewrited with the issue in mind), such subprocess will wait to the sound to be fully played before disposing it, and ignoring any new play request it receives while a sound is playing. * The ContextMenu of the results list has a new item which let you be able to BAN the user which returned the selected entry. Thats currently working to the FastTrack and Gnutella plugins, which are the only networks which manages ATM banlist files. Please be sensitive using this new feature, adding (banning) to many IPs may isn't good in the long run... 2007-06-07 * Created a Slider.mui's Custom Class to handle on a nice way all those slider-related objects. for example, now the stats, locator or inspector times will be show with a clock, or the downstream and upstream values will be represented with b/s or Kb/s * Since the beginning, giftd reported transfers progress once each second, being each 60 second forced a report if there was no progress for a particular transfer - those hardcoded values have been removed to let the user the chance to use the values/times he wishes from giFTMui preferences. (mainly focused to users with slower machines which has lots of downloads). There was the prefs page giftd->bandwidth which have been replaced with giftd->tunning where you can find both, to set the bandwidth limit and the reports times (whose accuracy is milliseconds). * The incoming's #?.state files was saved each 10 seconds whatever there is any change or no, this have been changed so that such files get only updated when there is real data transfered since it was last saved. (but still gets re-saved at registering downloads step, ie: at startup) * While working on Compact-Windows mode, the last active settings page isn't set in startup. - Fixed 2007-06-03 * Fixed several hits while a Locator finishes, due we was closing the connection from the recv() dispatcher and removing it from the linked list of socket events (for non-FIOASYNC mode). Also, the Locator receive stub have been adapted to use the new-style daemon parser, being EWOULDBLOCK (resource temporaly unavailable) handled corrently for FIONBIO connections. * The Inspector was not properly automatically started when there is a Locator running (by user). - Fixed. 2007-05-31 * Cleaned up the code to event sounds and players, being the objects stored on allocated space rather than on the stack. * The percent completed (to the trasnfers list) was wrongly calculated for biger files (>= 1000MB) - Fixed. * While downloading a file with several sources, the string to the Status field could be wrong (for example, telling 'Queued' while indeed we are actively downloaidng it), Fixed. * While sending a LOCATE query to the daemon, we'll no longer use the protocol() tag to specify at which network the request should go, keeping that decision in hands of the daemon and not giFTMui. 2007-05-27 * The sound system of giFTMui no longer creates a new subprocess to play the sounds, it is now handled from the main task, since at least using v41sound.datatype isn't needed (creates its own subprocess) ... let us know if you notice the giFTMui task sleeps while playing a sound, and which datatypes do you use. * There seems to be some issue under OS4 at time of closing the chat log at giFTMui shutdown, hence we decided to change how chat logging is handled, previously at time of writing a chat line we checked if logging is enabled, we'll now use a hook which automatically opens the chatlog file at time the checkmark is enabled and/or the file location changed, so that when a new chat line needs to be writen we only have to check if the filehandle is valid, avoiding as well to use two GetAttr() on each function call... * Added two new menu items at giFTMui to 'Read From Disk' ALL core settings as well to 'Save To Disk' ALL of them, so that you can use these to load/save all plugins and daemon configs files into giFTMui at once!, specially useful to the change made the last day where you was needed to use 'Read From Disk' to all. * Fixed a bug on the Inspector which sometimes failed to select the nlist entry it should start to locate sources for. (really the bug wasn't on the Inspector itself, but on the method we was overloading to switch the entry selection between downloads/uploads lists, which have been changed to a hook..) * When used 'Last Saved' giFTMui's settings, we just reloaded ENVARC:MUI/giFTMui.cfg which could end on some error if you changed (and saved to disk) some of the daemon/plugins config files, we was in a little doubt about if we should allow the user to choose between reloading from disk all of them, or instead save all of them to disk with the copy of the settings stored into envarc:mui/giftmui.cfg ... we decided to (transparently to the user) reload all of the daemon and plugins config files, since after all those are the really 'last saved' files... 2007-05-25 * ++++++ IMPORTANT NOTICE +++++++++++++ For consistence on mui objects creation, the ID assigned per object have been changed, we was using previously common functions which used an incremented number as ID on each new call, we'll use now statically defined IDs. Hence, manual deletion of the file ENVARC:MUI/giFTMui.cfg is REQUIRED, same applyes to the file AMIGIFT:data/defmuisettings.cfg - Also, since the giFTmui.cfg file needs to be deleted, on the next giFTmui's run you'll need to use 'Read From Disk' for each of the plugins you're using, apart reconfiguration for giFTMui settings itself, obviously. * The gifTMui's preferences page 'History' have been removed, as it was containing just threee objects, them was added to the group of objects from the 'main' page. * nlist sorting for transfers lists were broken. - Fixed. 2007-05-20 * While giftd is exiting, calls to gift.library's free() function (used by the whole system) will be blocked, so that the memory isn't freed, this makes giftd exit stage considerably faster (specially when Gnutella is/was running), we can do this safely because 1) amigift uses a common memory pool, and 2) because giftd auto-expunges gift.library from memory, so that the pool is removed and hence all memory used gets freed successfully. * giFTMui player function didn't worked properly reading dirs which are softlinks (like for 'downcheck'), - Fixed. * Increased the time giFTMui waits to the daemon to be reloaded, from 16 seconds to 28... 2007-05-15 * 'downcheck' is now able to preperly use softlinks for both files and dirs, previously only files was handled properly by Examine()'ing Zero-size files to obtain the real size, now we'll use ReadLink(). * How to cancel a Locator for a download recently finished have been changed, previously we waited to receive notification from the daemon, now we'll abort it just after you cancel it. * Another nlist parser which have been improved to be working faster, this time for the download's sources list, which you can access using the downloads list context-menu .. * The amount of memory used to the re-hashing process was 60MB as maximun, being 4MB to remain free - Those values have been changed to 20 and 6MB respectively, there was fixed a issue which has made to allocate all free memory if it's less than that 4MB * Fixed a bug disabling 'SendQueue' option while we are connected to the daemon, we'll check now if there are pending requests to send them, so that they are not lost in space.. 2007-05-10 * Reworked how network images (logos) are loaded, now just the logos for the plugins currently installed will be loaded and used. Hence, we'll check now the contents of the AMIGIFT:PlugIns folder and the network names will be stored on an array we'll use later to generate dynamic-oriented objects, thats indeed how giFTMui should (and will) work for everything related, to not depend on the plugins we currently know, so that when a new plugin is available giFTMui needs not to be recompiled to allow that new plugin. For now just a few objects uses this method, but on future versions we'll integrate it in the whole sources. 2007-05-08 * Rewrited from scratch the NList parser to the downloads/uploads transfers, indeed it should work lots faster than before! * Fixed the transfer's chunk progress, whose objects didn't worked properly while multiple transfers are active, due we was creating a 'chunk progress' custom class object for each of the transfer lists where the right action is to create a custom class object for each of the active transfers. If you are running too many transfers at once, plus on a slower machine, may you'll like to disable such feature, to do that just add 'CHUNKPROGRESS=NO' to the tooltypes list. * Related to the two changes above mentioned, the downloads/uploads NList parser have been moved from the Construct Hook to the common list custom class, this helps creating on a nice way the chunk progress objects to all the available lists (on the same way all of them will inherit the same nlist "image" objects), those lists are the ones from the transfers window, the monitor lists, and the 'cloned' lists. * There seems to be some issue trying to adding new sharing paths from the giFTMui preferences window, it should be fixed now. 2007-05-01 * The string-history custom class will check now if the last inserted string is the same the one we are about to insert, to "avoid" duplicates. also, the number of items displayed have been changed from 10 to 25 - Thats the mui class we use as replacement for the default MUI's String class, used on various places, like for the search string or the chat, where you can click RMB to access its history. * The maximun timeout value for Locators have been increased from 3 to 10 minutes.. * The downloads/uploads monitor windows didn't worked properly since we changed the daemon parser. - Fixed. * Improved the Filters check routines to be somewhat faster by using inlined functions rather than amigift.library's functions. There was fixed a bug as well which has make the filters unreachable when it is enabled after you re-run giFTMui. * We was still unable to upload through OpenFT due the HTTP reply version is set by using a float number, and we was using the Locale's DecimalPoint, which could end as malformed request if your Country's decimal point is not a dot. - Fixed. * Some minimal giFTMui/amigift.library fixes here and there... 2007-04-24 * While using multi-lists, if you start a new search on a list previously used, it's title gets no refreshed until some result is received - It should be now right after you click 'Search' * Info's gauge for number of search results being received worked with single-lists only, it should work now with multi-lists as well * FIONBIO's Send Queue didn't worked properly due a bug in the function which checks for already queued commands, it should be working fine now, being also improved. * Recording of last used tabs/pages on multi-lists mode didn't worked properly since severals revisions ago, it have been rewrited to be working fine now, this feature is to let you go back to the last seen page, while working on multi-lists mode, when you remove one of them. * Previously, when the maximun number of results is reached, further addition of results for that session is disabled, so that just the exact number of maximun results defined by you are displayed. This has been changed to show all available results, even therefore execeding the maximun value. - When the maximun defined by you is reached, a cancel request is sent, there may be about ~100 more search results, which even may exceed your desired, but we think now is the right action to do.. * giFTMui on multi-lists mode, was totally broken on how to automatically cancel a search (by maximun reached, fex) IF that wasn't on the currently active page. thousand of apologizes! * Fixed CPU usage giFTMui uses on FIONBIO mode... since we need to handle socket events on our own, the dispatcher for this job was called from the main loop about 18 times per second..(ejem)... it should be no more than 3 times now... this may need probably some retouch though, since giFTMui was originally designed to work on FIOASYNC mode only.. 2007-04-22 * The 'Stop' button gets no automatically ghosted when search results are completely received (you didnt clicked the stop button) - Fixed. * If a download finishes while a Locator is still looking for more sources, there could be the case the source is being added like a new download for the just completed one. - Fixed. * When a Locator is launched, an alarm-based subprocess is created to handle the timeout, if the Locator finishes by itself (not by timeout) that subprocess is not breaked. - Fixed. * The ExAll() "level" the 'downcheck' functions uses was ED_COMMENT when indeed ED_SIZE should be sufficient, hence have been changed. 2007-04-20 * giFTMui includes a new feature to check your Firewall Connectivity, you'll find it from the Tools menu, clicking on "Check Ports". * While using multi-lists, event notification for PATHs selection get no disposed (MUIM_KillNotify) switching between lists, plus to make this working on a nice way it uses a new hook instead of two event notification (MUIM_WriteLong/MUIM_NList_Redraw) * gift.library have been improved/fixed on how subprocesses are launched and killed, which used to the (re)hashing procedure. If you break the daemon while a rehashing subprocess is running there could be the issue giftd has exited while the subprocesses is still exiting due a missing Wait()'ed state. Furthermore this will *never* happen again (even in the case our code is still buggy) since the subprocesses will check now if the parent task is still running, being auto-suspended if it is not (worst case, dont worry) * Fixed a bug into gift.library/TaskExists which prevented some tasks not to be correctly detected due SysBase->TaskWait is not properly traversed. * gift.library/log_init() will no longer be used by other task than the [first] daemon instance... this may change in the future (if needed) but for now there is some factors which has made us to make this restriction: log_init() and log_cleanup() was protected by a semaphore, in the same way as log_print() (which the function used to write each of the giftd.log lines), well, since log_init() works now on that way, log_print() will no longer require the semaphore, this help us in the case giftd is exiting and cleaning up things while it is owning the semaphore and a rehashing subprocess is still running and waiting to write something to giftd.log (essentially, this is by using platform_cleanup(), it's the function which breaks running subprocesses). Also, to prevent any possible issue, log_cleanup() will no longer use the semaphore as well, but instead it is now executed being Forbid()'ed. * We noticed the function giftd/share_clear() could take long time to complete (It's the function used to clear from memory your list of shares at shutdown, being on a pre-formated/linked-lists fashion), testing to share 3200 files (mostly pictures, ~2GB) it took about 6-8 minutes on a 060 !!.... so from now on calling this function will be avoided...but dont worry, since we are using a memory pool there will be no memory leak at all, but then giftd will need to auth-flush gift.library from memory, so the pool gets deleted. Related to this, we noticed having a high amount of shares is a bad idea... more than 1000 shares we mean, at least by the fact Ares is [almost] unable to connect to the network, due the long time it could take on pre-process the list of shares to send them to the supernodes, resulting on 'Connection reset by peer' errors * Uploads were broken until NOW, finally we've found were was (the very stupid, indeed) bug. 2007-04-14 * gift.library have been "fixed" to no longer use globally declared variables... that was used to the logging, mime, platform, and events specific functions, that could be translated as 200KB less of stack usage.... also, our memory allocation system used a pool and semaphore declared globally as well, that is now properly used from the library base pointer. * fixed some bug on the code which forbids a daemon being run twice, there could be the case where a second copy of giftd tryes to free resources previously allocated by the first giftd instance, apart from being protected by semaphores, thats now protected so that only the task who inited the core has the rights to free everything allocated by itself.. * Fixed a possible bug from the giFTMui's save config functions when a plugin drawer have to be created. 2007-04-13 * giftd has a new command line option: SM=SLOWMOTION/S When you use this switch, giftd will work like before.., else transfers progress will be reported more quickly to giFTMui, even when there is no progress to report...transfers are still no pure realtime by design, remember that. Also, while using this swtich, and how giftd worked to date, giftd do not report transfers progress if there is nothing new transfered/received on a period of 60 seconds, that value have been changed to be 20 seconds now. Side-notes: owners of slower CPUs are encouraged to use this switch, check it and decide for yourself, though. * When OpenFT writes the nodes file to disk, and since it uses a temporal file to write them, we'll check now if that temp file size is greater than 0 before trying to replace the real nodes file... * Some other minimal changes made to the main core components.. 2007-04-10 * Since the addition of the network logos at front of the nlist item, the network statistics for downloads/uploads was broken, - Fixed. * The locators when reporting adding new source uses the wrong field about from where it comes (url instead the user), - Fixed. * The daemon integrates a new feature to avoid sending duplicated search results to giFTMui, its checks are based on four ITEM() fields, following that order: size, file, user, url If the four exactly match, that new item is not sent to giFTMui. 2007-03-21 * The whole core uses now a new memory allocation safe point (aka MagicID) to prevent illegal memory accesses...or thats the intention * The maximun connections (hardcoded) default value for OpenFT have been decreased from 30 to 18....just for testing purposes... 2007-02-13 * Updated Italian catalog to the very latests build-in strings, Thanks to Samir Hawamdeh who did the work, Also added Spanish catalog and fixed Swedish and German catalogs (to be working with giFTMui 2.0) which lacks 2.0 strings translations though. * Events, Players, and Sounds groups from the preferences got unaligned while using a catalog file, Fixed. * While checking for the required 3rd part resources, if some isn't found we show a requester, and our own requesters check for some variables which since thats at the very beginning of the execution aren't properly initialized yet, that could cause a severe application crash - Just fixed, sing * Another bug which have been fixed is about the splash window image, If the image cannot be loaded via GuiGfx.mcc for some reason, we fall back using a no-op hidden object as replacement due a common global function being used, this is a wrong function usage to the splash window since the addition of the program version being draw on top of the image - we'll forgot such thing if the image does not exists, or exists but direct GuiGfx usage cannot load it. 2006-12-10 * Reworked (once again) how the daemon is (re)launched from giFTMui, the function is much simple now, and being called from a subprocess which makes 'Unlink from Stack' feature unneeded (which seemed to cause trouble on some systems), also, unlike the previous function, it will work silently until finished (no more annoying requesters..) * Thanks to framiga by a comment by Ken on aorg, we have "fixed" the little network logos, they may need some retouch still tough. With the logos partly fixed (looking better than before) we have added them to be show on the results list for the 'network' column, as well on the downloads list. * giFTMui results list's parser have been rewrited from scratch, it should at least work faster... in addition to make results insertion faster the filters check can be now completely disabled which substantially will increase the speed results are inserted. By switching the search panel to the vertical mode, and opening the "Filters" field, theres a new chekmark to enable it (it is disabled by default now). * giftd: fixed a 'divide by zero' bug while using indexonly * gift.library/giftproto.library: some little optimizations against NULL pointers and removed some assert() calls ... 2006-10-20 * gift.library wronly reported a daemon task already running when indeed there is no such instance, Fixed. 2006-10-16 * There seems to be a bug on the AmiTCP v4 kernel based TCP/IP Stacks while using asynchronous sockets (Well, IMHO it's a bug on the kernel itself and not in the application(s)..) and more than one single socket is used from the same task (short story). Hence we've forced to create a new method to manage connnections from giFTMui, which is not other than the common WaitSelect() way. non-Miami(dx) users are strongly encouraged to disable FIOASYNC from the newly added 'sockopt' preferences page (giFTmui-Prefs->giftmui->sockopt) * If a second daemon task is launched a serious condition about gift.library internals being accidentally freed could happen, this have been fixed being just a single daemon instance allowed to be run... apart that, there shouldn't be any problem from 3rd part programs using gift.library, at least for certain functions since not all are threads-safe...but those which aren't safe are really only used from the daemon..sing * Updated the FAQ with questions from our ML, Thanks to Philippe 'Mrod' Bovier, who did the work. 2006-09-13 * Under Genesis, the function gethostname() seems buggy somehow... at least according to the autodoc if all procedures to obtain the system hostname fails it should set "localhost", which isn't set making the chat connections to hang due an incomplete request sent (due the missing hostname, obviously), that should be fixed now. * Locators do not checked for the 'max sources' value, Fixed. (and we have noticed that using more than 20 is a bad idea, on most cases..) * The Width for the results list columns aren't saved upon exit, Fixed. 2006-09-08 * There was detected some kind of bug saving the daemon/plugins config files from giFTMui while using MCP's CopyMem() patch... what happens is just that appears some garbage at EOF, we have "fixed" it from amigift part just avoiding to use CopyMem() but we have not clear at all if there could be some other(s) issues while using MCP... * giFTMui requires now bzlib.library version 2.0 to be installed, which is available from our site since some time ago, this Version should be working better and fastest * The transfers sources list window lacks a ID which makes it not able to snapshot his position etc, Fixed * Fixed some pointer mismatch issue on the internal blacklist routines, which used when clicking a file to be downloaded. * "Improved" (well structured) the giFTMui's parser to the daemon commands, and fixed some little issue which makes certain packets unrecognizable at some step... 2006-08-09 * Created a new system to launch our Alarm-based Timers which surely will not have the know AllocSignal()'s failure issues... Thats just creating a new process to manage the alarm timeout and reach accordinglyto invoke the appropite callback function or mui method. - plus, it will no longer cause the giFTMui task to die due a failed assertion, now the user will be informed of the real issue which caused a failure (which could be any of: out of memory, failed openning the timer.device, or a break request was received..) * While using "giftd INDEXONLY" the daemon will check if the AMIGIFT: assign exists, automatically assigning it if it does not exists. * There could be certain cases where a daemon/plugin config file isn't saved properly to disk using giFTMui, thats because we used strdup() on the retuend string from xget() without checking if the option is set (the string object is empty), our save-file funtions avoids any further issue caused by out of memory or null strings, but the user is not informed about a missing option and/or about the config file may is incomplete.. It should be fixed now. * The bind() test of the reload daemon function can't be never successful due the "Unlink From Stack" addition... Fixed. 2006-08-06 * Optimized the hashing functions which used to generate the shares index, check this out: Hashing a 2MB file give us the following results: - OpenFT's MD5 works about 30% faster - FastTrack's mod-MD5 works about 80% faster - Ares's SHA works about 78% faster - Gnutella's SHA works about 89% faster How they was optimized is *just* based on how data is loaded, and *not* modifying the algorithms!, basically we'll try to load the entire file to be hashed into memory, if the file is bigger than the free memory we'll try to allocate a big enough chunk to work with, keeping about 4MB of free memory always and allocating a maximun of 60MB (while you has lots of free memory it will work faster, else...not) However, to gain an even better noticeable speed up, it will be great if someone out there could provide us of m68k-ASM coded versions for such algorithms (MD5/SHA[1]), we and every amigift user will greatly appreciate it! 2006-08-05 * Reloading the daemon from giFTMui while we are connected to the chat is making the whole sockets events notifications to hang due the task is "paused" on the reload process (short story), as a quick solve, when we want to reload the daemon we'll first use "Unlink From Stack" feature, which shutdown all open connections and bsdsocket.library is closed as well, to later proceed properly to reload the daemon. * Added a progress indicator for when we use "giftd INDEXONLY" to update the shares index, now you'll be informed of the percent hashed, the average bytes per second (just for fun), and the remaining time to the process to end (ETA), this progress is show when using INDEXONLY option only (not when running on daemon mode) and writing directly to stdout (do not matter if you use the VERBOSE option or no) * some minor fixes... 2006-08-03 * Fixed Bug-Tracking Item #1532519, starting amigift it could freezee for some seconds due a blocking sendto() call being used * The chat uses now the same new method to receive data the daemon connection is using, should work faster and/or without congesting the socket.. Also, some minor fixes on the chat has been done.. 2006-07-30 * Fixed a bug on the Online Updater which fail to update some files due a CRC Checksum error reported by analizing not the correct chunk of data... 2006-07-16 * To reload the daemon from giFTMui a timeout-Timer for daemon shutdown chekout is created, if such timer cannot be created for any reason a 'failed assertion' causes the interface to exit completely, This has been changed to avoid the assert()'ion check and instead trying to bind the daemon port should let us know as well when daemon isn't running to be reloaded. Also, such timeout-Timer calls a dispatcher on intervals of 300000 micro seconds, that value has been changed to 700K as well * On a failed assertion situation, the chat tryes to re-connect itself to the server, due a common method from the chat custom class is invoked, this will no longer happen if such method is invoked disposing the class. 2006-07-13 * Recent Ares versions don't report real stats, it's not a bug, at least not on our part. alas, giftd doesn't allow plugins *not* to provide stats, so we just return what the supernode tells us if it's an old supernode then it'll work, if it's not, it won't ... * Stats window will no longer be activated while it is opened/updated 2006-06-30 * Added new options to the giFTMui's MUI Settings, you can now load the settings from disk, save them to disk, restore current settings to the last saved, and restore and/or reset the settings to the defaults. * Fixed a parser error which has made the Gnutella HTTP requests to be incomplete/truncated causing the supernodes to ignore us and hence there was the problem with this plugin not being able to connect on the latest build. Unfortunatelly there is somewhere some other issue which makes the plugin to take long time to reconnect on shutdown connections.. we should assume the problem comes from the "complicated" input and event notifications mechanism, which seems or probably isnt properly ported on the new shared libraries fashion, any help ?... 2006-06-23 * optimized/improved a bit gift.library's logging facility, while using GLOB_STDERR and GLOB_STDOUT we'll check if pr_COS and pr_CES (which fail back to pr_COS when isnt available) aren't the same and hence avoid logging to both filehandlers. Also giftd.log filesize was checked on each write, making a too unnecessary/possible overload... now only every 1000 writes will be checked, which should be ok as the filesize limit is 10MB ... * How FastTrack loads his banlist file and Gnutella loads his hostiles.txt file has been improved. Previously it was just Open()'ing the file and reading line-by-line, to read each line gift.library/file_read_line() was used, which function does "free-old-buffer > read-line-from-file > dup-line-to-memory", NOW we just "slurp" the whole file into memory and process it later internally in one step. PROS: should be working faster CONS: it needs the filesize's memory at once (about ~500KB) * The maximun number of connections which OpenFT guess at startup has been down to 30 (it was 255) ... you can always override that value by using the appropiate option (max_active) 2006-06-18 * How to request network statistics and how to launch the inspector has been changed... there may be now a bit more overload from the GUI but it will no longer require two standalone-signals on connection for the timers we used... * Searches by realm should be now working fine for all networks. * VerifyIncoming tool must be performed while the daemon isnt running, and giFTMui do not checked for that, Fixed. * Optimized how data is received from the daemon... For information, previously we was receiving line-by-line and then processed each line/packet, that data was received reading byte-by-byte until a CRLF is found, furthermore we checked if that was a multi-line string (comming from a "malformed" META data though), which slowed even more the process... NOW we just receive all data available at once, and the data received are procesed internally without congesting the socket... * There may be some situations where a Inspector could not work properly or fail without notice, those are RARE cases though!, What we have noticed is a little problem on the inspector process while a method is pushed to select the next entry on the downloads list, if in the process the user de-select the active entry or select an entry from the uploads list (which action automatically disables any active entry on the downloads list) once the pushed method take action on the next app loop the inspector will fail to continue as it was unable to get the information needed (from the active entry on the list) to launch a locator, at this step the inspector stopped working internally, but to the user eyes it is running (but doing nothing), and thats the only thing we have found buggy on the inspector procedure (at least for now), now if that happens the inspector will be properly fully aborted and in addition the user will be warned of the issue. * Ghosting of the Stop button when it is clicked didn't worked properly to be re-enabled while using multi-lists, Fixed. * Searches directed to the Ares network (by using giFTMui's protocol checkmark) and Locators launched for this same network wasn't working properly due a very stupid bug... the protocol name to be used on a search request and the check for online plugin state is fetched/detected given the network's HASH type, Ares uses "SHA1" and Gnutella "SHA", and on both functions we checked for the three first bytes of the Gnutella hash before than the Ares hash, making request directed to the Ares network interpreted like if what we wanted is about the Gnutella netowrk, FIXED! * Sometimes a Locator cannot stablish the connection to the daemon due the connect event isn't notifyed... fixed...(hopefully!, and hopefully without side effects..) 2006-06-13 * Fixed some string mismatch issues at giFTMui.cd, where updated strings at the build-in laungage wasn't at his time adapted as well on the catalog descriptor. Most important are string numbers #447, #417, #407, #380, #323, #321 where a formatting was changed (%s to %ld or viceversa), also strings #595, #593, #585, #593, #553, #166, #145, #142, #54 and #5 was minimal corrected for typos. * Some users reported a issue about the OpenFT nodes file ends with 0 bytes of size and making on the next run unable to connect to the network, with the need of the user manually replacing the file, well, first is needed to mention that this happens due OpenFT do not stores nodes where we was unable to connect, but theres some factors to consider which that plugin leave out...(ie, dynamic IPs, not a 24/7 node, etc), also I should mention that Im in doubt if theres a bug somewhere since that behaviour do not happens from the first porting of the plugin, or it wasn't reported on the very firsts builds IIRC, so there will be two workarround for now to that issue, 1) the nodes file size will be checked and deleted if his size is 0, forcing the plugin to copy the nodes from the data dir (amigift:daemon/data/openft/). 2) the plugin will check for the enviroment variable DONT_PURGE_OPENFT_NODES before updating the nodes to disk, if such variable is found it will NOT try to leave out nodes where we was unable to connect. NOTE this way of "fixing" that issue is TOO lame and hence subject to change... * Added a new giftd command-line option: TASKPRI/N Obviously is behaviour is to change the daemon task priority, giFTMui has a new slider object to change it as well. 2006-06-11 * giFTMui has been translated to Italian language, Thanks a lot to Samir Hawamdeh for his work. * German and Swedish catalogs contains some issues and has been renamed on the packages until they are fixed... * bzlib.library can be now loaded from amigift:libs/ as well * Starting a new search we will check now if any/some of the networks are online, warning the user if there is no online network and not proceding with the search then. * Default Ares port for giFTMui settings was missing, Fixed. * Requesters Timeout handling and downcheck was enabled by default where the appropiate is to have both disabled at a first run. * some very little internal fixes... 2006-06-04 * Required Lamp.mcc version has been changed to 11.1, which should work as well, as there seems to be some users who hardly find the latest 11.2 ... * On a first clean installation execution, giFTMui complains about it isn't able to load giftd.conf, Fixed. * On giftd's INDEXONLY command line usage, when the daemon is reloaded theres the following error: platform.c:178(amiga_init): FAILED ASSERTION 'active_children == NULL' it has been reported using amigift from os4, and since we dont noticed it from os3 I'm not sure if it is currently fixed... an extra check has been added on program exit (using a destructor) to verify if the internal resources are freed upon exit. * giFTMui's AppIcons facility has been disabled for now to check if theres a problem on os4 causing a grim on program exit. 2006-06-02 * When the user clicks on "stop", the ToolBar gadget will be disabled, as there is nothing else to stop, and enable it again when a search is started. * gift.library and giftd had debugging to the serial line enabled by default, it has been changed to when DEBUG is ifdef'ed. * There was a bug on the preferences's stats slider... fixed. 2006-05-11 * While using FIONBIO mode, the command strings to be sent to the daemon will be checked against being duplicated on the internal queue, this will prevent ie sending multiple STATS; requests when the daemon re-alive after a congestion.... * Added lots of sanity checks on the socket functions, for valid bsdsocket base pointer, NULL strings, etc since, after the addition of "Unlink from Stack" something could happend... 2006-04-25 * Fixed some hit while openening the preferences window due an "incorrect" usage of MUIM_Setup .. * Updated Gnutella plugin to version 0.0.10.1-CVS and removed expire check to retrieve gwebcaches... 2006-04-23 * GIFTMUI v2.0 has been fully localized, about 300 new (not repeated) strings in total, if you wonder.. 2006-04-19 * Stand-By Mode has been (temporally?) removed, mainly due his usage shouldn't be required since the daemon launch now the (re)hashing procedure from a new process and therefore it isnt blocked. * Added a new context menu item for the results lists to browse a user shares list, it is activated when the entry over the mouse is from the OpenFT network which the only network protocol which *may* could return such results. * Some various code cleanups.. 2006-04-14 * If we exit from giFTMui while the downloads list isn't empty there could be a system's freeze due a bug into ClearCache(), Fixed. * The global timer count has been finally removed, the reason is that it wasn't accurate at all (for what we using it), the history for that counter is long.. first it was using the ciaa.resource, later it was using a Software Interrupt, and finally it was moved to a MUI InputHandler of type MUIIHNF_TIMER, but we detected that such handler isnt accurate to count the uptime seconds to have a mark for certain events, that MUI Handler has a retard of 4 seconds each interval of ~10 seconds, the removal of the counter has took just two minutes since atm only three mui methods was still using it, (before it was used to locators timeout, inspector, etc, but they was adapted to use the newly created alarm based timers), such methods uses from now just a inline time()-like function which should be just fine as well... * Some time ago we detected wheres the problem from the Genesis TCP/IP Stack about asynchronous event notification not being handled corrently all the time, it was just because giFTMui uses SocketBaseTags's SBTC_SIGEVENTMASK attribute, as recomends the bsdsocket.library autodoc, and therefore to the opposite of which it says using the deprecated SBTC_SIGIOMASK attribute Genesis hans't problems at all. Since to Miami(Dx)'s eyes seems to not matter what attribute to use (works without problems on both cases) we decided to keep the deprecated one, but todays a new problem comes... the new Native TCP/IP Stack for MorphOS, MOSNet, seems to have a similar issue... such event notification aren't detected at all!. By that reason the SBTC_SIGIOMASK attribute will be used only when genesis.library can be opened, else only SBTC_SIGEVENTMASK will be used (as it should), even if at time of this write isnt clear and/or tested thats what is causing the MOSNet issues... * Added a new item to the Network menu: "Unlink from Stack", this option will close all active sockets giFTMui has in use, and later the bsdsocket.library will be closed as well. This could be helpfull (apart others) when fex MiamiDx sends a SIGBREAKF_CTRL_C signal to all applications which are still using the bsdsocket library, the first time giFTMui receives such signal it will first 'Unlink From Stack' and if it receives a second ^C signal it will exit completely. 2006-04-09 * fixed and improved the main window's transfers gauge progress by using double linked lists.. * Finally finished the Online Updater to the whole AMIGIFT components, thats for each individual library/plugin, frontend and daemon, as well to update the nodes and banlist files for all networks. 2006-04-07 * gift.library/log.c: fixed to use corrent BPTRs from process caller pr_CES for GLOB_STDERR and pr_COS for GLOB_STDOUT, also added log filesize limit to 10 MB. * Removed GetNodes tool (used to get OpenFT-only nodes) completelly. * Requesters timeout value are now settable from the preferences window as well, its initial value is get from the tooltypes firstly, and a option to disallow requesters completelly has been added. * "chat log stopped" msg is written twice to the log on exit, fixed. * Added InputBuffered method calls here and there... ie, before processing socket events. 2006-03-27 * gift.library/dataset.c: added thousands of sanity checks by using 'MagicID' fields on Dataset * and ds_data_t struct types, even if there could be still some hits on certain cases it should now hopefully make the system alive without further issues, also because the original giFT sources do not checked for NULL struct parameters passed to the library functions, and used them without caution where a damaged memory area could happend... theres the first benefit of using the new allocation system, which btw isnt working properly from gift.library =), but atleast let us reduce the memory used by datasets for about a 68%. Must to mention as well that all assert() calls (~153) have been removed from this file, following ofcourse a recursive trace to the callers, given them a chance to the daemon to continue working without annoying 'failed assertion' requesters, thats indeed something the *whole* core should do, but a single file took me about 3 hours to fix everything, so how many damn time I'll need for the others 200 files... * gift.library/strobj.c: fixed and improved string_appendvf() function which sometimes writted +1 bytes of the buffer length (our allocation system reserved already enought room, but this behaviour was buggy anyway), This function now also uses the global semaphore since static data is used (a fixed fmt passed to RawDoFmt()) * Removed usage of unneeded "constructors" and "destructors" from the libraries and plugins. 2006-03-26 * The TCP/IP Stack is now detected on the oposite way to activate FIONBIO (non-blocking) sockets, before we just check if an AMITCP port is available, now we only check if a MIAMI.1 is, the reason for this is that todays have been release new tcpip stacks which are all based on the AmiTCP API and since Miami(Dx) seems the only stack which DO NOT have problems with AMIGIFT..that change should work fine for all now.... * When a new Timer request could not be created it shows a requester to inform of the error, This end up on a endless loop if the timer which can't be created comes from the requester timeout feature, its fixed now just showing the error to the debug window. * The global timer count was automatically started and stoped overloading MUIM_Setup/MUIM_Cleanup from the 'Advanced Search' custom class, when we replaced this class we forgot to move the timer making certain events unreachable, Fixed. * Updated Ares plugin to Version 0.3.0, fixing some illegal abort() calls and added meta data tags for various AmigaOS-only filetypes like lha, iff, etc * Added some background colors to some preferences groups, fixed also some inner spacings and incorrect usage of Label2() for Checkmarks were Label1() must be used... * OGG Vorbis support has been (temporally?) removed from giftMeta.library, the reason for this is that new additions on our stdlib has make this lib dont loading itself no more... there seems to be some kind of conflic with his constructors since giftMeta was the only component which still used libnix, however I dunno for sure what was the real problem here, I only know atm that removing libnix completelly the library works again :-/ 2006-03-12 * libraries are now loaded from anywhere, thats first from CurrentDir, then from HomeDir (if isnt equal to CurrentDir), and if unsuccesfull fail back to standard system's libs directory, for each lock we check on the root as well into a "LIBS" subdirectory. * our amigift's stdlib (standard link library) lacks a essential feature until now, reallocating the programs stack space to fit the needs, this has been fixed implementing a basic expansion method using Exec's StackSwap() ... * The memory allocation routines using pools have been replaced, the only real benefit about this will be to the developers thanks to his internal debugging capabilities, which are more sofisticated the olders we used from amigift.library. * daemon and frontend have been adapted to use a new Local files location, that is "amigift:daemon/Local"'s contents must be moved to the parent, nothing more. 2006-01-05 * The standalone AMIGIFT: assign is no longer needed, giFTMui will assign it automaticaly on startup if such path is not found. * giFTMui uses now a dimanically loadable plugin names to the search protocols, loadable from amigift:data/protocols which contains a network name by line. (editing that file and using only relevant plguins to you will result on a less height object as well, if you want to, but that file has nothing to do with the daemon plugins, thats just for when you want to search at specific networks). 2006-01-04 * giFTMui launches a new Timer request when a MUI_requester is opened, the default seconds to wait is 45, once timeout the requester will we automatically closed (selecting 'cancel'). This will prevent "annoying" requester from blocking the gui when you're not on front of your computer.. That default value can be configured using the TOOLTYPE: REQTIMEOUT * Added clipboard, console, and printer devices functions, printer and console devices aren't used right now but planned for further improvements.. 2006-01-03 * Added some giFTMui's AppIcons to the common working status, thats downloading / uploading / both, online / offline. (On startup we check if the daemon is running, if it is, the appicon is set to Offline, if isnt, the default program icon is keep) * Removed 'Advanced Search' popup object and created a new mui class on which you'll have two appeacence panels to the searchs, the single one (like before at bottom of the toolbar) and the new one at left side of the results list, which uses a virtual group to fit nicely from here, as well another class created (EGroup, short for Expandible Group) inspired on Windw's explorer menus... EGroups are used to the realms, protocols, and results filter, which are the objects previously on the 'Advanced ...' popup. From now the file advs.cfg are no longer used and you can remove it safely. Both search panels are switched using the arrow images. 2006-01-02 * Improved our cached-strings class, (used ie on the search string object or the chat), they has now a context menu where you can pick last added entrys (apart using the arrow keys), as well save them on exit to be loaded on the next run. 2005-12-16 * Added a new giFTMui's InfoBar at main window bottom, with two huge lamps and the info string itself. one of the lamps is the previously added as giFTMui Status marker, the new one will indicate a daemon's share sync/rehashing process, and the informational string will be used to daemon-issues only, thats subject to change however... 2005-12-11 * Implemented a thread-like system into gift.library. The index/hashing of your shares and/or completed downloads (on Share Completed mode) will no longer block the daemon!. Those threads will be launched on the background with priority -1 so the system doenst grind to a halt. * Fixed some WaitSelect() issues (mainly noticeable on AmigaOS4) where a wrong descriptor is used.... 2005-11-30 * Changed MUI's ObjectIDs to the prefs, which mean you MUST delete/rename your envarc:mui/giftmui.cfg file before running giFTMui now (just once, ofcourse), and regenerate your preferences, dont forget to do it or things will not work properly! * Removed usage of getopt() from the daemon to use ReadArgs(), the commandline arguments are now as follow: H=HELP/S, V=VERSION/S, I=INDEXONLY/S, P=PROTOCOL/K/M, Q=QUIET/S, VERBOSE/S, DEBUG/S, L=LOGFILE/K, HD=HOMEDIR/K, LD=LOCALDIR/K, DD=DATADIR/K, PD=PLUGINSDIR/K, AB=ASYNCIOBUFSIZE/N Use the HELP switch to know more about them. giFTMui's prefs has been adapted to support some of they, as well a CONSOLE option has been added which will use the VERBOSE switch to output the daemon logging to the given console (mainly to debug purposes and/or read interactively what the daemon is doing internally)... * Implemented usage of asyncio.library on the daemon for the downloads. This library is now required!. The internal buffer size asigned to AsyncIO has been set to 32KB, which you can override using the AB commandline option, or ofcourse from giFTMui. * The networks status lamps worked just as On/Off, now the networks which you chossed to have active from the giftd prefs will have a initial yellow color, when the network goes online will be green, and the rest, which arent selected on the prefs, will remain with the black/off color. * .Cache items which are no longer on use arent removed on exit if the downloads list is empty. Fixed. * OpenFT's max_active guessing value has been fixed to be 255 as max for that network connections.. that value is used when max_active is set to -1, change it if you want.. a value of 40-64 should be ok as well... 2005-11-18 * Added a new huge a lamp as status for what is doing giFTMui internally, for now SendingData/ReceivingData Loading/Saving Connecting/LookingUp are supported, which remember its colors are configurable from the MUI prefs. 2005-10-03 * On completed downloads, giFTMui just checks the downloaded file from the completed folder (to play it, or add the URL as comment on the file), but this is wrong since it dont consider if the downloaded file may be corrupted and moved to that folder, now you will be warned as well on those cases.. 2005-09-16 * The Transfers List(s) has been improved, working as follow: - When the 'status' field is 'Active' the porcentage transfered is showed. - When the 'chunk' field is 'Active' also, the text is replaced by an NList "Image" (area obj) which graphically paints the tranfered chunks, if the chunks for a transfer are as follow: 'chunks = 1661274-1761590 5023086-5234266' those ranges are filled with a rectangle, using MUI's HALFSHADOW pen, when a chunk (whole range) is complete the pen is changed to FILL/MASK, and so on... Unfortunatelly, on how works the daemon, if we download various chunks from a same user, the previous chunk is erased from the list (command line returned from the daemon), and therefore we can't mantain a correlative filled rectangles, (or, the same applyes if we restart giftmui when we have active/pending transfers), and in that case (if the total transfered bytes mismatch from the sum of all chunks) the background is filled using HALFSHINE pen (just like a gauge does). However, to make a correlative painting, just a little cache system is needed, but we keep just as-is for now, until we check if that could produce or no an unnecessary overload... 2005-09-10 * Fixed creation of cache files when the .Cache folder doenst exists. * sharing root paths file is readed just after creating the prefs object class instead at opening the preferences window, therefore FBrowse should work properly now. * How the daemon is launched from giFTMui has been completelly rewrited, we use now a properly SystemTags call using ExitCode Tag to detect when the daemon exits itself succesfully (that previously was intuited..), also we use now mui's methods to the Application class dispatcher which allow to remove everything on a system-friendly fashion when a fatal error (a failed assertion, out of memory, or something) happens. 2005-09-06 * When a connection to the daemon failed and we aren't using 'launch on startup' a check on the incoming folder is performed to verify #?.state files, this has been removed from here and moved to the tools menu, now you decide when to do that check (its really needed only if the daemon didn't exit properly, due a failed assertion or something.., and there was pending downloads on which case may the files #?.state are keep as #?.state.tmp and on the next daemon run they aren't recognized. -- erm.. however this should be made by the daemon itself. . . 2005-09-04 * Removed timer.device's software interrupt and created a new complete timers system based/inspired on unix's alarm() behaviour. pros and cons: new timers-system uses UNIT_VBLANK precission and softint used UNIT_MICROHZ which overload the system since we used it to count seconds only.., also the seconds counted was stored on a variable which as well was used as marker to manage all timer-related events..(yeah, very wrong method, I know now :P) overloading even more the system at mui's loop procedure... New timers-system should overload much less (or, no overload, better say ;) ... For the main seconds counter we use now an MUI's InputHandler of type MUIIHNF_TIMER, when a connection to the daemon is stablished we use the mentioned alarm-based timers to receive networks statistics, to manage Locators timeout, and detect Inspector intervals. * As you should already know, the transfer progress inserted on the downloads list comes from the first source on the string/command returned by the daemon, firstly I thought on doing that action to avoid the parser being overload scanning the whole string, but this could become on mistake from the users thinking a transfer has finished when indeed did not, and therefore wondering that is a bug on giFTMui... by this now the whole sources are scanned looking for an active status or the end of the string is reached, I fear what could happend when a transfer has about 20 sources and the last is the active... but, even if that could end on a high overload parsing downloads progress, is the right action which should be performed. * Due the above mentioned point, cloned lists (like main-window's dlist), can be deactivated, using his context-menu, you decide if you want that extra overload... 2005-09-02 * optimized logging functions (info gauge, debug, chat logger) * fixed downcheck paths issue... 2005-09-01 * The whole core ISN'T using LIBNIX**** We have "created" our own 'standard library', as replacement for libnix, from sources from various places as well created/optimized by us, check the LICENCE amigaguide's section for more info about from where they comes, however some of those sources comes from the libnix distro as well, for functions like setjmp/longjmp. The main advantage for the usage from this library is that it isnt using unix-FILE I/O since amigift do not use it (we use dos.library directly for quite all related) and therefore there should be a noticeable speed up for strings parsing (ie: vfprintf->vsprintf) 2005-08-23 * Since no more than one Locator is allowed on the current version, if you try to launch a second one you will be asked to abort whichs running actually and launch a new one for the selected transfer. 2005-08-22 * in case you disable the chat there is a new message which allows you to connect later if you want. * added more blank spaces to the embeed giftd.conf (compressed into amigift.library, by using bzlib.library) for the sharing roots. (about 20000 chars, hope its enought.. ;) 2005-08-21 * Splash Window was closed once tha main window receives a MUIA_Window_Open attr, this has been changed to be closed just before the mui loop since beetwen that Splash Window is closed and the Main opened could take some seconds.. 2005-08-19 * giFTMui has a new option to check if the running TCP/IP Stack is online, and therefore calls to gethostbyname() wouldn't block if you're not online. active it from main giftmui prefs at page bottom. * The popup string for sharing roots has been changed to accept unlimited number of paths since that is allowed by the daemon. * added some "hacks" to use customclass's objects.. this isn't legal for mui classes since objects can't be shared outside them, but well, since they aren't externally loadable who matter... (this should speed up certain loop jobs, ie. inserting items, transfers, etc..) 2005-08-18 * amigift's core, libs and plugins, implement a new method to failed assertions behaviour, previously the whole core is suspended, now it uses setjmp/longjmp to set and jump to a working stack frame when something went wrong, I dunno how legal is this to the system.. (by being called from shared libs), but firsts tests passed OK and even if its/could be still buggy should be better the previous method on which you was forced to reset. * The transfers's downloads list has been added/cloned on the main window, it is (de)activated by a gauge-based toogle button at results list bottom, that gauge button has four pixel height and therefore shouln't be annoying if you do not want to have it activated. Also that gauge has another nice feature, it is global counter for active downloads, it computes total size, transfered and average cps, 'Estimate Time Arrival' and the number of active/pending/queued downloads, that gauge's behaviour is activated by using his Context Menu. 2005-06-22 * Added new tooltype 'COMPACTMODE', which creates the main window on a page group fashion to show all primary windows (transfers, debug, chat, prefs) from the same main window. * If the chat can't connect succesfully the nlist object is replaced with a new informative object containing a button to reconnect... 2005-06-19 * Added two new giFTMui options to the results list, they are "Insert Sorted" which insert items using MUIV_NList_Insert_Sorted and "SpeedUp Insert" to use MUIV_NList_Insert_Flag_Raw. (refer to the NList.mcc docs for more info). * The string "[ 00 | 00 ]" at right pos of the info-gauge, which inform of selected entrys and his sources, are now showed on two differents TextObjects. * The results on multi-lists functions have been completely rewrited, custom-class based, accepting unlimited number of lists and some others enacements, ie. number of results for a search no longer shows on the informative gauge when there are more than one simultaneous search, instead it uses the page title, as well if the list isn't active and new items are inserted its page text color change to white, if ends changes to black-bold showing the size of all items on the list, etc 2005-06-03 * Inspector, Locators and Chat NO LONGER uses a new Task!, this should make the client work heavily more stable, with the "bad point" that the main task may notice a bit more overload... (however thats subject to change once again just to allow creating tasks if the user wants it, just request it) * Optimized giftmui's network functions, everything is supposed to work just fine... (atleast using Miami(Dx)) * Networks Logos are now externaly loadable (no longer linked with the executable) via datatypes.library/iffparse.library. 2005-05-12 * Configured shortcuts for menu options and added a new option, as suggested by Framiga, to allow save settings before quit. 2005-04-29 * Added/replaced math functions which now supports 64 bit integers allowing upto One ExaByte (1152921504606846976 Bytes). (for now the unique advantage of this is when showing the size on bytes on the various nlists, which previously there wasn't ok with filesizes >2Gb) * Replaced Networks statistics window by a new one using a more likely NList Object to show the data, also added four new fields, "size by file", "files by user", "downloads", "Uploads", which will show (as you can deduce by the name) the average size of each file the network owns, the average amount of files each user is sharing on the network, and the number of downloads and uploads you did on the network, respectively. 2005-04-15 * Cleaned up amigift.library's unused functions, that is some unsorted implementations we created and at the end not being used for one or other reason..., this means that the library is totally INCOMPATIBLE with olders versions, however there shouldn't be any end-user problem because the first library function at offset 0x1e has been preserved (__init_amigift(), which just return NULL), so the user will be warned if he tryes to call this (no-longer used) function from a old client. * gift.library's platform_init()/platform_cleanup() ISN't safe because could be the case that two processes call them... fixed. (adding for the job a new semaphore. The same behavior applyes to libgift_init() and libgift_finish() but those functions shouldn't be used more than once instead those platform_* which should be able to be called anywhere anytime when some of the platform globals are needed by clients..., as an additional note: those platform dependent functions should be further reworked/renamed since we should assume that they will be no longer used outside an AmigaOS enviroment). * Everything has been compiled with latest libnix. and giftmeta.library with latest vorbislibs optimized for 020 and 060 using -O3. 2005-02-13 * When giFTMui worked with normal objects functions and/or created at application creation time, everything was using hooks to launch each action, this has been changed to use respective methods/attributes for each new custom class. * giFTMui is able to use TearOff MUI Class on the main, transfers, and monitors windows. However that class seems a bit..buggy... it may freeze your system while you are moving objects, on that case you can use SmartCrash to intercept illegal accesses..and be able to continue. Once you have configured your own interface there is no need to use SC (but I recommend you to use it always!), and you can enjoy safely..your new giFTMui's look. To activate TearOff.mcc you must set to 'YES' the TOOLTYPE 'TEAROFF'. Also, you can change the ToolBar from a horizontal bay to a vertical one, but looking horizontally... to look really vertically it can't be done on-the-fly just changind an attribute (why? ask the author), and the toolbar object must be re-generated which is buggy ATM... if you want you can try and see yourself how is working setting the TOOLTYPE 'TOOLBARHVERT' to 'YES', what happens is that the toolbar object isn't always properly created and we hope to fix it soon... 2005-02-11 * improved putmsg() routines used by the subprocesses and added some more debuging messages. now the tasks will not continue if the message wasn't received and/or processed correctly... 2005-02-07 * amigift.library: re-enabled startup initilization for all needed resources (at LibInit() stage) * Created a global/common NList parser (using the formatting the daemon uses to send his strings). * HistoryLoad() Optimized (which should load the transfers history more faster), also size parameter to InsertHistoryItem() has been changed to be ULONG (which could make problems if the lib is used on a older client). * giFTMui's file browser no longer creates a new task. 2005-02-04 * The whole MUI Interface (well, ~90%) is now using custom classes for everything, instead static objects.. as well, a Splash window has been added which shows the progress of creation for "everything". (This Window can be (de)activated using the TOOLTYPE 'SPLASHWINDOW') * Context menus on the monitors has no effect, so we removed it (its a monitor after all). 2005-01-23 * dataset.c: removed all abort() calls which just do problems on gift.library, using for now traces to ensure there aren't other(s) problems by doing that. * Fixed some hits generating the shares db file... * Now the daemon check on what filesystem the incoming dir is on, warning if it isn't a SFS/PFS partition. * Current amigift.library's strdup() implementation is forwarded to gift.library one (like all allocation related functions), which has made problems due the original one wasn't allocating an additional byte as claim the ANSI stardard, so when a string has 0 length and it isn't NULL it returns NULL when in fact it shouldn't, it produces problems/hits when searching, which are fixed now, atleast on that point... * removed assertion check from fst_peer.c(remove_global) which makes Genesis users (!?) not be able to exit nicely. now if the assertion isnt true just returns (which seems fine for his job). * Chat ID isn't cleared properly on exit which makes giftmui task remains (hidden) forever on the tasks list, Fixed. * we forgot to allocate the used memory on the locators when his initialization was reworked, which ofcourse makes them crash horribly, its fixed now. * reworked connect() functions and moved macros to functions... 2005-01-22 * There was several problems regarding subprocesses and how they are launched/killed, how they manages global variables... and what when they are running and the user quit the client... so we decided to create a dedicated msgports system just to do that job properly, each problematic task and/or each which isn't independent (those which need to interact with giFTMui's global varialbes without affecting in any way to this main task), has assigned an ID which is set/cleared when the subprocess start/exit as well when they need to to change the status/attribute/etc to an object, they instruct the main task to do it himself instead try to manage them itself (like PushMethod but more advanced :), which could create certain problems sometimes.. a clear example of this is the Locators, chat, getnodes.. * Changed protocol selection MUI's CheckMark to toggle-buttons including his respective network logo. * PFS3 partitions reported as working on the noixemul version with (apparently) no problems. 2005-01-21 * giFTMui's ARexx port has been reworked, however a little implementation still (commads requests are welcome) * There are parser errors on the chat when the nick used is too long, Fixed, rewroted the whole parser... 2005-01-19 * HubLists which are bzip'ed are ignored, fixed (using bzlib.library). 2005-01-15 * The client has been adapted to support the latest new plugins, also no more unix to amiga paths (and viceversa) conversion is perfomed which means should be used with the noixemul daemon version only. 2005-01-09 * Two new plugins available, Ares (http://www.aresgalaxy.org/), and DirectConnect (http://www.neo-modus.com/), However DC is really unstable ATM... 2004-12-21 * First noixemul daemon version. It has been compiled on separated components for everything, instead all on the same executable. There are giftd (the daemon itself), gift.library (gift's core design), giftproto.library (gift's API to plugins) and giftMeta.library which manages meta data tags. As well the plugins as been designed as they should be... FastTrack.PlugIn, OpenFT.PlugIn, Gnutella.PlugIn, etc. Also, pleased to announce the new memory allocation system (replacements for malloc, realloc, calloc, free) is based on mempools, which will make amigift (hopefully) memory leaks free... but frustrated we have noticed giftd keeps too many..chunks unfreed when they are apparently no longer used, ofcourse they are been freed when the mempool is removed but god know what could happens after few days uptime... however the memory unfreed isn't too much after some hours of use, so do not consider this an impediment to use this nice piece of software :) Unfortunately there are two know bugs on the noixemul conversion, the shares system dont work properly, and the OpenFT and Gnutella plugins sometimes "hangs" itself... 2004-12-13 * Fixed a problem when saving a plugin config when his drawer doenst exists... 2004-11-28ML Release Version 1.1.3 * Reworked ReadFromDisk/SaveToDisk functions, they worked unsafely because just looked for the option name without matter what is the group it is on, when indeed there could be the same option for various groups. * Fully supported Aminet plugin from the client (the plugin itself should be checked his working still..) 2004-11-19 * Added lots of new prefs options, for the daemon and plugins, they are those that are UnDocumented, and shouldn't be normallly modified by the end user... We have added it just to have full control over the daemon from the client. REMEMBER that you MUST reconfigure everything!, best way: rename EnvArc:MUI/giFTMui.cfg and load the client to do so. * Used bzlib.library for the build-in daemon and plugins configuration files which makes final executable much smaller, so you need that lib to "Save To Disk" function. * Created a TODO list. 2004-11-16 * Changed how the daemon is launched, instead of connect at startup and wait for a connection refused now the gui try to bind the daemon's port and if sucessful then run it. * Added timeout to forbid/permit re-assign the socket signal mask. 2004-11-04 * Fixed a bug on the multi-lists which makes last list "unquitable" 2004-10-28Public Release Version 1.1.2 * Fixed hits creating the Cache files.. * Fixed transfer sources list and optimized his NList parser. * Fixed a hit on the chat. 2004-10-26Luca 'Hexaae' Longone * AmiGift archive contains a mangled sample throwing hits with V41sound.dt and its 8svx datatype!. (Zurriagazo.8svx) Fixed. 2004-10-24 * Fixed pointer mismatch when using FilePart() to extract the filename from networks which support files with full paths. * Some Warning strings received from the daemon are lost, Fixed 2004-10-22Public Release Version 1.1.1 * Fixed how the client proccess the daemon command ADDSOURCE(). When adding a source which is already being used the daemon automatically remove/replaces it and the client errnoneously interpret the old one has been removed (if no CHGDOWNLOAD() command is sent between ADDSOURCE() and DELSOURCE()..), theres a big problem when that source is the only one for a transfer and auto-Locators is active, with result as you can imagine... * Improved scanning of the results list to look for more sources, we have noticed out there are too funny people sharing/faking the same file with different name, (which result is applicable to the above mentioned problem with ADDSOURCE() command), on those cases all sources from the same user are added independently, which becomes in a high overload (as high as you has the 'max sources' option) performing the ADDSOURCE()->DELSOURCE() behavior. Now all those loser users are ignored. * Multi-Downloads Counter dont work when 'downcheck' isn't active, Fixed. * Locators being running can be now controlled via commodities. * Fixed GetNodes Tool, and added a 'verify' option which will read your current nodes file to perform some basic report about whats the bigest/lower vitality/uptime nodes and some other info. * Updated AmigaGuide Docs, including History and FAQ sections. * Fixed and improved multi-list names behavior... * Changed ALL %d's TO %ld from all sources (and catalog descriptor) to use (v|s)(n)printf replacements (no more libnix) using RawDoFmt() 2004-10-15 * Fixed a bug on the daemon when it is loaded only to generate the 'shares' database file, which caused a failed assertion... * (hopefully) fixed the bug which avoids to connect to the daemon sometimes when 'launch on startup' is active... reports plz? * ADDED FIONBIO (non-blocking) sockets mode on client->daemon communication, using as well queue sending method. ( unfortunatelly this is disabled to Genesis users until notice) * Reduced SocketBaseTags's DTABLESIZE value to his original size... * Fixed hit $000173C8 on amigift.library ... * Optimized 'Advanced Search' functions. * When a requester pop up a sound is played, but if it shows before the MUI app has been created (failed loading a lib, allocating memory, etc), there are unpledictable results when trying to read the (unavailable) MUI Object containing the sound file. Fixed. * Added kprintf() in addittion to the internal debug assertions checks, and added optionally usage of the enviroment variable AMIGIFT_DISABLE_DEBUGREQS to avoid requesters from being pop up with debug messages. * Listing Shares wasn't possible due the 'Advanced Search Options' checks..., Fixed. * On disconnect (not quiting) if there are pendinng searchs, they are cancelled on the daemon side but the client remains his session number which on reconnect a new list is opened when performing a new search (when using multi-lists and the currennt list is empty), Fixed. * Fixed a bug on StandBy mode which causes the window to pop up even if not connected... (the socket could be != -1 but isn't conected) * When using StandBy mode, if the chat window is open the StandBy remains inactive but closing the chat it isn't reactiveted, Fixed. * ADDED ToolTypes recognition, currently suported are: BWINDOWS (to activate BWin.mcc's windows, same as using envar GIFTMUI_USING_BWIN which you should remove now), DAEMONWARNS (to insert in the debug window warnings sent from the daemon), DEBUGREQS (as above mentioned to disable reqs with debug messages), and FORCE_REHASH (the same as using the envar, the daemon shouldn't be runnng (when you start the gui) to this to work). If the tooltypes could not be found default values will be used, that is: FALSE, TRUE, TRUE, FALSE, respectively. * Optimized parsing of default prefs values. 2004-10-08 * ADDED Feature to know how many sources has the file you selected from the results list. (Support Request #1041687). A new field will show at the right on the info bar, Something like "[ 01 | 07 ]" this means you selected a file which have 7 sources. * Rewrited the function which parse the (Transfers) Sources list. * Visible (results list) columns aren't properly saved, Fixed. * Fixed a bug introduced on the new nList parser used for the Transfer in progress which pointers (the string received from the daemon) are lost after use... it affected to the DL/UL Monitor and the Sources list. * When a upload goes complete the size stored on the Transfers Statistics comes from the total size, but it isn't the real size uploaded if it was just a chunk, Fixed. * Fixed a nasty bug introduced on the last version due the function _GetSession() which was optimized and changed to not allocate his own pointer on memory, it affects to the multi-list system and Locators. * ...and some minor internal fixes/optimizations. 2004-10-06 * Corrected Locale strings numbers in ascending order. (after removing some of they non needed in .cd/.catalog) * Added German translation, and fixed Swedish catalog. 2004-10-04 * Fixed low stack size for MUI's NList.mcc class. * Changed error message returned when failed opening amigiftt.library to match exact library version needed. * Removed assertion check into _getConfigStr() * Rewrited windowTitle and onlineLamps functions, which should work faster and safe... * Clicking twice on the stats window both pop up but the first one can't be closed, Fixed. 2004-10-03Public Release Version 1.1 * Resources updated on the full archive. (thx to Kevsamiga by maintain a uptodate list of latests versions) * - Updated Daemon to Version 0.11.7 * - Updated OpenFT plugin to Version 0.2.1.4 2004-10-01 * Reverted context menu function to old method... * fixed a nasty behavior on the new bubble function.. * some minor fixes and optimizations... 2004-07-09 * The field Transmit inserted on the Transfer Window comes from the last source, it could make misunderstanding leting us to think there is no data downloaded when in fact there is it. - Fixed. * On daemon startup your sharedir is scaned, and if there was any change and/or addition that file is (re)hashed, thats so hatefull if you have lots of files, since, even if rehashing isn't needed all timestamps are compared, to avoid that frustrating situtation the operation will be perfomed *only* if you set the envar: 'GIFTD_FORCE_REHASH_ON_STARTUP', and if you own a low processor is recommended that you never uses it, instead launch 'giftd -x -v' after a fresh boot. Now the startup isn't instantaneous since the shares db must be loaded into memory, on my 060 less than 2 minutes to parse about 4000 files and 2Gb (consider the time depending the number of files) * Added 'available plugins' to About window. If the current plugins could not be obtained for some reason.. defaults at compile-time will be used. * Rewrited (main nlist) bubble help and context menu functions. * Fixed a bug on Gnutella, when parsing meta-data tags, which causes the daemon to exit itself without futher notice/error message. * auto-disable 'scan files' if the item do not have a HASH value. * Optimized 'Read/Save from Disk' functions. * fixed a hit on the new nList parsers. 2004-06-28 * Removed CIAs usage. (now the client should work on the next Amiga compatible platforms, MorphOS, AmigaOS4...) * The chat uses his own MUI application. * Rewrited exit method.. (which should fix subproceses troubles). * Rewrited event, sounds and player preferences groups. (they looks like before but the creation/loading is fasster). * - Updated FasTrack to Version 0.8.7 * Some minor fixes/optimizations/cleanups ... 2004-05-30 * Optimized Transfers and Results NList parsers. they should work alot faster, safe and with less memory consumition. (to insert a 999 results list was needed about 8/10 Mb, now the needed are about 3!..) Note: newly added meta-data tags are appended to the comment field. * Added debug and safe modes to some amigift.lib's functions. * Networks statistics keep no more main window slepping. * Fixed chat window corruption with p96 users. * CManager is no longer required. * Fixed some hit on GetNodes. * Some chat improvements.. * Fixed a bug and optimized CreateCache function. * Supported MESSAGE command (sent by the daemon). * Fixed a bug on Stop (Transfers window) procedure. * - Updated OpenFT to Version 0.2.1.3 * - Updated FasTrack to Version 0.8.6 2004-05-09 2nd bugfix update * Fixed ramlib trouble, which on systems without a ramlib-stack-patch causes amigift to freezee on startup, now the purpose of such a patch is performed by amigift.library at LibInit() stage increasing the ramlib stack to 16KB...and loading here everything* amigift (and third part resources) needs to work properly (even if not used at this point), as well checking for latest versions. * Fixed the issue which causes amigift/giFTMui not be able to be loaded as first MUI program on startup, caused by muigfx.library... * Fixed chat window corruption on scroll down. * Decreased internal allocated memory to swap stack size. * included patches for xml2.library which fixes a memory access error... 2004-05-02 bugfix update * Fixed memory leak * Changed min rexxsyslib required to v36 * Fixed bug #946324 (hits disconnecting) 2004-05-01 First public release.
Be the first person to add a text review.
Copyright © 2009 Geeknet, Inc. All rights reserved. Terms of Use
Thanks for your rating!
Would you also like to write a review?