From 5c3e00a2cb3f9a86296041a52b4d5f359070999f Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Fri, 5 Jan 2024 20:22:49 +0100 Subject: [PATCH] rebuilt with binutils 2.24 [release 2010.1.2.2.6-11mamba;Fri Dec 13 2013] --- README.md | 3 + aMule-2.1.3-servers.patch | 14 + aMule-2.1.3-wx.patch | 156 + aMule-AdunanzA-3.14b3-glib-2.8.10.patch | 14 + amule-adunanza-2010.1.2.2.6-gcc-4.7.patch | 21 + amule-adunanza-2010.1.2.2.6-gcc45.patch | 16 + amule-adunanza.spec | 233 + amuleadunanza3.11b1.patch | 9182 +++++++++++++++++++++ 8 files changed, 9639 insertions(+) create mode 100644 aMule-2.1.3-servers.patch create mode 100644 aMule-2.1.3-wx.patch create mode 100644 aMule-AdunanzA-3.14b3-glib-2.8.10.patch create mode 100644 amule-adunanza-2010.1.2.2.6-gcc-4.7.patch create mode 100644 amule-adunanza-2010.1.2.2.6-gcc45.patch create mode 100644 amule-adunanza.spec create mode 100644 amuleadunanza3.11b1.patch diff --git a/README.md b/README.md index 27aee43..0cd6442 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # amule-adunanza +aMule is an eMule-like client for the eD2k and Kademlia networks, supporting multiple platforms. +Adunanza is a special patched release specially made for use inside italian Fastweb networks. + diff --git a/aMule-2.1.3-servers.patch b/aMule-2.1.3-servers.patch new file mode 100644 index 0000000..deb3fe8 --- /dev/null +++ b/aMule-2.1.3-servers.patch @@ -0,0 +1,14 @@ +diff -Nru aMule-2.1.3.orig/src/AdunanzA.h aMule-2.1.3/src/AdunanzA.h +--- aMule-2.1.3.orig/src/AdunanzA.h 2007-11-28 19:33:23.000000000 +0100 ++++ aMule-2.1.3/src/AdunanzA.h 2007-11-28 19:49:40.000000000 +0100 +@@ -66,8 +66,8 @@ + // ADU URLS + #define ADURM_URL "http://update.adunanza.net/3-10/adu_remote.conf" + //#define ADU_SRV_URL "http://ocbmaurice.dyns.net/pl/slist.pl?download/server-best.met" +-#define ADU_SRV_URL "http://corpo.free.fr/server.met" +-#define ADU_NODES_DAT "http://update.adunanza.net/adu_nodes.dat" ++#define ADU_SRV_URL "http://elboiler.p2pforum.it/server.met" ++#define ADU_NODES_DAT "http://www.adunanza.net/files/downloads/nodes.dat" + + /* + MAN Milano........................ 1.0.0.0/8 diff --git a/aMule-2.1.3-wx.patch b/aMule-2.1.3-wx.patch new file mode 100644 index 0000000..8148d35 --- /dev/null +++ b/aMule-2.1.3-wx.patch @@ -0,0 +1,156 @@ +diff -urN aMule-2.1.3.org/src/utils/wxCas/src/wxcasprefs.cpp aMule-2.1.3/src/utils/wxCas/src/wxcasprefs.cpp +--- aMule-2.1.3.org/src/utils/wxCas/src/wxcasprefs.cpp 2005-12-16 13:09:29.000000000 +0100 ++++ aMule-2.1.3/src/utils/wxCas/src/wxcasprefs.cpp 2006-12-17 20:20:47.151203000 +0100 +@@ -297,7 +297,7 @@ + m_validateButton = + new wxButton ( this, ID_VALIDATE_BUTTON, wxString ( _( "Validate" ) ) ); + m_cancelButton = +- new wxButton ( this, ID_CANCEL_BUTTON, wxString ( _( "Cancel" ) ) ); ++ new wxButton ( this, wxID_CANCEL, wxString ( _( "Cancel" ) ) ); + + m_buttonHBox->Add ( m_validateButton, 0, wxALIGN_CENTER | wxALL, 5 ); + m_buttonHBox->Add ( m_cancelButton, 0, wxALIGN_CENTER | wxALL, 5 ); +@@ -321,7 +321,6 @@ + EVT_BUTTON ( ID_OSPATH_BROWSE_BUTTON, WxCasPrefs::OnOSPathBrowseButton ) + EVT_BUTTON ( ID_AUTOSTATIMG_BROWSE_BUTTON, WxCasPrefs::OnAutoStatImgBrowseButton ) + EVT_BUTTON ( ID_VALIDATE_BUTTON, WxCasPrefs::OnValidateButton ) +-EVT_BUTTON ( ID_CANCEL_BUTTON, WxCasPrefs::OnCancel ) // Defined in wxDialog + EVT_CHECKBOX ( ID_AUTOSTATIMG_CHECK, WxCasPrefs::OnAutoStatImgCheck ) + EVT_CHECKBOX ( ID_FTP_UPDATE_CHECK, WxCasPrefs::OnFtpUpdateCheck ) + END_EVENT_TABLE () +--- aMule/src/utils/wxCas/src/wxcasprefs.h.org 2006-12-17 22:17:39.017417250 +0100 ++++ aMule/src/utils/wxCas/src/wxcasprefs.h 2006-12-17 22:18:17.611829250 +0100 +@@ -101,8 +101,7 @@ + ID_AUTOSTATIMG_COMBO, + ID_AUTOSTATIMG_BROWSE_BUTTON, + ID_FTP_UPDATE_CHECK, +- ID_VALIDATE_BUTTON, +- ID_CANCEL_BUTTON ++ ID_VALIDATE_BUTTON + }; + + protected: +--- aMule/src/MuleGifCtrl.cpp 2006-02-03 20:14:05.000000000 +0100 ++++ aMule/src/MuleGifCtrl.cpp 2006-11-19 19:35:33.000000000 +0100 +@@ -24,7 +24,6 @@ + + #include + #include +-#include + #include + + #include "MuleGifCtrl.h" +@@ -35,6 +34,50 @@ + EVT_ERASE_BACKGROUND(MuleGifCtrl::OnErase) + END_EVENT_TABLE() + ++#if wxCHECK_VERSION(2, 7, 1) ++// Wrapper that emulates old wxGIFDecoder API ++ ++class MuleGIFDecoder : public wxGIFDecoder { ++public: ++ MuleGIFDecoder(wxInputStream* stream, bool dummy) { ++ m_stream = stream; ++ dummy = dummy; // Unused. ++ m_nframe = 0; ++ } ++ ++ ~MuleGIFDecoder() { /* don't delete the stream! */ } ++ ++ wxGIFErrorCode ReadGIF() { ++ return LoadGIF(*m_stream); ++ } ++ ++ void GoFirstFrame() { m_nframe = 0; } ++ void GoNextFrame(bool dummy) { m_nframe < GetFrameCount() ? m_nframe++ : m_nframe = 0; } ++ void GoLastFrame() { m_nframe = GetFrameCount(); } ++ ++ void ConvertToImage(wxImage* image) { wxGIFDecoder::ConvertToImage(m_nframe, image); } ++ ++ size_t GetLogicalScreenWidth() { return GetAnimationSize().GetWidth(); } ++ size_t GetLogicalScreenHeight() { return GetAnimationSize().GetHeight(); } ++ ++ size_t GetLeft() { return 0; } ++ size_t GetTop() { return 0; } ++ ++ long GetDelay() { return wxGIFDecoder::GetDelay(m_nframe); } ++ ++private: ++ uint32_t m_nframe; ++ wxInputStream* m_stream; ++}; ++ ++#else ++class MuleGIFDecoder : public wxGIFDecoder { ++public: ++ MuleGIFDecoder(wxInputStream* stream, bool flag) : wxGIFDecoder(stream,flag) {}; ++}; ++#endif ++ ++ + + MuleGifCtrl::MuleGifCtrl( wxWindow *parent, wxWindowID id, const wxPoint& pos, + const wxSize& size, long style, const wxValidator& validator, +@@ -66,7 +109,7 @@ + } + + wxMemoryInputStream stream(data, size); +- m_decoder = new wxGIFDecoder(&stream, TRUE); ++ m_decoder = new MuleGIFDecoder(&stream, TRUE); + if ( m_decoder->ReadGIF() != wxGIF_OK ) { + delete m_decoder; + m_decoder = NULL; +@@ -137,3 +180,4 @@ + dc.DrawBitmap( m_frame, x + m_decoder->GetLeft(), y + m_decoder->GetTop(), true); + } + ++// File_checked_for_headers +--- aMule/src/MuleGifCtrl.h 2006-01-01 06:17:25.000000000 +0100 ++++ aMule/src/MuleGifCtrl.h 2006-11-18 05:01:22.000000000 +0100 +@@ -27,11 +27,10 @@ + + #include + #include +-#include + + const int GIFTIMERID = 271283; + +-class wxGIFDecoder; ++class MuleGIFDecoder; + class wxBitmap; + + /** +@@ -121,7 +120,7 @@ + void OnErase( wxEraseEvent& WXUNUSED(event) ) {} + + //! A pointer to the current gif-animation. +- wxGIFDecoder* m_decoder; ++ MuleGIFDecoder* m_decoder; + //! Timer used for the delay between each frame. + wxTimer m_timer; + //! Current frame. +@@ -133,3 +132,4 @@ + + #endif + ++// File_checked_for_headers +--- aMule-2.1.3/src/MuleTextCtrl.cpp~ 2006-12-17 20:55:37.157820250 +0100 ++++ aMule-2.1.3/src/MuleTextCtrl.cpp 2006-12-17 20:56:21.328580750 +0100 +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + /** + * These are the IDs used to identify the different menu-items. +--- amule/src/amule.cpp~ 2006-12-17 21:53:26.474639000 +0100 ++++ amule/src/amule.cpp 2006-12-17 21:55:40.307003000 +0100 +@@ -96,6 +96,7 @@ + #include + #include + #endif ++ #include + #endif + + diff --git a/aMule-AdunanzA-3.14b3-glib-2.8.10.patch b/aMule-AdunanzA-3.14b3-glib-2.8.10.patch new file mode 100644 index 0000000..afbf3bd --- /dev/null +++ b/aMule-AdunanzA-3.14b3-glib-2.8.10.patch @@ -0,0 +1,14 @@ +diff -Nru aMule-AdunanzA-3.14b3.orig/src/ThreadTasks.cpp aMule-AdunanzA-3.14b3/src/ThreadTasks.cpp +--- aMule-AdunanzA-3.14b3.orig/src/ThreadTasks.cpp 2008-08-26 08:47:01.000000000 +0200 ++++ aMule-AdunanzA-3.14b3/src/ThreadTasks.cpp 2009-10-22 03:14:18.000000000 +0200 +@@ -483,6 +483,10 @@ + //////////////////////////////////////////////////////////// + // CAllocateFileTask + ++#if defined(HAVE_FALLOCATE) ++# undef HAVE_FALLOCATE ++#endif ++ + #ifdef HAVE_FALLOCATE + # include + #elif defined HAVE_SYS_FALLOCATE diff --git a/amule-adunanza-2010.1.2.2.6-gcc-4.7.patch b/amule-adunanza-2010.1.2.2.6-gcc-4.7.patch new file mode 100644 index 0000000..c09335c --- /dev/null +++ b/amule-adunanza-2010.1.2.2.6-gcc-4.7.patch @@ -0,0 +1,21 @@ +Index: b/src/ObservableQueue.h +=================================================================== +--- a/src/ObservableQueue.h ++++ b/src/ObservableQueue.h +@@ -331,14 +331,14 @@ + template + void CObservableQueue::ObserverAdded( ObserverType* o ) + { +- NotifyObservers( EventType( EventType::STARTING ), o ); ++ this->NotifyObservers( EventType( EventType::STARTING ), o ); + } + + + template + void CObservableQueue::ObserverRemoved( ObserverType* o ) + { +- NotifyObservers( EventType( EventType::STOPPING ), o ); ++ this->NotifyObservers( EventType( EventType::STOPPING ), o ); + } + + diff --git a/amule-adunanza-2010.1.2.2.6-gcc45.patch b/amule-adunanza-2010.1.2.2.6-gcc45.patch new file mode 100644 index 0000000..8fe9e9a --- /dev/null +++ b/amule-adunanza-2010.1.2.2.6-gcc45.patch @@ -0,0 +1,16 @@ +--- a/src/utils/wxCas/src/wxcasframe.cpp.orig 2010-09-10 01:52:00.650000228 +0200 ++++ b/src/utils/wxCas/src/wxcasframe.cpp 2010-09-10 01:52:16.669000228 +0200 +@@ -285,11 +285,11 @@ + #ifdef __WXMSW__ + + memdc. +- SetFont ( wxFont::wxFont ( 6, wxSWISS, wxNORMAL, wxBOLD ) ); ++ SetFont ( wxFont ( 6, wxSWISS, wxNORMAL, wxBOLD ) ); + #else + + memdc. +- SetFont ( wxFont::wxFont ( 8, wxSWISS, wxNORMAL, wxBOLD ) ); ++ SetFont ( wxFont ( 8, wxSWISS, wxNORMAL, wxBOLD ) ); + #endif + + memdc. diff --git a/amule-adunanza.spec b/amule-adunanza.spec new file mode 100644 index 0000000..c3c3422 --- /dev/null +++ b/amule-adunanza.spec @@ -0,0 +1,233 @@ +%define amule_ver %(echo %version | cut -d. -f3-5) +%define adunanza_ver %(echo %version | cut -d. -f1-2) +Name: amule-adunanza +Epoch: 1 +Version: 2010.1.2.2.6 +Release: 11mamba +Summary: An eMule-like client for the eD2k and Kademlia file sharing networks +Group: Graphical Desktop/Applications/Internet +Vendor: openmamba +Distribution: openmamba +Packager: Silvan Calarco +URL: http://www.adunanza.net +Source: http://downloads.sourceforge.net/project/amule-adunanza/aMule-AdunanzA/Stable/aMule-AdunanzA-%{adunanza_ver}-%{amule_ver}.tar.bz2 +Patch0: amuleadunanza3.11b1.patch.gz +Patch1: aMule-2.1.3-wx.patch +Patch2: aMule-2.1.3-servers.patch +Patch3: aMule-AdunanzA-3.14b3-glib-2.8.10.patch +Patch4: %{name}-2010.1.2.2.6-gcc45.patch +Patch5: amule-adunanza-2010.1.2.2.6-gcc-4.7.patch +License: GPL +## AUTOBUILDREQ-BEGIN +BuildRequires: glibc-devel +BuildRequires: libbinutils-devel +BuildRequires: libfontconfig-devel +BuildRequires: libfreetype-devel +BuildRequires: libgcc +BuildRequires: libgd-devel +BuildRequires: libGeoIP-devel +BuildRequires: libjpeg-devel +BuildRequires: libpng-devel +BuildRequires: libreadline-devel +BuildRequires: libstdc++6-devel +BuildRequires: libtermcap-devel +BuildRequires: libupnp-devel +BuildRequires: libwxBase-unicode-devel +BuildRequires: libwxGTK-unicode-devel +BuildRequires: libX11-devel +BuildRequires: libXpm-devel +BuildRequires: libz-devel +## AUTOBUILDREQ-END +BuildRequires: gettext-devel +BuildRequires: libcurl-devel >= 7.12.0 +BuildRequires: libcryptopp-devel +BuildRoot: %{_tmppath}/%{name}-%{version}-root +Requires: xchat >= 2.6.6 +Provides: aMule-adunanza +Obsoletes: aMule-adunanza +Provides: aMule-AdunanzA +Obsoletes: aMule-AdunanzA + +%description +aMule is an eMule-like client for the eD2k and Kademlia networks, supporting multiple platforms. +Adunanza is a special patched release specially made for use inside italian Fastweb networks. + +%package webserver +Summary: Webserver files for %{name} +Group: Applications/Web +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} +Provides: aMule-AdunanzA-webserver +Obsoletes: aMule-AdunanzA-webserver + +%description webserver +aMule is an eMule-like client for the eD2k and Kademlia networks, supporting multiple platforms. +Adunanza is a special patched release specially made for use inside italian Fastweb networks. + +This package contains the webserver files. + +%package doc +Summary: Webserver files for %{name} +Group: Documentation +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} +Provides: aMule-AdunanzA-doc +Obsoletes: aMule-AdunanzA-doc + +%description doc +aMule is an eMule-like client for the eD2k and Kademlia networks, supporting multiple platforms. +Adunanza is a special patched release specially made for use inside italian Fastweb networks. + +This package contains the documentation files. + +%prep +%setup -q -n aMule-AdunanzA-%{adunanza_ver}-%{amule_ver} +#-n aMule-%{amule_ver} +#%patch1 -p1 +#%patch0 -p1 +#%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 + +%build +%configure \ + --disable-debug \ + --enable-optimize \ + --enable-amule-gui \ + --enable-webserver \ + --enable-webservergui \ + --enable-cas \ + --enable-wxcas \ + --enable-alc \ + --enable-alcc \ + --enable-amule-daemon \ + --enable-amulecmd \ + --enable-amulecmdgui \ + --enable-geoip \ + --program-suffix=-adunanza \ + PACKAGE_NAME=aMule-AdunanzA + +%make + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +%makeinstall + +#mv %{buildroot}%{_datadir}/applications/amule.desktop %{buildroot}%{_datadir}/applications/amule-adunanza.desktop +#mv %{buildroot}%{_datadir}/applications/amulegui.desktop %{buildroot}%{_datadir}/applications/amulegui-adunanza.desktop +sed -i "s|Exec=amule|Exec=amule-adunanza|" %{buildroot}%{_datadir}/applications/amuleadunanza.desktop +sed -i "s|Exec=amulegui|Exec=amulegui-adunanza|" %{buildroot}%{_datadir}/applications/amuleguiadunanza.desktop +#rm -fr %{buildroot}%{_datadir}/doc/aMule-%{amule_ver} + +%find_lang amuleadunanza + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +%files -f amuleadunanza.lang +%defattr(-,root,root,-) +%{_bindir}/* +%{_libdir}/xchat/plugins/xasAdunanzA.pl +%{_datadir}/applications/*.desktop +# avoid conlict with aMule package +%{_datadir}/pixmaps/* +%dir %{_datadir}/amuleadunanza +%dir %{_datadir}/amuleadunanza/skins +%{_datadir}/amuleadunanza/skins/AdunanzA_A.zip +%{_datadir}/amuleadunanza/skins/AdunanzA_B.zip +%{_datadir}/amuleadunanza/skins/AdunanzA_C.zip +%{_datadir}/amuleadunanza/skins/gnome.zip +%{_datadir}/amuleadunanza/skins/kde4.zip +%{_datadir}/amuleadunanza/skins/tango.zip +%{_datadir}/amuleadunanza/skins/xfce.zip +%{_mandir}/man1/* +%{_mandir}/*/man1/* + +%files webserver +%defattr(-,root,root,-) +%dir %{_datadir}/amuleadunanza/webserver +%{_datadir}/amuleadunanza/webserver/* +%dir %{_datadir}/casAdunanzA/ +%{_datadir}/casAdunanzA/* + +%files doc +%defattr(-,root,root,-) +%{_datadir}/doc/amuleadunanza/* +%doc docs/Changelog docs/EC_Protocol.txt docs/ED2K-Links.HOWTO +%doc docs/README docs/amulesig.txt docs/license.txt +%doc docs/socks4.protocol + +%changelog +* Fri Dec 13 2013 Silvan Calarco 2010.1.2.2.6-11mamba +- rebuilt with binutils 2.24 + +* Wed Mar 27 2013 Silvan Calarco 2010.1.2.2.6-10mamba +- binutils 2.32.2 rebuild + +* Mon Nov 19 2012 Automatic Build System 2010.1.2.2.6-9mamba +- binutils 2.23.1 mass rebuild + +* Mon Oct 29 2012 Silvan Calarco 2010.1.2.2.6-8mamba +- rebuild with binutils 2.23 + +* Wed Nov 30 2011 Automatic Build System 2010.1.2.2.6-7mamba +- automatic update by autodist + +* Mon Nov 28 2011 Automatic Build System 2010.1.2.2.6-6mamba +- automatic update by autodist + +* Wed Jul 20 2011 Silvan Calarco 2010.1.2.2.6-5mamba +- rebuilt with binutils 2.21.1 + +* Wed Feb 23 2011 Automatic Build System 2010.1.2.2.6-4mamba +- automatic update by autodist + +* Sun Dec 26 2010 Automatic Build System 2010.1.2.2.6-3mamba +- automatic update by autodist + +* Fri Nov 12 2010 Automatic Build System 2010.1.2.2.6-2mamba +- automatic rebuild by autodist + +* Sat Oct 30 2010 Silvan Calarco 2010.1.2.2.6-1mamba +- update to 2010.1.2.2.6 + +* Sat Mar 06 2010 Automatic Build System 3.14b3.2.2.2-5mamba +- automatic rebuild by autodist + +* Thu Oct 22 2009 Automatic Build System 3.14b3.2.2.2-4mamba +- automatic rebuild by autodist + +* Fri Feb 06 2009 Silvan Calarco 3.14b3.2.2.2-3mamba +- automatic rebuild by autodist + +* Thu Dec 11 2008 Silvan Calarco 3.14b3.2.2.2-2mamba +- fixed desktop entry: launch amule-adunanza + +* Wed Dec 10 2008 Silvan Calarco 3.14b3.2.2.2-1mamba +- update to 2.2.2 + +* Wed Dec 10 2008 Silvan Calarco 20080430-3mamba +- removed conflicts with amule to allow cohexistence +- added webserver and doc subpackages + +* Fri Oct 31 2008 Silvan Calarco 20080430-2mamba +- automatic rebuild by autodist + +* Sat Sep 06 2008 Silvan Calarco 20080430-1mamba +- update to 20080430 +- renamed to amule-adunanza + +* Wed Nov 28 2007 Silvan Calarco 3.11b1-5mamba +- rebuilt against libbinutils 2.18 + +* Thu Sep 27 2007 Silvan Calarco 3.11b1-4mamba +- added patch for glib 2.14 +- added patch for wxGTK 2.8 + +* Mon Oct 30 2006 Silvan Calarco 3.11b1-3qilnx +- rebuilt + +* Wed Sep 06 2006 Silvan Calarco 3.11b1-2qilnx +- rebuilt + +* Sun Jul 30 2006 Silvan Calarco 3.11b1-1qilnx +- first adunanza build based on aMule 2.1.3 diff --git a/amuleadunanza3.11b1.patch b/amuleadunanza3.11b1.patch new file mode 100644 index 0000000..9f11c38 --- /dev/null +++ b/amuleadunanza3.11b1.patch @@ -0,0 +1,9182 @@ +diff -urdpN ../aMule-2.1.3-orig/amule.desktop ./amule.desktop +--- ../aMule-2.1.3-orig/amule.desktop 2005-12-14 05:12:44.000000000 +0100 ++++ ./amule.desktop 2006-06-12 18:30:05.000000000 +0200 +@@ -1,7 +1,7 @@ + [Desktop Entry] + Encoding=UTF-8 +-Name=aMule +-Comment=aMule ++Name=aMule AdunanzA ++Comment=aMule AdunanzA per utenti Fastweb + Exec=amule + Icon=amule.xpm + Terminal=false +diff -urdpN ../aMule-2.1.3-orig/ap/amule.apspec ./ap/amule.apspec +--- ../aMule-2.1.3-orig/ap/amule.apspec 1970-01-01 01:00:00.000000000 +0100 ++++ ./ap/amule.apspec 2006-06-12 19:14:40.000000000 +0200 +@@ -0,0 +1,164 @@ ++# -*-shell-script-*- ++ ++[Meta] ++RootName: @amule.org/amule:$SOFTWAREVERSION ++DisplayName: aMule AdunanzA ++ShortName: aMuleAdu ++Maintainer: lupz ++Packager: lupz ++Summary: aMule AdunanzA e' una versione di aMule specifica per utenti Fastweb ++URL: http://www.amule.org/ ++License: GNU General Public License, Version 2 ++PackageVersion: 1 ++SoftwareVersion: 3.11b ++AutopackageTarget: 1.0 ++ ++ ++[Description] ++aMule AdunanzA e' una versione di aMule specifica per utenti Fastweb ++ ++[Globals] ++export WXPREFIX=${HOME}/ap/WX-2.6.3-apbuild-dyn ++ ++ ++[BuildPrepare] ++export APBUILD_PROJECTNAME=aMuleAdu ++ ++DISTRO=debian ++ ++# Static-linkage and some work-arounds ++export APBUILD_RESOLVE_LIBPATH="wx_[a-z0-9_-.]+" ++ ++if [ $DISTRO = 'fedora' ]; then ++# needed for fedora ++ echo "Using Fedora settings..." ++# static libs ++ export APBUILD_STATIC="bfd-2.15.94.0.2.2=${HOME}/ap/WX/lib/libbfd.a" ++ export APBUILD_STATIC="${APBUILD_STATIC} glib-2.0=${HOME}/ap/WX/lib/libglib-2.0.a" ++ export APBUILD_STATIC="${APBUILD_STATIC} iberty=${HOME}/ap/WX/lib/libiberty.a" ++ ++# compat gcc ++ export APBUILD_CC=gcc32 ++ export APBUILD_CXX=g++32 ++else ++# needed for debian ++ echo "Using Debian settings..." ++ ++# static libs ++# don't know .. :D ++ ++# compat gcc ++ export APBUILD_CC=gcc-3.3 ++ export APBUILD_CXX=g++-3.3 ++fi ++ ++env | sort -n ++ ++# Point to static wx install ++WXCONFIG=${WXPREFIX}/bin/wx-config ++ ++# Save a bit on filesize, while the packages are still experiemental ++ ++export CFLAGS="-O2 -DAUTOPACKAGE" ++export CXXFLAGS="${CFLAGS}" ++ ++# Update autoconf/automake, configure, compile and install ++# 2 to run configure and autogen.sh ++# 1 to run configure ++# 0 do nothing ++CONF=0 ++DAEMONGUI=1 ++USE_APBUILD=1 ++DEBUG=1 ++ ++OPTS=" \ ++ --enable-ccache \ ++ --enable-webserver \ ++ --enable-amulecmd \ ++ --with-wx-config=${WXCONFIG} \ ++ --with-wxbase-config=${WXCONFIG} \ ++ " ++ ++if [ $DAEMONGUI -gt 0 ]; then ++ OPTS="$OPTS \ ++ --enable-amule-daemon \ ++ --enable-amule-gui \ ++ " ++fi ++ ++if [ $DEBUG -gt 0 ]; then ++ OPTS="$OPTS \ ++ --enable-debug \ ++ " ++else ++ OPTS="$OPTS \ ++ --disable-debug \ ++ " ++fi ++ ++if [ $USE_APBUILD -eq 0 ]; then ++ OPTS="$OPTS \ ++ --disable-rpath \ ++ " ++fi ++ ++if [ $CONF -gt 0 ]; then ++ ++ if [ $CONF -gt 1 ]; then ++ ./autogen.sh ++ fi ++ ++ if [ $USE_APBUILD -eq 0 ]; then ++ export CC=$APBUILD_CC ++ export CXX=$APBUILD_CXX ++ ./configure $OPTS ++ export APKG_BUILD_SKIP_CONFIGURE=1 ++ fi ++ ++ ++else ++ ++ export APKG_BUILD_SKIP_CONFIGURE=1 ++ ++fi ++ ++if [ $USE_APBUILD -eq 0 ]; then ++ prepareBuild ++else ++ prepareBuild $OPTS ++fi ++ ++[BuildUnprepare] ++unprepareBuild ++ ++ ++[Imports] ++# Grab everything from the installation by default ++echo '*' | import ++ls ${WXPREFIX}/lib/*.so* | import lib/autopackage ++ ++[Prepare] ++require @zlib.org/zlib 1.2 # Require zlib 1.2.x+ ++require @gnu.org/libstdc++ 3 # Require the ABI of GCC-3.2+ ++require @gtk.org/gtk 2.2 # v2.2 is required because of the systray. ++require @jig.org/libjpeg 62 # Require version 6b+ ++require @gnu.org/readline 5 # Needed for amuleweb/amulecmd ++require @libpng.org/libpng 3 # Require libpng 1.2.6+ ++ ++ ++[Install] ++installMan 1 share/man/* ++installData share/doc/aMule-2.1.3 ++ ++installIcon share/pixmaps/amule.xpm ++installDesktop "Network/P2P" share/applications/amule.desktop ++ ++installLocale share/locale ++installData share/amule ++ ++copyFiles lib/autopackage "$PREFIX/lib" ++ ++installExe bin/* ++ ++[Uninstall] ++uninstallFromLog +diff -urdpN ../aMule-2.1.3-orig/ap/makeclean ./ap/makeclean +--- ../aMule-2.1.3-orig/ap/makeclean 1970-01-01 01:00:00.000000000 +0100 ++++ ./ap/makeclean 2006-06-14 13:47:17.000000000 +0200 +@@ -0,0 +1,5 @@ ++#!/bin/bash ++ ++[ -e Makefile ] && make distclean ++rm -rf unittests/{muleunit,tests}/{Makefile,.deps} ++rm -rf `find . \( -name '*~' -o -name '*.orig' -o -name '*.rej' -o -name 'core*' -o -name '*.gmo' -o -name '*.package' \) ` +diff -urdpN ../aMule-2.1.3-orig/ap/readline/skeleton.1 ./ap/readline/skeleton.1 +--- ../aMule-2.1.3-orig/ap/readline/skeleton.1 1970-01-01 01:00:00.000000000 +0100 ++++ ./ap/readline/skeleton.1 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,12 @@ ++[Meta] ++RootName: @gnu.org/readline ++DisplayName: readline support ++ShortName: readline ++Skeleton-Author: lupz ++Skeleton-Version: 1 ++ ++[Notes] ++Interface version corresponds to soname version ++ ++[Test] ++INTERFACE_VERSIONS=`testForLib -i libreadline.so` +diff -urdpN ../aMule-2.1.3-orig/ap/README ./ap/README +--- ../aMule-2.1.3-orig/ap/README 1970-01-01 01:00:00.000000000 +0100 ++++ ./ap/README 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,91 @@ ++# Note su come creare un autopackage: ++# createvi anzitutto una dir ~/ap ++ ++mkdir ~/ap ++cd ~/ap ++ ++# scaricate le ultime wxWidgets ++wget http://puzzle.dl.sourceforge.net/sourceforge/wxwindows/wxWidgets-2.6.2.tar.bz2 ++# patchatele a dovere!! ++ ++export CC=apgcc ++export CXX=apg++ ++export CFLAGS="-Os" ++export CXXFLAGS="${CFLAGS}" ++ ++APBUILD_RESOLVE_LIBPATH="wx_[a-z0-9_-.]+" ++ ++# per gcc 3.2 su fedora ++#export APBUILD_CC=gcc32 ++#export APBUILD_CXX=g++32 ++ ++# per gcc 3.3 su debian NON VA ++export APBUILD_CC=gcc-3.3 ++export APBUILD_CXX=g++-3.3 ++ ++# per gcc standard ++#export CC=$APBUILD_CC ++#export CXX=$APBUILD_CXX ++ ++export APBUILD_STATIC="Xfixes X11" ++ ++# le installiamo in una cartella farlocca: ~/ap/WX ++./configure --disable-debug --prefix=${HOME}/ap/WX-2.6.3-apbuild-dyn \ ++ --enable-shared --disable-precomp-headers --enable-ccache \ ++ --disable-compat24 --without-libtiff --disable-dialupman \ ++ --disable-mshtmlhelp --disable-help --disable-html \ ++ --disable-htmlhelp --disable-xrc --disable-pcx --disable-pnm \ ++ --disable-icocur --without-expat ++ ++make install ++ ++# --disable-shared ++# scaricate i sorgenti di ogni altra libreria che amule linka statica ++# per scoprire quali sono potete confrontare la riga del linking con ldd ++# o con l'output di questo mini-script ++ ++objdump -x src/amule | grep NEEDED | sed -e's#NEEDED\s*##g' | sort | uniq | ++while read a; ++do ++ (test -e "/lib/$a" && echo "/lib/$a") || ++ (test -e "/usr/lib/$a" && echo "/usr/lib/$a") || ++ (test -e "/usr/X11R6/lib/$a" && echo "/usr/X11R6/lib/$a") || ++ echo $a; ++done | sort ++ ++# su fedora 4 erano: ++# - /usr/lib/libglib-2.0.a ++# - /usr/lib/libXinerama.a ++# - /usr/lib/libXxf86vm.a ++# - /usr/lib/libdl.a ++# - /usr/lib/libbfd.a ++# - /usr/lib/libm.a ++# - /usr/lib/libiberty.a ++# potete anche evitare di ricompilare quelle che non hanno simboli delle GLIBC_2.3 ++# quindi di quelle prima di cui si e' resa necessaria la compilazione sempre su fedora 4 sono state: ++# - /usr/lib/libbfd.a ++# - /usr/lib/libiberty.a ++# - /usr/lib/libglib-2.0.a ++# quindi i package ricompilati sono stati: ++# - binutils ++# - glib2 ++# se ricompilate altre cose fatelo con le variabili di ambiente settate sopra e con --prefix=${HOME}/ap/WX ++# poi nell'apspec metteteci anche il full path delle librerie statiche da linkare in questo modo: ++# export APBUILD_STATIC="bfd-2.15.94.0.2.2=${HOME}/ap/WX/lib/libbfd.a" ++# export APBUILD_STATIC="${APBUILD_STATIC} glib-2.0=${HOME}/ap/WX/lib/libglib-2.0.a" ++# export APBUILD_STATIC="${APBUILD_STATIC} iberty=${HOME}/ap/WX/lib/libiberty.a" ++# per le wx non serve in quanto ci pensa wx-config da solo ++# ++# Adesso potete finalmente: ++# 1) scaricare amule ++# 2) decomprimerlo ++# 3) andare nella dir di amule ++# 4) patcharlo con l'ultima patch (che contiene sto README quindi magari gia' lo avevate fatto :P) ++# 5) e solo ora dare il comando: ++ ++makeinstaller ap/amule.apspec ++ ++# Il package compare nella directory dove state ++# ++# saluti, ++# lupz +diff -urdpN ../aMule-2.1.3-orig/config.guess ./config.guess +--- ../aMule-2.1.3-orig/config.guess 2006-06-11 17:09:04.000000000 +0200 ++++ ./config.guess 2006-06-12 18:30:05.000000000 +0200 +@@ -3,7 +3,7 @@ + # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + # 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +-timestamp='2006-02-23' ++timestamp='2005-08-03' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -106,7 +106,7 @@ set_cc_for_build=' + trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; + trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; + : ${TMPDIR=/tmp} ; +- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || ++ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +@@ -206,9 +206,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; +- *:SolidBSD:*:*) +- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} +- exit ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit ;; +@@ -767,12 +764,7 @@ EOF + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) +- case ${UNAME_MACHINE} in +- pc98) +- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; +- *) +- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; +- esac ++ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin +@@ -780,9 +772,6 @@ EOF + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; +- i*:MSYS_NT-*:*:*) +- echo ${UNAME_MACHINE}-pc-mingw32 +- exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 +@@ -790,11 +779,8 @@ EOF + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; +- x86:Interix*:[345]*) +- echo i586-pc-interix${UNAME_RELEASE} +- exit ;; +- EM64T:Interix*:[345]*) +- echo x86_64-unknown-interix${UNAME_RELEASE} ++ x86:Interix*:[34]*) ++ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks +@@ -865,11 +851,7 @@ EOF + #endif + #endif + EOF +- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' +- /^CPU/{ +- s: ::g +- p +- }'`" ++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + mips64:Linux:*:*) +@@ -888,11 +870,7 @@ EOF + #endif + #endif + EOF +- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' +- /^CPU/{ +- s: ::g +- p +- }'`" ++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) +@@ -941,9 +919,6 @@ EOF + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; +- vax:Linux:*:*) +- echo ${UNAME_MACHINE}-dec-linux-gnu +- exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; +@@ -989,7 +964,7 @@ EOF + LIBC=gnulibc1 + # endif + #else +- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun) ++ #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout +@@ -999,11 +974,7 @@ EOF + LIBC=dietlibc + #endif + EOF +- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' +- /^LIBC/{ +- s: ::g +- p +- }'`" ++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit +@@ -1214,6 +1185,7 @@ EOF + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in ++ *86) UNAME_PROCESSOR=i686 ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} +@@ -1292,9 +1264,6 @@ EOF + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; +- i*86:rdos:*:*) +- echo ${UNAME_MACHINE}-pc-rdos +- exit ;; + esac + + #echo '(No uname command or uname output not recognized.)' 1>&2 +diff -urdpN ../aMule-2.1.3-orig/config.sub ./config.sub +--- ../aMule-2.1.3-orig/config.sub 2006-06-11 17:09:04.000000000 +0200 ++++ ./config.sub 2006-06-12 18:30:05.000000000 +0200 +@@ -3,7 +3,7 @@ + # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + # 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +-timestamp='2006-02-23' ++timestamp='2005-07-08' + + # This file is (in principle) common to ALL GNU software. + # The presence of a machine in this file suggests that SOME GNU software +@@ -119,9 +119,8 @@ esac + # Here we must recognize all the valid KERNEL-OS combinations. + maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` + case $maybe_os in +- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ +- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ +- storm-chaos* | os2-emx* | rtmk-nova*) ++ nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ ++ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; +@@ -172,10 +171,6 @@ case $os in + -hiux*) + os=-hiuxwe2 + ;; +- -sco6) +- os=-sco5v6 +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +@@ -192,10 +187,6 @@ case $os in + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; +- -sco5v6*) +- # Don't forget version if it is 3.2v4 or newer. +- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +- ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +@@ -248,7 +239,7 @@ case $basic_machine in + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ +- | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \ ++ | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ +@@ -266,9 +257,8 @@ case $basic_machine in + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ +- | mt \ ++ | ms1 \ + | msp430 \ +- | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ +@@ -296,9 +286,6 @@ case $basic_machine in + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; +- ms1) +- basic_machine=mt-unknown +- ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and +@@ -349,9 +336,8 @@ case $basic_machine in + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ +- | mt-* \ ++ | ms1-* \ + | msp430-* \ +- | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ +@@ -710,9 +696,6 @@ case $basic_machine in + basic_machine=i386-pc + os=-msdos + ;; +- ms1-*) +- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` +- ;; + mvs) + basic_machine=i370-ibm + os=-mvs +@@ -820,12 +803,6 @@ case $basic_machine in + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; +- pc98) +- basic_machine=i386-pc +- ;; +- pc98-*) +- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` +- ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; +@@ -882,10 +859,6 @@ case $basic_machine in + basic_machine=i586-unknown + os=-pw32 + ;; +- rdos) +- basic_machine=i386-pc +- os=-rdos +- ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff +@@ -1201,23 +1174,21 @@ case $os in + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ +- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ +- | -openbsd* | -solidbsd* \ ++ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ +- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ +- | -uxpv* | -beos* | -mpeix* | -udk* \ ++ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +- | -skyos* | -haiku* | -rdos*) ++ | -skyos* | -haiku*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +diff -urdpN ../aMule-2.1.3-orig/debian/amule-adunanza.dirs ./debian/amule-adunanza.dirs +--- ../aMule-2.1.3-orig/debian/amule-adunanza.dirs 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule-adunanza.dirs 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,5 @@ ++usr/bin ++usr/sbin ++usr/share ++usr/share/pixmaps ++usr/share/applications +diff -urdpN ../aMule-2.1.3-orig/debian/amule-adunanza.docs ./debian/amule-adunanza.docs +--- ../aMule-2.1.3-orig/debian/amule-adunanza.docs 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule-adunanza.docs 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,3 @@ ++docs/README ++docs/amulesig.txt ++docs/ED2K-Links.HOWTO +diff -urdpN ../aMule-2.1.3-orig/debian/amule-adunanza.menu ./debian/amule-adunanza.menu +--- ../aMule-2.1.3-orig/debian/amule-adunanza.menu 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule-adunanza.menu 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,7 @@ ++?package(amule-adunanza):needs="X11" section="Apps/Net"\ ++ title="amule" command="/usr/bin/amule"\ ++ icon="/usr/share/pixmaps/amule.xpm" ++ ++?package(amule-adunanza):needs="X11" section="Apps/Net"\ ++ title="aMule webserver control" command="/usr/bin/amulewebDLG"\ ++ icon="/usr/share/pixmaps/amule.xpm" +diff -urdpN ../aMule-2.1.3-orig/debian/amule-adunanza.postinst ./debian/amule-adunanza.postinst +--- ../aMule-2.1.3-orig/debian/amule-adunanza.postinst 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule-adunanza.postinst 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,9 @@ ++#!/bin/sh ++ ++set -e ++ ++#DEBHELPER# ++ ++if [ "$1" = "configure" ] && [ -x /usr/bin/update-menus ]; then update-menus ; fi ++ ++exit 0 +diff -urdpN ../aMule-2.1.3-orig/debian/amule-adunanza.postrm ./debian/amule-adunanza.postrm +--- ../aMule-2.1.3-orig/debian/amule-adunanza.postrm 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule-adunanza.postrm 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,10 @@ ++#!/bin/sh ++ ++set -e ++ ++if [ "$1" = remove ]; then ++ dpkg-divert --package amule-adunanza --rename --remove /usr/bin/ed2k ++fi ++ ++ ++#DEBHELPER# +diff -urdpN ../aMule-2.1.3-orig/debian/amule.dirs ./debian/amule.dirs +--- ../aMule-2.1.3-orig/debian/amule.dirs 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule.dirs 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,5 @@ ++usr/bin ++usr/sbin ++usr/share ++usr/share/pixmaps ++usr/share/applications +diff -urdpN ../aMule-2.1.3-orig/debian/amule.docs ./debian/amule.docs +--- ../aMule-2.1.3-orig/debian/amule.docs 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule.docs 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,3 @@ ++docs/README ++docs/amulesig.txt ++docs/ED2K-Links.HOWTO +diff -urdpN ../aMule-2.1.3-orig/debian/amule.manpages ./debian/amule.manpages +--- ../aMule-2.1.3-orig/debian/amule.manpages 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule.manpages 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,5 @@ ++debian/mans/amule.1 ++debian/mans/ed2k.wrapper.fr.1 ++debian/mans/ed2k.wrapper.1 ++debian/mans/ed2k.amule.fr.1 ++debian/mans/ed2k.amule.1 +diff -urdpN ../aMule-2.1.3-orig/debian/amule.menu ./debian/amule.menu +--- ../aMule-2.1.3-orig/debian/amule.menu 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule.menu 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,7 @@ ++?package(amule):needs="X11" section="Apps/Net"\ ++ title="amule" command="/usr/bin/amule"\ ++ icon="/usr/share/pixmaps/amule.xpm" ++ ++?package(amule):needs="X11" section="Apps/Net"\ ++ title="aMule webserver control" command="/usr/bin/amulewebDLG"\ ++ icon="/usr/share/pixmaps/amule.xpm" +diff -urdpN ../aMule-2.1.3-orig/debian/amule.postinst ./debian/amule.postinst +--- ../aMule-2.1.3-orig/debian/amule.postinst 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule.postinst 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,9 @@ ++#!/bin/sh ++ ++set -e ++ ++#DEBHELPER# ++ ++if [ "$1" = "configure" ] && [ -x /usr/bin/update-menus ]; then update-menus ; fi ++ ++exit 0 +diff -urdpN ../aMule-2.1.3-orig/debian/amule.postrm ./debian/amule.postrm +--- ../aMule-2.1.3-orig/debian/amule.postrm 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule.postrm 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,10 @@ ++#!/bin/sh ++ ++set -e ++ ++if [ "$1" = remove ]; then ++ dpkg-divert --package amule --rename --remove /usr/bin/ed2k ++fi ++ ++ ++#DEBHELPER# +diff -urdpN ../aMule-2.1.3-orig/debian/amule.preinst ./debian/amule.preinst +--- ../aMule-2.1.3-orig/debian/amule.preinst 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule.preinst 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,12 @@ ++#!/bin/sh ++ ++if [ "upgrade" = "$1" ]; then ++ dpkg-divert --remove --rename /usr/bin/ed2k > /dev/null &>/dev/null ++fi ++ ++if [ "install" = "$1" ] || [ "upgrade" = "$1" ]; then ++ dpkg-divert --package amule --add --rename \ ++ --divert /usr/bin/ed2k.xmule /usr/bin/ed2k ++fi ++ ++#DEBHELPER# +diff -urdpN ../aMule-2.1.3-orig/debian/amule.README.Debian ./debian/amule.README.Debian +--- ../aMule-2.1.3-orig/debian/amule.README.Debian 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule.README.Debian 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,41 @@ ++amule for Debian ++---------------- ++ ++STANDING AMULE ? ++---------------- ++With some Window Manager, aMule runs, but the GUI seems to be buggy. ++So, It's not a problem from the package, you just have to uncheck ++the option : "minimise icon to system tray" in your aMule preferences. ++ ++ ++AMULE AND XMULE PACKAGE ++----------------- ++Before the 1.2.X version, the package of amule was in conflicts with ++the xmule package. The bug comes from the /usr/bin/ed2k, which was ++used by the twice packages. ++ ++I wrotte a wrapper, which see if amule or xmule is running and ++invoke the right binary. So, the binary ed2k from amule was ++renamed as ed2k.amule and this from xmule was renamed ed2k.xmule. ++According to Debian, I use a diversion to rename this file :-) ++ ++ ++ ++CONFFILES IN YOUR HOME ++----------------- ++aMule is a fork of xMule, it uses the same files (~./aMule, ...). ++ ++/!\ BE CAREFUL /!\ ++If you are an older user of xMule, aMule move your files of the ++~/.xMule directory to the ~/.aMule dir. ++ ++ ++ ++TOO HIGH CPU USAGE ++------------------ ++If you have a high CPU usage with amule (you can see that when you ++run 'top'), you need maybe to compile a new kernel. See this topic : ++http://xmule.org/forums/index.php?showtopic=1030 ++ ++ ++ -- Julien Delange , Sat, 27 Sep 2003 00:11:07 +0200 +diff -urdpN ../aMule-2.1.3-orig/debian/amule-utils.dirs ./debian/amule-utils.dirs +--- ../aMule-2.1.3-orig/debian/amule-utils.dirs 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule-utils.dirs 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,5 @@ ++usr/bin ++usr/share ++usr/share/pixmaps ++usr/share/applications ++usr/share/cas/ +diff -urdpN ../aMule-2.1.3-orig/debian/amule-utils.manpages ./debian/amule-utils.manpages +--- ../aMule-2.1.3-orig/debian/amule-utils.manpages 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule-utils.manpages 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,4 @@ ++debian/mans/amulecmdDLG.fr.1 ++debian/mans/amulecmdDLG.1 ++debian/mans/amulecmd.1 ++debian/mans/amulecmd.fr.1 +diff -urdpN ../aMule-2.1.3-orig/debian/amule-utils.menu ./debian/amule-utils.menu +--- ../aMule-2.1.3-orig/debian/amule-utils.menu 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule-utils.menu 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,7 @@ ++?package(amule-utils):needs="X11" section="Apps/Net"\ ++ title="aMule Stats" command="/usr/bin/wxcas"\ ++ icon="/usr/share/pixmaps/amule.xpm" ++ ++?package(amule):needs="X11" section="Apps/Net"\ ++ title="aMule command" command="/usr/bin/amulecmdDLG"\ ++ icon="/usr/share/pixmaps/amule.xpm" +diff -urdpN ../aMule-2.1.3-orig/debian/amule-utils.README.Debian ./debian/amule-utils.README.Debian +--- ../aMule-2.1.3-orig/debian/amule-utils.README.Debian 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/amule-utils.README.Debian 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,4 @@ ++C AMULE STATS (CAS) ++ ++CAS is a little programme, which replace astats. ++The generation of webpage is not implemented yet. +diff -urdpN ../aMule-2.1.3-orig/debian/changelog ./debian/changelog +--- ../aMule-2.1.3-orig/debian/changelog 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/changelog 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,356 @@ ++amule-adunanza (2.0.3+cvs20050727-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.3+cvs20050727 ++ ++ -- Stefano Picerno Wed, 27 Jul 2005 18:25:00 +0200 ++ ++amule-adunanza (2.0.3+cvs20050710-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.3+cvs20050710 ++ ++ -- Stefano Picerno Sun, 10 Jul 2005 21:00:23 +0200 ++ ++amule-adunanza (2.0.3+cvs20050709-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.3+cvs20050709 ++ ++ -- Stefano Picerno Sat, 9 Jul 2005 10:38:52 +0200 ++ ++amule-adunanza (2.0.3+cvs20050705-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.3+cvs20050705 ++ ++ -- Stefano Picerno Tue, 5 Jul 2005 18:16:41 +0200 ++ ++amule-adunanza (2.0.3+cvs20050620-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.3+cvs20050620 ++ ++ -- Stefano Picerno Mon, 20 Jun 2005 19:10:30 +0200 ++ ++amule-adunanza (2.0.2+cvs20050612-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.2+cvs20050612 ++ * Cleanup in adu code ++ ++ -- Stefano Picerno Sun, 12 Jun 2005 13:18:47 +0200 ++ ++amule-adunanza (2.0.2-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.2 ++ * Now show the number of queued adunanza clients in transfer window (amule) ++ ++ -- Stefano Picerno Wed, 8 Jun 2005 21:31:00 +0200 ++ ++amule-adunanza (2.0.1-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.1 ++ * Fixed debian/rules script ++ ++ -- Stefano Picerno Thu, 19 May 2005 08:54:07 +0200 ++ ++amule-adunanza (2.0.0-3) unstable; urgency=low ++ ++ * Fixed compilation errors for amuled and amulegui ++ ++ -- Stefano Picerno Tue, 10 May 2005 01:09:02 +0200 ++ ++amule-adunanza (2.0.0-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0 ++ ++ -- Stefano Picerno Tue, 3 May 2005 18:56:47 +0200 ++ ++amule-adunanza (2.0.0rc8+cvs20050415-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050415 ++ ++ -- Stefano Picerno Fri, 15 Apr 2005 19:16:17 +0200 ++ ++amule-adunanza (2.0.0rc8+cvs20050405-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050405 ++ ++ -- Stefano Picerno Tue, 5 Apr 2005 22:56:32 +0200 ++ ++amule-adunanza (2.0.0rc8+cvs20050404-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050404 ++ ++ -- Stefano Picerno Mon, 4 Apr 2005 19:19:10 +0200 ++ ++amule-adunanza (2.0.0rc8+cvs20050329-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050329 ++ ++ -- Stefano Picerno Tue, 29 Mar 2005 18:19:50 +0200 ++ ++amule-adunanza (2.0.0rc8+cvs20050327-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050327 ++ * Removed references to the DWORD type, changed to uint32 ++ ++ -- Stefano Picerno Sun, 27 Mar 2005 17:03:21 +0200 ++ ++amule-adunanza (2.0.0rc8+cvs20050326-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050326 ++ ++ -- Stefano Picerno Sat, 26 Mar 2005 17:54:29 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050325-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050325 ++ ++ -- Stefano Picerno Fri, 25 Mar 2005 15:18:20 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050324-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050324 ++ * Removed some code from PartFile.cpp (ie: limit<50 stuff) ++ ++ -- Stefano Picerno Thu, 24 Mar 2005 12:18:41 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050323-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050323 ++ ++ -- Stefano Picerno Wed, 23 Mar 2005 15:04:58 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050321-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050321 ++ ++ -- Stefano Picerno Mon, 21 Mar 2005 11:11:07 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050318-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050318 ++ ++ -- Stefano Picerno Fri, 18 Mar 2005 13:43:36 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050317-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050317 ++ ++ -- Stefano Picerno Thu, 17 Mar 2005 11:23:51 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050316-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050316 ++ ++ -- Stefano Picerno Wed, 16 Mar 2005 20:36:38 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050315-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050315 ++ ++ -- Stefano Picerno Tue, 15 Mar 2005 08:27:37 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050314-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050314 ++ ++ -- Stefano Picerno Mon, 14 Mar 2005 19:30:10 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050312-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050312 ++ ++ -- Stefano Picerno Sat, 12 Mar 2005 10:39:09 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050309-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050309 ++ ++ -- Stefano Picerno Wed, 9 Mar 2005 13:36:43 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050308-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050308 ++ ++ -- Stefano Picerno Tue, 8 Mar 2005 11:08:26 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050307-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050307 ++ ++ -- Stefano Picerno Mon, 7 Mar 2005 13:26:30 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050306-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050306 ++ * Added support for AdunanzA categories during search ++ ++ -- Stefano Picerno Sun, 6 Mar 2005 18:32:03 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050305-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050305 ++ ++ -- Stefano Picerno Sun, 6 Mar 2005 11:33:10 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050303-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050303 ++ ++ -- Stefano Picerno Thu, 3 Mar 2005 10:09:30 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050302-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050302 ++ ++ -- Stefano Picerno Wed, 2 Mar 2005 19:15:39 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050301-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050301 ++ ++ -- Stefano Picerno Tue, 1 Mar 2005 16:27:09 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050216-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050216 ++ ++ -- Stefano Picerno Wed, 16 Feb 2005 13:47:48 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050214-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050214 ++ ++ -- Stefano Picerno Mon, 14 Feb 2005 11:36:29 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050208-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050208 ++ ++ -- Stefano Picerno Tue, 8 Feb 2005 10:13:43 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050131-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050131 ++ ++ -- Stefano Picerno Mon, 31 Jan 2005 18:28:38 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050124-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050124 ++ ++ -- Stefano Picerno Mon, 24 Jan 2005 18:02:31 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050110-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050110 ++ ++ -- Stefano Picerno Mon, 10 Jan 2005 11:59:12 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050107-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050107 ++ ++ -- Stefano Picerno Fri, 7 Jan 2005 14:20:41 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20050106-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20050106 ++ ++ -- Stefano Picerno Thu, 6 Jan 2005 12:32:40 +0100 ++ ++amule-adunanza (2.0.0rc8+cvs20041230-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8+cvs20041230 ++ ++ -- Stefano Picerno Thu, 30 Dec 2004 21:09:31 +0100 ++ ++amule-adunanza (2.0.0rc8-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc8 ++ ++ -- Stefano Picerno Wed, 22 Dec 2004 10:09:56 +0100 ++ ++amule-adunanza (2.0.0rc7+cvs20041217-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc7+cvs20041217 ++ ++ -- Stefano Picerno Fri, 17 Dec 2004 15:39:32 +0100 ++ ++amule-adunanza (2.0.0rc7+cvs20041213-1) unstable; urgency=low ++ ++ * Updated upstream codebase to cvs snapshot 20041209 ++ ++ -- Stefano Picerno Mon, 13 Dec 2004 12:05:42 +0100 ++ ++amule-adunanza (2.0.0rc7+cvs20041209-1) unstable; urgency=low ++ ++ * Updated upstream codebase to cvs snapshot 20041209 ++ ++ -- Stefano Picerno Thu, 9 Dec 2004 12:13:04 +0100 ++ ++amule-adunanza (2.0.0rc7+cvs20041201-1) unstable; urgency=low ++ ++ * Updated upstream codebase to cvs snapshot 20041201 ++ * Fixed a bug in UploadClient.cpp:607 ++ ++ -- Stefano Picerno Thu, 2 Dec 2004 00:52:52 +0100 ++ ++amule-adunanza (2.0.0rc7+cvs20041118-1) unstable; urgency=low ++ ++ * Updated upstream codebase to cvs snapshot 20041118 ++ * Updated debian directory from official debian package amule (1.2.6+rc7-1) ++ ++ -- Stefano Picerno Thu, 18 Nov 2004 14:41:40 +0100 ++ ++amule-adunanza (2.0.0rc7+cvs20041106-1) unstable; urgency=low ++ ++ * Updated upstream codebase to cvs snapshot 20041106 ++ ++ -- Stefano Picerno Sat, 6 Nov 2004 11:53:59 +0100 ++ ++amule-adunanza (2.0.0rc7+cvs20041105-1) unstable; urgency=low ++ ++ * Updated upstream codebase to cvs snapshot 20041105 ++ * Enabled ccache support in configure script ++ ++ -- Stefano Picerno Fri, 5 Nov 2004 17:50:14 +0100 ++ ++amule-adunanza (2.0.0rc7+cvs20041028-1) unstable; urgency=low ++ ++ * Updated upstream codebase to cvs snapshot 20041028 ++ * Forced TransferFullChunks to true (see Preferences.h) ++ * Fixed client icons in upload / download / queue list ++ ++ -- Stefano Picerno Fri, 29 Oct 2004 13:59:09 +0200 ++ ++amule-adunanza (2.0.0rc7-2) unstable; urgency=low ++ ++ * Fixed a bug in AdunanzA.cpp, 83.x.x.x was not recognized a Fastweb IP ++ ++ -- Stefano Picerno Fri, 22 Oct 2004 18:31:12 +0200 ++ ++amule-adunanza (2.0.0rc7-1) unstable; urgency=low ++ ++ * Updated upstream codebase to 2.0.0rc7 tarball ++ ++ -- Stefano Picerno Wed, 20 Oct 2004 18:20:07 +0200 ++ ++amule-adunanza (2.0.0rc6+cvs20041017-1) unstable; urgency=low ++ ++ * Updated upstream codebase to cvs snapshot 20041017 ++ * Fixed some tracing calls ++ ++ -- Stefano Picerno Mon, 18 Oct 2004 14:38:22 +0200 ++ ++amule-adunanza (2.0.0rc6+cvs20041009-2) unstable; urgency=low ++ ++ * Removed direct access to isAduSoftware ( GetIsAduSoftware and SetIsAduSoftware) ++ * Added Icons for Adunanza/Fastweb client both in upload and download list pane ++ ++ -- Stefano Picerno Wed, 13 Oct 2004 15:19:34 +0200 ++ ++amule-adunanza (2.0.0rc6+cvs20041009-1) unstable; urgency=low ++ ++ * Initial Release. ++ * Merged network code for AdnzA 3.2 (only ed2k, KAD support is still missing in amule) ++ ++ -- Stefano Picerno Wed, 13 Oct 2004 15:17:08 +0200 ++ +diff -urdpN ../aMule-2.1.3-orig/debian/compat ./debian/compat +--- ../aMule-2.1.3-orig/debian/compat 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/compat 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1 @@ ++4 +diff -urdpN ../aMule-2.1.3-orig/debian/control ./debian/control +--- ../aMule-2.1.3-orig/debian/control 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/control 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,23 @@ ++Source: amule-adunanza ++Section: x11 ++Priority: optional ++Maintainer: Stefano Picerno ++Build-Depends: debhelper(>= 4.0.0), libglib1.2-dev, libgtk2.0-dev, zlib1g-dev, libwxgtk2.5-dev, libcurl2-dev, libgd2-xpm-dev, automake1.7 | automake1.8 | automake1.9 ++Standards-Version: 3.6.1.0 ++ ++Package: amule-adunanza ++Architecture: any ++Replaces: amule, amule-utils ++Depends: ${shlibs:Depends}, ${misc:Depends} ++Description: aNOTHER eMule P2P Client - AdunanzA mod ++ aMule stand for another eMule file-sharing program, it is also ++ another fork of the xMule project. It connects to eDonkey2000 ++ network, supports Linux, *BSD and MacOS X platforms, and has ++ a new vision of the GUI. ++ . ++ Contains AdunanzA 3.2 mod ( Fastweb ) ++ . ++ Debian amule-utils package is contained in amule-adunanza ++ ++ ++ +diff -urdpN ../aMule-2.1.3-orig/debian/copyright ./debian/copyright +--- ../aMule-2.1.3-orig/debian/copyright 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/copyright 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,14 @@ ++This package was debianized by Julien Delange on ++Sat, 27 Sep 2003 00:11:07 +0200. ++ ++It was downloaded from http://sourceforge.net/project/showfiles.php?group_id=88225 ++ ++Upstream Author: Stephane COLIN ++ ++Copyright: ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; version 2 dated June, 1991. ++ ++ See /usr/share/common-licenses/GPL. +diff -urdpN ../aMule-2.1.3-orig/debian/dirs ./debian/dirs +--- ../aMule-2.1.3-orig/debian/dirs 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/dirs 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,2 @@ ++usr/bin ++usr/sbin +diff -urdpN ../aMule-2.1.3-orig/debian/manpage.1.ex ./debian/manpage.1.ex +--- ../aMule-2.1.3-orig/debian/manpage.1.ex 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/manpage.1.ex 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,59 @@ ++.\" Hey, EMACS: -*- nroff -*- ++.\" First parameter, NAME, should be all caps ++.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection ++.\" other parameters are allowed: see man(7), man(1) ++.TH AMULE-ADUNANZA SECTION "October 10, 2004" ++.\" Please adjust this date whenever revising the manpage. ++.\" ++.\" Some roff macros, for reference: ++.\" .nh disable hyphenation ++.\" .hy enable hyphenation ++.\" .ad l left justify ++.\" .ad b justify to both left and right margins ++.\" .nf disable filling ++.\" .fi enable filling ++.\" .br insert line break ++.\" .sp insert n+1 empty lines ++.\" for manpage-specific macros, see man(7) ++.SH NAME ++amule-adunanza \- program to do something ++.SH SYNOPSIS ++.B amule-adunanza ++.RI [ options ] " files" ... ++.br ++.B bar ++.RI [ options ] " files" ... ++.SH DESCRIPTION ++This manual page documents briefly the ++.B amule-adunanza ++and ++.B bar ++commands. ++.PP ++.\" TeX users may be more comfortable with the \fB\fP and ++.\" \fI\fP escape sequences to invode bold face and italics, ++.\" respectively. ++\fBamule-adunanza\fP is a program that... ++.SH OPTIONS ++These programs follow the usual GNU command line syntax, with long ++options starting with two dashes (`-'). ++A summary of options is included below. ++For a complete description, see the Info files. ++.TP ++.B \-h, \-\-help ++Show summary of options. ++.TP ++.B \-v, \-\-version ++Show version of program. ++.SH SEE ALSO ++.BR bar (1), ++.BR baz (1). ++.br ++The programs are documented fully by ++.IR "The Rise and Fall of a Fooish Bar" , ++available via the Info system. ++.SH AUTHOR ++amule-adunanza was written by . ++.PP ++This manual page was written by Stefano Picerno , ++for the Debian project (but may be used by others). +diff -urdpN ../aMule-2.1.3-orig/debian/manpage.sgml.ex ./debian/manpage.sgml.ex +--- ../aMule-2.1.3-orig/debian/manpage.sgml.ex 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/manpage.sgml.ex 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,156 @@ ++ manpage.1'. You may view ++ the manual page with: `docbook-to-man manpage.sgml | nroff -man | ++ less'. A typical entry in a Makefile or Makefile.am is: ++ ++manpage.1: manpage.sgml ++ docbook-to-man $< > $@ ++ ++ ++ The docbook-to-man binary is found in the docbook-to-man package. ++ Please remember that if you create the nroff version in one of the ++ debian/rules file targets (such as build), you will need to include ++ docbook-to-man in your Build-Depends control field. ++ ++ --> ++ ++ ++ FIRSTNAME"> ++ SURNAME"> ++ ++ October 10, 2004"> ++ ++ SECTION"> ++ stefanopp@libero.it"> ++ ++ AMULE-ADUNANZA"> ++ ++ ++ Debian"> ++ GNU"> ++ GPL"> ++]> ++ ++ ++ ++
++ &dhemail; ++
++ ++ &dhfirstname; ++ &dhsurname; ++ ++ ++ 2003 ++ &dhusername; ++ ++ &dhdate; ++
++ ++ &dhucpackage; ++ ++ &dhsection; ++ ++ ++ &dhpackage; ++ ++ program to do something ++ ++ ++ ++ &dhpackage; ++ ++ ++ ++ ++ ++ ++ ++ DESCRIPTION ++ ++ This manual page documents briefly the ++ &dhpackage; and bar ++ commands. ++ ++ This manual page was written for the &debian; distribution ++ because the original program does not have a manual page. ++ Instead, it has documentation in the &gnu; ++ Info format; see below. ++ ++ &dhpackage; is a program that... ++ ++ ++ ++ OPTIONS ++ ++ These programs follow the usual &gnu; command line syntax, ++ with long options starting with two dashes (`-'). A summary of ++ options is included below. For a complete description, see the ++ Info files. ++ ++ ++ ++ ++ ++ ++ ++ Show summary of options. ++ ++ ++ ++ ++ ++ ++ ++ Show version of program. ++ ++ ++ ++ ++ ++ SEE ALSO ++ ++ bar (1), baz (1). ++ ++ The programs are documented fully by The Rise and ++ Fall of a Fooish Bar available via the ++ Info system. ++ ++ ++ AUTHOR ++ ++ This manual page was written by &dhusername; &dhemail; for ++ the &debian; system (but may be used by others). Permission is ++ granted to copy, distribute and/or modify this document under ++ the terms of the &gnu; General Public License, Version 2 any ++ later version published by the Free Software Foundation. ++ ++ ++ On Debian systems, the complete text of the GNU General Public ++ License can be found in /usr/share/common-licenses/GPL. ++ ++ ++ ++
++ ++ ++ ++ +diff -urdpN ../aMule-2.1.3-orig/debian/manpage.xml.ex ./debian/manpage.xml.ex +--- ../aMule-2.1.3-orig/debian/manpage.xml.ex 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/manpage.xml.ex 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,148 @@ ++ ++.
will be generated. You may view the ++manual page with: nroff -man .
| less'. A ++typical entry in a Makefile or Makefile.am is: ++ ++DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\ ++manpages/docbook.xsl ++XP=xsltproc -''-nonet ++ ++manpage.1: manpage.dbk ++ $(XP) $(DB2MAN) $< ++ ++The xsltproc binary is found in the xsltproc package. The ++XSL files are in docbook-xsl. Please remember that if you ++create the nroff version in one of the debian/rules file ++targets (such as build), you will need to include xsltproc ++and docbook-xsl in your Build-Depends control field. ++ ++--> ++ ++ ++ FIRSTNAME"> ++ SURNAME"> ++ ++ October 10, 2004"> ++ ++ SECTION"> ++ stefanopp@libero.it"> ++ ++ AMULE-ADUNANZA"> ++ ++ ++ Debian"> ++ GNU"> ++ GPL"> ++]> ++ ++ ++ ++
++ &dhemail; ++
++ ++ &dhfirstname; ++ &dhsurname; ++ ++ ++ 2003 ++ &dhusername; ++ ++ &dhdate; ++
++ ++ &dhucpackage; ++ ++ &dhsection; ++ ++ ++ &dhpackage; ++ ++ program to do something ++ ++ ++ ++ &dhpackage; ++ ++ ++ ++ ++ ++ ++ ++ DESCRIPTION ++ ++ This manual page documents briefly the ++ &dhpackage; and bar ++ commands. ++ ++ This manual page was written for the &debian; distribution ++ because the original program does not have a manual page. ++ Instead, it has documentation in the &gnu; ++ Info format; see below. ++ ++ &dhpackage; is a program that... ++ ++ ++ ++ OPTIONS ++ ++ These programs follow the usual &gnu; command line syntax, ++ with long options starting with two dashes (`-'). A summary of ++ options is included below. For a complete description, see the ++ Info files. ++ ++ ++ ++ ++ ++ ++ ++ Show summary of options. ++ ++ ++ ++ ++ ++ ++ ++ Show version of program. ++ ++ ++ ++ ++ ++ SEE ALSO ++ ++ bar (1), baz (1). ++ ++ The programs are documented fully by The Rise and ++ Fall of a Fooish Bar available via the ++ Info system. ++ ++ ++ AUTHOR ++ ++ This manual page was written by &dhusername; &dhemail; for ++ the &debian; system (but may be used by others). Permission is ++ granted to copy, distribute and/or modify this document under ++ the terms of the &gnu; General Public License, Version 2 any ++ later version published by the Free Software Foundation. ++ ++ ++ On Debian systems, the complete text of the GNU General Public ++ License can be found in /usr/share/common-licenses/GPL. ++ ++ ++ ++
++ +diff -urdpN ../aMule-2.1.3-orig/debian/mans/amule.1 ./debian/mans/amule.1 +--- ../aMule-2.1.3-orig/debian/mans/amule.1 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/mans/amule.1 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,17 @@ ++.TH AMULE 1 ++.SH NAME ++amule \- aNother Peer to Peer client ++.SH SYNOPSIS ++.B amule ++.SH "DESCRIPTION" ++.B amule ++is a client, which can connect to emule servers. ++.PP ++This manual page was written for the Debian GNU/Linux distribution ++because the original program does not have a manual page. ++ ++.SH "SEE ALSO" ++You can see the Changelog file and README.Debian in the /usr/share/doc directory ++.SH AUTHOR ++aMule was written by Stephane Colin ++This manpage was written by Julien Delange for Debian +diff -urdpN ../aMule-2.1.3-orig/debian/mans/amulecmd.1 ./debian/mans/amulecmd.1 +--- ../aMule-2.1.3-orig/debian/mans/amulecmd.1 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/mans/amulecmd.1 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,18 @@ ++.TH AMULECMD 1 ++.SH NAME ++amulecmd \- Text-based program to control amule ++.SH SYNOPSIS ++.B amulecmd ++.SH "DESCRIPTION" ++.B amulecmd ++is a texte based client to control amule. Useful help can ++be obtained when you launch the program. ++.PP ++This manual page was written for the Debian GNU/Linux distribution ++because the original program does not have a manual page. ++ ++.SH "SEE ALSO" ++You can see the Changelog file and README.Debian in the /usr/share/doc directory ++.SH AUTHOR ++aMule was written by Stephane Colin ++This manpage was written by Julien Delange for Debian +diff -urdpN ../aMule-2.1.3-orig/debian/mans/amulecmdDLG.1 ./debian/mans/amulecmdDLG.1 +--- ../aMule-2.1.3-orig/debian/mans/amulecmdDLG.1 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/mans/amulecmdDLG.1 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,19 @@ ++.TH AMULECMDDLG 1 ++.SH NAME ++amulecmdDLG \- aMule control program with GUI ++.SH SYNOPSIS ++.B amulecmddlg ++.SH "DESCRIPTION" ++.B amulecmdDLG ++is a client program, and can be connected on amule client. You ++can manage your amule program with it. It provides the same functionnality ++than amulecmd, but it contains a GUI interface, written in GTK+. ++.PP ++This manual page was written for the Debian GNU/Linux distribution ++because the original program does not have a manual page. ++ ++.SH "SEE ALSO" ++You can see the Changelog file and README.Debian in the /usr/share/doc directory ++.SH AUTHOR ++aMule was written by Stephane Colin ++This manpage was written by Julien Delange for Debian +diff -urdpN ../aMule-2.1.3-orig/debian/mans/amulecmdDLG.fr.1 ./debian/mans/amulecmdDLG.fr.1 +--- ../aMule-2.1.3-orig/debian/mans/amulecmdDLG.fr.1 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/mans/amulecmdDLG.fr.1 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,18 @@ ++.TH AMULECMDDLG 1 ++.SH NAME ++amulecmdDLG \- Controle de aMule a travers une interface GTK ++.SH SYNOPSIS ++.B amulecmdDLG ++.SH "DESCRIPTION" ++.B amulecmdDLG ++Vous permet de faire les mรชmes choses que amulecmd, mis ร  part que ce programme ++est en GTK+. Il est donc dotรฉ d'une interface graphique. ++.PP ++Cette page de manuel a รฉtรฉ รฉcrite pour Debian, car le logiciel original n'en avait pas. ++ ++.SH "VOIR AUSSI" ++Vous pouvez consultez les fichiers relatifs ร  ce programme dans le rรฉpertoire /usr/share/doc/amule/ ++ ++.SH "AUTEUR" ++aMule a รฉtรฉ รฉcrit par Stรฉphane Colin , ainsi que de nombreux contributeurs. ++Cette page de manuel a รฉtรฉ รฉcrite par Julien Delange . Merci de me contacter pour tout problรจme. +\ No newline at end of file +diff -urdpN ../aMule-2.1.3-orig/debian/mans/amulecmd.fr.1 ./debian/mans/amulecmd.fr.1 +--- ../aMule-2.1.3-orig/debian/mans/amulecmd.fr.1 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/mans/amulecmd.fr.1 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,17 @@ ++.TH AMULECMD 1 ++.SH NAME ++amulecmd \- Control du programme amule ร  travers une interface en mode texte. ++.SH SYNOPSIS ++.B amulecmd ++.SH "DESCRIPTION" ++.B amulecmd ++est un programme qui vous permet de commander le logiciel amule en ligne de commande. ++.PP ++Cette page de manuel a รฉtรฉ รฉcrite pour Debian, car le logiciel original n'en avait pas. ++ ++.SH "VOIR AUSSI" ++Vous pouvez consultez les fichiers relatifs ร  ce programme dans le rรฉpertoire /usr/share/doc/amule/ ++ ++.SH "AUTEUR" ++aMule a รฉtรฉ รฉcrit par Stรฉphane Colin , ainsi que de nombreux contributeurs. ++Cette page de manuel a รฉtรฉ รฉcrite par Julien Delange . Merci de me contacter pour tout problรจme. +\ No newline at end of file +diff -urdpN ../aMule-2.1.3-orig/debian/mans/amule.fr.1 ./debian/mans/amule.fr.1 +--- ../aMule-2.1.3-orig/debian/mans/amule.fr.1 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/mans/amule.fr.1 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,17 @@ ++.TH AMULE 1 ++.SH NAME ++amule \- aNother Peer to Peer client ++.SH SYNOPSIS ++.B amule ++.SH "DESCRIPTION" ++.B amule ++est un client Peer to Peer qui permet de se connecter au rรฉseau eDonkey (eMule, ...) ++.PP ++Cette page de manuel a รฉtรฉ รฉcrite pour Debian, car le logiciel original n'en avait pas. ++ ++.SH "VOIR AUSSI" ++Vous pouvez consultez les fichiers relatifs ร  ce programme dans le rรฉpertoire /usr/share/doc/amule/ ++ ++.SH "AUTEUR" ++aMule a รฉtรฉ รฉcrit par Stรฉphane Colin , ainsi que de nombreux contributeurs. ++Cette page de manuel a รฉtรฉ รฉcrite par Julien Delange . Merci de me contacter pour tout problรจme. +\ No newline at end of file +diff -urdpN ../aMule-2.1.3-orig/debian/mans/ed2k.amule.1 ./debian/mans/ed2k.amule.1 +--- ../aMule-2.1.3-orig/debian/mans/ed2k.amule.1 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/mans/ed2k.amule.1 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,15 @@ ++.TH ED2K.AMULE 1 ++.SH NAME ++ed2k \- binary used by aMule program. ++.SH SYNOPSIS ++.B ed2k.amule ++.SH "DESCRIPTION" ++.B ed2k ++is a binary used by the aMule program. It is used to get ed2k link. ++.PP ++This manual page was written for the Debian GNU/Linux distribution ++because the original program does not have a manual page. ++ ++.SH AUTHOR ++ed2k was written by the aMule team, see http://amule.sourceforge.net ++This manpage was written by Julien Delange for Debian +diff -urdpN ../aMule-2.1.3-orig/debian/mans/ed2k.amule.fr.1 ./debian/mans/ed2k.amule.fr.1 +--- ../aMule-2.1.3-orig/debian/mans/ed2k.amule.fr.1 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/mans/ed2k.amule.fr.1 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,14 @@ ++.TH ED2K.AMULE 1 ++.SH NAME ++ed2k \- binaire utilisรฉ par le programme amule ++.SH SYNOPSIS ++.B ed2k.amule ++.SH "DESCRIPTION" ++.B ed2k ++est un binaire utilisรฉ par le programme amule. Il sert ร  passer les URL de type ed2k:// dans le programme amule. ++.PP ++Cette page de manuel a รฉtรฉ รฉcrite pour Debian, car le logiciel original n'en avait pas. ++ ++.SH "AUTEUR" ++ed2k a รฉtรฉ รฉcrit par la amule team (site : http://amule.sourceforge.net) ++Cette page de manuel a รฉtรฉ รฉcrite par Julien Delange . Merci de me contacter pour tout problรจme. +\ No newline at end of file +diff -urdpN ../aMule-2.1.3-orig/debian/mans/ed2k.wrapper.1 ./debian/mans/ed2k.wrapper.1 +--- ../aMule-2.1.3-orig/debian/mans/ed2k.wrapper.1 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/mans/ed2k.wrapper.1 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,15 @@ ++.TH ED2K 1 ++.SH NAME ++ed2k \- wrapper for {x|a}Mule ++.SH SYNOPSIS ++.B ed2k ++.SH "DESCRIPTION" ++.B ed2k ++is a binary used by to invoke ed2k.amule or ed2k.xmule. Its a specific wrapper for Debian. ++.PP ++This manual page was written for the Debian GNU/Linux distribution ++because the original program does not have a manual page. ++ ++.SH AUTHOR ++ed2k and this manpage was written by Julien Delange for Debian. ++ +diff -urdpN ../aMule-2.1.3-orig/debian/mans/ed2k.wrapper.fr.1 ./debian/mans/ed2k.wrapper.fr.1 +--- ../aMule-2.1.3-orig/debian/mans/ed2k.wrapper.fr.1 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/mans/ed2k.wrapper.fr.1 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,13 @@ ++.TH ED2K 1 ++.SH NAME ++ed2k \- wrapper pour aMule et xMule ++.SH SYNOPSIS ++.B ed2k ++.SH "DESCRIPTION" ++.B ed2k ++est un wrapper utilisรฉ pour passer les URL ed2k:// ร  ed2k.amule ou ed2k.xmule. Ce programme est spรฉcifique ร  Debian. ++.PP ++Cette page de manuel a รฉtรฉ รฉcrite pour Debian, car le logiciel original n'en avait pas. ++ ++.SH "AUTEUR" ++ed2k et cette page de manuel ont รฉtรฉ รฉcrit par Julien Delange pour Debian. +\ No newline at end of file +diff -urdpN ../aMule-2.1.3-orig/debian/menu ./debian/menu +--- ../aMule-2.1.3-orig/debian/menu 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/menu 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,2 @@ ++?package(amule-adunanza):needs="X11|text|vc|wm" section="Apps/Tools"\ ++ title="amule-adunanza" command="/usr/bin/amule-adunanza" +diff -urdpN ../aMule-2.1.3-orig/debian/README.Debian ./debian/README.Debian +--- ../aMule-2.1.3-orig/debian/README.Debian 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/README.Debian 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,7 @@ ++amule-adunanza for Debian ++------------------------- ++ ++The Adunanza Mod used is the version 3.2. http://www.adunanza.net ++Kademlia network is not yet supported by amule. ++ ++ -- Stefano Picerno , Sun, 10 Oct 2004 11:36:17 +0200 +diff -urdpN ../aMule-2.1.3-orig/debian/rules ./debian/rules +--- ../aMule-2.1.3-orig/debian/rules 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/rules 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,148 @@ ++#!/usr/bin/make -f ++# -*- makefile -*- ++# Sample debian/rules that uses debhelper. ++# GNU copyright 1997 to 1999 by Joey Hess. ++ ++# Uncomment this to turn on verbose mode. ++export DH_VERBOSE=1 ++ ++ ++# These are used for cross-compiling and for saving the configure script ++# from having to guess our platform (since we know it already) ++DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) ++DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) ++ ++ ++CFLAGS = -Wall -g -D__USE_KAD__ ++ ++ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) ++ CFLAGS += -O0 ++else ++ CFLAGS += -O2 ++endif ++ ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) ++ INSTALL_PROGRAM += -s ++endif ++ ++config.status: autogen.sh ++ dh_testdir ++ # ++ # ++ ./autogen.sh ++ ++ # Add here commands to configure the package. ++ CFLAGS="$(CFLAGS)" CXXFLAGS="-Os" ./configure --enable-kad-compile --enable-amulecmd --enable-optimize --enable-gsocket --enable-alc --enable-alcc --enable-amule-daemon --enable-amulecmdgui --disable-debug --enable-systray --enable-cas --enable-wxcas --enable-ccache --enable-webserver --enable-webservergui --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info ++ ++ ++build: build-stamp ++ ++build-stamp: config.status ++ dh_testdir -a ++ ++ # Add here commands to compile the package. ++ $(MAKE) -j4 CCACHE_PREFIX=distcc ++ #/usr/bin/docbook-to-man debian/amule.sgml > amule.1 ++ ++ touch build-stamp ++ ++clean: ++ dh_testdir ++ dh_testroot ++ rm -f build-stamp ++ ++ # Add here commands to clean up after the build process. ++ -$(MAKE) distclean ++ rm -f po/*.gmo ++ifneq "$(wildcard /usr/share/misc/config.sub)" "" ++ cp -f /usr/share/misc/config.sub config.sub ++endif ++ifneq "$(wildcard /usr/share/misc/config.guess)" "" ++ cp -f /usr/share/misc/config.guess config.guess ++endif ++ ++ ++ dh_clean -a ++ ++install: build ++ dh_testdir -a ++ dh_testroot -a ++ dh_clean -a -k ++ dh_installdirs -a -k -s ++ ++ # Add here commands to install the package into debian/amule. ++ echo Cur dir is: $(CURDIR) ++ $(MAKE) install DESTDIR=$(CURDIR)/debian/amule-adunanza ++ ++ #exit ++ #aMule part ++ #mv $(CURDIR)/debian/tmp/usr/bin/ed2k $(CURDIR)/debian/amule/usr/bin/ed2k.amule ++ #mv $(CURDIR)/debian/tmp/usr/bin/amuleweb $(CURDIR)/debian/amule/usr/bin/ || true ++ #mv $(CURDIR)/debian/tmp/usr/share/amuleweb $(CURDIR)/debian/amule/usr/share/ || true ++ #mv $(CURDIR)/debian/tmp/usr/bin/amulewebDLG $(CURDIR)/debian/amule/usr/bin/ ++ #mv $(CURDIR)/debian/tmp/usr/bin/amule $(CURDIR)/debian/amule/usr/bin/ ++ #mv $(CURDIR)/debian/tmp/usr/share/pixmaps/amule.xpm $(CURDIR)/debian/amule/usr/share/pixmaps/amule.xpm ++ #mv $(CURDIR)/debian/tmp/usr/share/locale $(CURDIR)/debian/amule/usr/share/ ++ #mv $(CURDIR)/debian/tmp/usr/share/applications/amule.desktop $(CURDIR)/debian/amule/usr/share/applications/ ++ ++ ++ #install -m 755 debian/wrapper/wrapper $(CURDIR)/debian/amule/usr/bin/ed2k.wrapper ++ #dh_link /usr/bin/ed2k.wrapper /usr/bin/ed2k ++ #dh_link /usr/share/man/fr/man1/ed2k.wrapper.1.gz /usr/share/man/fr/man1/ed2k.1.gz ++ #dh_link /usr/share/man/man1/ed2k.wrapper.1.gz /usr/share/man/man1/ed2k.1.gz ++ ++ #aMule utils part ++ #mv $(CURDIR)/debian/tmp/usr/bin/wxcas $(CURDIR)/debian/amule-utils/usr/bin ++ #mv $(CURDIR)/debian/tmp/usr/bin/cas $(CURDIR)/debian/amule-utils/usr/bin ++ #mv $(CURDIR)/debian/tmp/usr/bin/alc $(CURDIR)/debian/amule-utils/usr/bin ++ #mv $(CURDIR)/debian/tmp/usr/bin/alcc $(CURDIR)/debian/amule-utils/usr/bin ++ #mv $(CURDIR)/debian/tmp/usr/bin/amulecmd $(CURDIR)/debian/amule-utils/usr/bin ++ #mv $(CURDIR)/debian/tmp/usr/bin/amulecmdDLG $(CURDIR)/debian/amule-utils/usr/bin ++ #mv $(CURDIR)/debian/tmp/usr/share/applications/alc.desktop $(CURDIR)/debian/amule-utils/usr/share/applications ++ #mv $(CURDIR)/debian/tmp/usr/share/applications/wxcas.desktop $(CURDIR)/debian/amule-utils/usr/share/applications ++ #mv $(CURDIR)/debian/tmp/usr/share/pixmaps/alc.xpm $(CURDIR)/debian/amule-utils/usr/share/pixmaps ++ #mv $(CURDIR)/debian/tmp/usr/share/pixmaps/wxcas.xpm $(CURDIR)/debian/amule-utils/usr/share/pixmaps ++ #mv $(CURDIR)/debian/tmp/usr/share/cas/stat.png $(CURDIR)/debian/amule-utils/usr/share/cas/ ++ #mv $(CURDIR)/debian/tmp/usr/share/cas/tmp.html $(CURDIR)/debian/amule-utils/usr/share/cas/ ++ ++# mv $(CURDIR)/debian/tmp/usr/share/pixmaps/stat.png $(CURDIR)/debian/amule-utils/usr/share/pixmaps/stat.png ++ ++ ++# Build architecture-independent files here. ++binary-indep: build install ++# We have nothing to do by default. ++ ++# Build architecture-dependent files here. ++binary-arch: build install ++ dh_testdir -a ++ dh_testroot -a ++ dh_installchangelogs docs/Changelog ++ dh_installdocs -a ++ dh_installexamples -a ++# dh_install ++ dh_installmenu -a ++ dh_installdebconf -a ++# dh_installlogrotate ++# dh_installemacsen ++# dh_installpam ++# dh_installmime ++# dh_installinit ++# dh_installcron ++# dh_installinfo ++ dh_installman -a ++ dh_link -a ++ dh_strip -a ++ dh_compress -a ++ dh_fixperms -a ++# dh_perl ++# dh_python ++# dh_makeshlibs ++ dh_installdeb -a ++ dh_shlibdeps -a ++ dh_gencontrol -a ++ dh_md5sums -a ++ dh_builddeb -a ++ ++binary: binary-indep binary-arch ++.PHONY: build clean binary-indep binary-arch binary install +diff -urdpN ../aMule-2.1.3-orig/debian/watch ./debian/watch +--- ../aMule-2.1.3-orig/debian/watch 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/watch 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,7 @@ ++# Example watch control file for uscan ++# Rename this file to "watch" and then you can run the "uscan" command ++# to check for upstream updates and more. ++# Site Directory Pattern Version Script ++version=2 ++#http://amule.hirnriss.net /cvs/aMule-cvs-(.*)\.tar\.bz2 debian uupdate ++http://amule.hirnriss.net/ cvs/aMule-cvs-([0-9]*)\.tar\.bz2 +diff -urdpN ../aMule-2.1.3-orig/debian/wrapper/wrapper ./debian/wrapper/wrapper +--- ../aMule-2.1.3-orig/debian/wrapper/wrapper 1970-01-01 01:00:00.000000000 +0100 ++++ ./debian/wrapper/wrapper 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,64 @@ ++#!/usr/bin/perl ++ ++ ++my $ps_result; ++ ++ ++sub which_program ++{ ++ open(PS_PROC,"ps x |") or die "can't exec ps ! suxor system !\n"; ++ ++ while() ++ { ++ if(/amule/) ++ { ++ close(PS_PROC); ++ return "amule"; ++ } ++ elsif(/xmule/) ++ { ++ close(PS_PROC); ++ return "xmule"; ++ } ++ } ++ return "nobody"; ++} ++ ++sub main ++{ ++ my $program; ++ my $url; ++ ++ $url=@ARGV[0]; ++ $program=which_program(); ++ print "url : $url \n"; ++ if($program=~/nobody/){ ++ exit(-1); ++ } ++ elsif($program=~/amule/) ++ { ++ if(-x "/usr/bin/ed2k.amule") ++ { ++ system("/usr/bin/ed2k.amule '".$url."'"); ++ print "add an amule ed2k link\n"; ++ } ++ else ++ { ++ print "oOops ! In cant exec /usr/bin/ed2k.amule"; ++ } ++ } ++ elsif($program=~/xmule/) ++ { ++ if (-x "/usr/bin/ed2k.xmule") ++ { ++ system("/usr/bin/ed2k.xmule '".$url."'"); ++ print "add an xmule ed2k link\n"; ++ } ++ else ++ { ++ print "OoOps ! couldn't find /usr/bin/ed2k binary !\n" ++ } ++ } ++} ++ ++&main(); +diff -urdpN ../aMule-2.1.3-orig/po/it.po ./po/it.po +--- ../aMule-2.1.3-orig/po/it.po 2006-01-01 06:17:25.000000000 +0100 ++++ ./po/it.po 2006-06-12 18:30:05.000000000 +0200 +@@ -31,11 +31,11 @@ msgstr "Kademlia: chiave di ricerca trop + #: src/kademlia/routing/RoutingZone.cpp:159 + #, c-format + msgid "Read %u Kad contacts" +-msgstr "Letti %u contatti Kad" ++msgstr "Letti %u contatti KAdu" + + #: src/kademlia/routing/RoutingZone.cpp:162 + msgid "Error while reading Kad contacts - 0 entries" +-msgstr "Errore nella lettura dei contatti Kad - 0 contatti" ++msgstr "Errore nella lettura dei contatti KAdu - 0 contatti" + + #: src/utils/wxCas/src/wxcasframe.cpp:97 + #: src/utils/aLinkCreator/src/alcframe.cpp:85 +@@ -2144,7 +2144,7 @@ msgstr "Non connesso" + #: src/TextClient.cpp:481 src/muuli_wdr.cpp:238 src/muuli_wdr.cpp:4028 + #: src/DataToText.cpp:131 + msgid "Kad" +-msgstr "Kad" ++msgstr "KAdu" + + #: src/TextClient.cpp:485 + msgid "firewalled" +@@ -2270,7 +2270,7 @@ msgstr "Connetti solo alla rete ed2k." + + #: src/TextClient.cpp:601 + msgid "Connect to Kad only." +-msgstr "Connetti solo alla rete Kad." ++msgstr "Connetti solo alla rete KAdu." + + #: src/TextClient.cpp:603 + msgid "Disconnect from the network." +@@ -2286,7 +2286,7 @@ msgstr "Disconnetti solo dalla rete ed2k + + #: src/TextClient.cpp:606 + msgid "Disconnect from Kad only." +-msgstr "Disconnetti solo dalla rete Kad." ++msgstr "Disconnetti solo dalla rete KAdu." + + #: src/TextClient.cpp:608 + msgid "Adds an ed2k link to core." +@@ -2867,15 +2867,15 @@ msgstr "Disconnesso dalla rete ed2k" + + #: src/amule.cpp:1901 + msgid "Connected to Kad (ok)" +-msgstr "Connesso alla rete Kad (ok)" ++msgstr "Connesso alla rete KAdu (ok)" + + #: src/amule.cpp:1903 + msgid "Connected to Kad (firewalled)" +-msgstr "Connesso alla rete Kad (firewalled)" ++msgstr "Connesso alla rete KAdu (firewalled)" + + #: src/amule.cpp:1906 + msgid "Disconnected from Kad" +-msgstr "Disconnesso dalla rete Kad" ++msgstr "Disconnesso dalla rete KAdu" + + #: src/AICHSyncThread.cpp:102 + msgid "AICH Thread: Signaling for thread to terminate." +@@ -3004,7 +3004,7 @@ msgstr "Connetti" + + #: src/amuleDlg.cpp:793 src/muuli_wdr.cpp:4088 + msgid "Connect to any server and/or Kad" +-msgstr "Connetti a qualsiasi server e/o a Kad" ++msgstr "Connetti a qualsiasi server e/o a KAdu" + + #: src/amuleDlg.cpp:803 + msgid "WARNING: You have recieved Low-ID!" +@@ -4121,7 +4121,7 @@ msgstr "Porta UDP avanzata del client:" + + #: src/muuli_wdr.cpp:1868 + msgid "This UDP port is used for extended Ed2K requests and Kad network" +-msgstr "Questa porta UDP รจ usata per richieste ed2k avanzate e per la rete Kad" ++msgstr "Questa porta UDP รจ usata per richieste ed2k avanzate e per la rete KAdu" + + #: src/muuli_wdr.cpp:1871 + msgid "disable" +@@ -4406,15 +4406,15 @@ msgstr "Barra della velocitร  nell'icona + + #: src/muuli_wdr.cpp:2319 + msgid "Kad-nodes current" +-msgstr "Nodi Kad attuali" ++msgstr "Nodi KAdu attuali" + + #: src/muuli_wdr.cpp:2320 + msgid "Kad-nodes running" +-msgstr "Nodi Kad attivi" ++msgstr "Nodi KAdu attivi" + + #: src/muuli_wdr.cpp:2321 + msgid "Kad-nodes session" +-msgstr "Nodi Kad nella sessione" ++msgstr "Nodi KAdu nella sessione" + + #: src/muuli_wdr.cpp:2326 src/muuli_wdr.cpp:2969 + msgid "Select" +@@ -4804,7 +4804,7 @@ msgstr "Informazioni ed2k" + + #: src/muuli_wdr.cpp:3189 src/muuli_wdr.cpp:3990 + msgid "Kad Info" +-msgstr "Informazioni Kad" ++msgstr "Informazioni KAdu" + + #: src/muuli_wdr.cpp:3211 + msgid "" +@@ -4873,7 +4873,7 @@ msgstr "Bootstrap da\n" + + #: src/muuli_wdr.cpp:3381 + msgid "Disconnect Kad" +-msgstr "Disconnetti rete Kad" ++msgstr "Disconnetti rete KAdu" + + #: src/muuli_wdr.cpp:3434 src/PrefsUnifiedDlg.cpp:171 + msgid "Security" +@@ -5309,7 +5309,7 @@ msgstr "Overhead server (pacchetti): %s" + #: src/Statistics.cpp:634 src/Statistics.cpp:653 + #, c-format + msgid "Kad Overhead (Packets): %s" +-msgstr "Overhead Kad (pacchetti): %s" ++msgstr "Overhead KAdu (pacchetti): %s" + + #: src/Statistics.cpp:636 + #, c-format +@@ -5626,7 +5626,7 @@ msgstr "Non ha senso usare la ricerca We + + #: src/ExternalConn.cpp:798 + msgid "Kad is disabled in preferences." +-msgstr "La rete Kad รจ disabilitata nelle Preferenze." ++msgstr "La rete KAdu รจ disabilitata nelle Preferenze." + + #: src/ExternalConn.cpp:956 + msgid "No points for graph." +@@ -5675,11 +5675,11 @@ msgstr "Connessione alla rete ed2k..." + + #: src/ExternalConn.cpp:1307 + msgid "Already connected to Kad." +-msgstr "Giร  connesso alla rete Kad." ++msgstr "Giร  connesso alla rete KAdu." + + #: src/ExternalConn.cpp:1310 + msgid "Connecting to Kad..." +-msgstr "Connessione alla rete Kad..." ++msgstr "Connessione alla rete KAdu..." + + #: src/ExternalConn.cpp:1315 + msgid "All networks are disabled." +@@ -5691,7 +5691,7 @@ msgstr "Disconnesso dalla rete ed2k." + + #: src/ExternalConn.cpp:1327 + msgid "Disconnected from Kad." +-msgstr "Disconnesso dalla rete Kad." ++msgstr "Disconnesso dalla rete KAdu." + + #: src/ExternalConn.cpp:1335 + #, c-format +@@ -5947,7 +5947,7 @@ msgstr "Sospensione upload del file: %s" + msgid "" + "Impossible to make Kad search (invalid chars? keywords too short? not " + "connected?)" +-msgstr "Impossibile effetturare una ricerca Kad (caratteri non validi? chiave di ricerca troppo corta? mancanza di connessione?)" ++msgstr "Impossibile effetturare una ricerca KAdu (caratteri non validi? chiave di ricerca troppo corta? mancanza di connessione?)" + + #: src/SearchDlg.cpp:523 + msgid "You are not connected to a server!" +@@ -6044,11 +6044,11 @@ msgstr "Troppe connessioni" + + #: src/DataToText.cpp:72 + msgid "Connecting via Kad" +-msgstr "Connessione via Kad" ++msgstr "Connessione via KAdu" + + #: src/DataToText.cpp:73 + msgid "Too many Kad connections" +-msgstr "Troppe connessioni Kad" ++msgstr "Troppe connessioni KAdu" + + #: src/DataToText.cpp:75 + msgid "Connection Error" +diff -urdpN ../aMule-2.1.3-orig/src/AdunanzA.cpp ./src/AdunanzA.cpp +--- ../aMule-2.1.3-orig/src/AdunanzA.cpp 1970-01-01 01:00:00.000000000 +0100 ++++ ./src/AdunanzA.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,413 @@ ++#ifdef _DEBUG ++#include "DebugHelpers.h" ++#endif ++#include "amule.h" ++#include "updownclient.h" ++#include "Friend.h" ++#include "ClientList.h" ++#include "OtherFunctions.h" ++#include "PartFile.h" ++#include "ListenSocket.h" ++#include "Friend.h" ++#include ++#include "Packet.h" ++#include "OPCodes.h" ++#include "SafeFile.h" ++#include "Preferences.h" ++#include "Statistics.h" ++#include "ClientCredits.h" ++#include "IPFilter.h" ++#include "UploadQueue.h" ++#include "DownloadQueue.h" ++#include "SearchList.h" ++#include "SharedFileList.h" ++#ifdef __USE_KAD__ ++#include "Kademlia/Kademlia/Kademlia.h" ++#include "Kademlia/Net/KademliaUDPListener.h" ++#endif ++#if !defined(_CONSOLE) && !defined(AMULE_DAEMON) ++#include "ServerWnd.h" ++#include "TransferWnd.h" ++#include "ChatWnd.h" ++#endif ++ ++#include ++ ++#include "AdunanzA.h" ++#include "RemoteSettings.h" ++ ++// Inclusi per il parsing sul file per Updater ++#include ++#include ++#define thePrefs (*(theApp.glob_prefs)) ++// Funzione molto semplice che ritorna un ++// valore booleano vero se l'ip passatogli in input ++// appartiene alla rete FastWeb italiana. ++/* ++MAN Milano........................ 1.0.0.0/8 ++MAN Milano hinterland Nord........ 2.0.0.0/8 ++MAN Genova........................ 5.0.0.0/8 ++MAN Veneto........................ 11.0.0.0/8 ++MAN Milano hinterland Sud......... 14.0.0.0/8 ++MAN Ancona........................ 21.0.0.0/8 ++MAN Grosseto...................... 22.0.0.0/8 ++MAN Roma.......................... 23.0.0.0/8 ++MAN Toscana....................... 27.0.0.0/8 ++MAN Triveneto..................... 29.0.0.0/8 ++MAN Bari.......................... 31.0.0.0/8 ++MAN Sicilia....................... 36.0.0.0/8 ++MAN Bologna....................... 37.0.0.0/8 ++MAN Napoli........................ 39.0.0.0/8 ++MAN Torino........................ 41.0.0.0/8 ++MAN Reggio Emilia................. 42.0.0.0/8 ++ ++Routers & OAM..................... 10.0.0.0/8 ++Organization, Administration & Management (ad. es.: Server interni ntp, voip, billing etc. etc.) ++*/ ++ ++bool AduIsFastWebLANIP(uint32 ip) ++{ ++ switch (ip & 0xff) { ++ case MAN_ROMA: ++ case MAN_MILANO: ++ case MAN_MILANO_H_NORD: ++ case MAN_MILANO_H_SUD: ++ case MAN_GENOVA: ++ case MAN_TRIVENETO: ++ case MAN_BARI: ++ case MAN_BOLOGNA: ++ case MAN_NAPOLI: ++ case MAN_TORINO: ++ case MAN_REGGIO_EMILIA: ++ case MAN_TOSCANA: ++ case MAN_VENETO: ++ case MAN_GROSSETO: ++ case MAN_SICILIA: ++ case MAN_ANCONA: ++ case FASTWEB_ROUTERS: ++ return true; ++ default: ++ return false; ++ } ++} ++ ++void CUpDownClient::SetClientFWCity(void) ++{ ++ switch (m_dwUserIP & 0x000000ff) { ++ case MAN_ROMA: ++ m_FWCity = wxT("RM"); ++ break; ++ case MAN_MILANO: ++ m_FWCity = wxT("MI"); ++ break; ++ case MAN_MILANO_H_NORD: ++ m_FWCity = wxT("MI H. Nord"); ++ break; ++ case MAN_MILANO_H_SUD: ++ m_FWCity = wxT("MI H. Sud"); ++ break; ++ case MAN_GENOVA: ++ m_FWCity = wxT("GE"); ++ break; ++ case MAN_TRIVENETO: ++ m_FWCity = wxT("Triveneto"); ++ break; ++ case MAN_BARI: ++ m_FWCity = wxT("BA"); ++ break; ++ case MAN_BOLOGNA: ++ m_FWCity = wxT("BO"); ++ break; ++ case MAN_NAPOLI: ++ m_FWCity = wxT("NA"); ++ break; ++ case MAN_TORINO: ++ m_FWCity = wxT("TO"); ++ break; ++ case MAN_REGGIO_EMILIA: ++ m_FWCity = wxT("RE"); ++ break; ++ case MAN_TOSCANA: ++ m_FWCity = wxT("Toscana"); ++ break; ++ case MAN_VENETO: ++ m_FWCity = wxT("Veneto"); ++ break; ++ case MAN_GROSSETO: ++ m_FWCity = wxT("GR"); ++ break; ++ case MAN_SICILIA: ++ m_FWCity = wxT("Sicilia"); ++ break; ++ case MAN_ANCONA: ++ m_FWCity = wxT("AN"); ++ break; ++ case FASTWEB_ROUTERS: ++ m_FWCity = wxT("OAM"); ++ break; ++ default: ++ m_FWCity = wxT(""); ++ break; ++ } ++} ++ ++ ++ ++bool CUpDownClient::IsAduFiber() const ++{ ++ return AduIsFiber(m_dwUserIP); ++} ++ ++bool AduIsFiber (uint32 ip) { ++ bool is128 = (((ip >> 15) & 1) == (uint32)0); ++ ++ return AduIsFastWebLANIP(ip) & is128; ++} ++ ++bool AduIsFastWebIP(uint32 ip) ++{ ++ if (AduIsFastWebLANIP(ip)) ++ return true; ++ ++ // match rapido: (ip & mask) == netid ++ ++ // netid 213.140.0.0/19 - netid (hex) 0x00008cd5 / mask 0x00e0ffff ++ if ((ip & 0x00e0ffff) == 0x00008cd5 || ++ // netid 213.156.32.0/19 - netid (hex) 0x00209cd5 / mask 0x00e0ffff ++ (ip & 0x00e0ffff) == 0x00209cd5 || ++ // netid 62.101.64.0/18 - netid (hex) 0x0040653e / mask 0x00c0ffff ++ (ip & 0x00c0ffff) == 0x0040653e || ++ // netid 81.208.0.0/17 - netid (hex) 0x0000d051 / mask 0x0080ffff ++ (ip & 0x0080ffff) == 0x0000d051 || ++ // netid 83.103.0.0/17 - netid (hex) 0x00006753 / mask 0x0080ffff ++ (ip & 0x0080ffff) == 0x00006753 || ++ // netid 85.18.0.0/16 - netid (hex) 0x00001255 / mask 0x0000ffff ++ (ip & 0x0000ffff) == 0x00001255 || ++ // netid 89.96.0.0/15 - netid (hex) 0x00006059 / mask 0x0000f7ff ++ (ip & 0x0000f7ff) == 0x00006059) return true; ++ ++ ++ return false; ++} ++ ++#include "Logger.h" ++#include ++#include "NetworkFunctions.h" ++ ++bool AduIsValidKaduAddress( uint32 host ) ++{ ++ host = wxUINT32_SWAP_ALWAYS( host ); ++ //AddDebugLogLineM(false, logClientKadUDP, CFormat(wxT("Checking %s for kADU validity")) % Uint32toStringIP(host)); ++ ++ // TODO: Add Banlist support here ++ ++ return AduIsFastWebIP( host ); ++} ++ ++// Metodo dell'oggetto CUpDownClient ++// Vedere il file ++// Questo metodo ritorna ++// ADUNANZA_ICON_NONE Se il client non e' adunanza ++// ADUNANZA_ICON_FW Se il client non e' adunanza ma e' sulla rete FastWeb Italia ++// ADUNANZA_ICON_ADU Se il client e' AdunanzA ed e' sulla rete FastWeb Italia ++uint32 CUpDownClient::GetClientAduType(void) const ++{ ++ if (AduIsFastWebIP(m_dwUserIP)) ++ { ++ if (GetIsAduSoftware()) ++ return ADUNANZA_ICON_ADU; ++ else ++ return ADUNANZA_ICON_FW; ++ } ++ return ADUNANZA_ICON_NONE; ++} ++ ++bool CUpDownClient::IsAduClient() const ++{ ++ return GetClientAduType() == ADUNANZA_ICON_ADU; ++} ++ ++float calcolaStima(float avail, uint32& firstPublish, uint32 publishInterval, uint32 pubkRTK, bool sameIP, uint32 now) { ++ int kRTK = theApp.rm->kadRepublishTimeK; ++ ++ // Using this increment style, we can guess also if clients use different publish rates. ++ float inc = (float)pubkRTK / kRTK; ++ ++ // Only old clients, with republishtimek == 24hrs don't publish their republishtimek. ++ if (inc == 0.f) ++ inc = HR2S(24) / kRTK; ++ ++ if (publishInterval > kRTK) ++ avail=0.f,firstPublish=now; ++ ++ while ((now-firstPublish) > kRTK && avail > 2.f) ++ avail--,firstPublish+=(uint32)(kRTK/avail); ++ ++ // Some client seem to send duplicate publish to already contacted clients. ++ // In 90% of the times we avoid this here. ++ if (!sameIP) ++ avail+=inc; ++ ++ return avail; ++} ++ ++float normalizzaStima( float avail, uint32 from, uint32 to ) { ++ // Parte necessaria per il debug ++ // calcolo il coefficiente di normalizzazione ++ int kRTK = theApp.rm->kadRepublishTimeK; ++ ++ float norm_factor = 1.f; ++ ++ if (avail > theApp.rm->kadFreshGuess_NoNorm) { ++ norm_factor = (to - from)/kRTK; ++ ++ if ( norm_factor > 1-1/avail ) ++ norm_factor = 1.f; ++ ++ norm_factor = ( norm_factor < theApp.rm->kadFreshGuess_Tol ? theApp.rm->kadFreshGuess_Tol : norm_factor ); ++ ++ // We have a good number of publishes, but not high. ++ // Low normalization is still suggested. ++ if ( avail < theApp.rm->kadFreshGuess_LowNorm && norm_factor > avail / theApp.rm->kadFreshGuess_LowNorm ) ++ norm_factor /= powf( avail/theApp.rm->kadFreshGuess_LowNorm, 0.5f ); ++ } ++ ++ if ( avail > 2.f ) ++ avail /= powf( norm_factor, theApp.rm->kadFreshGuess_Weight ); ++ ++ return avail; ++} ++ ++#include "Statistics.h" ++ ++ ++// Decido come selezionare un client in base alla ++// banda realmente data in upload ++uint32 AduGetTypeBand() ++{ ++ uint64 sessionSentBytes = theApp.statistics->GetSessionSentBytes(); ++ uint64 sessionRecvBytes = theApp.statistics->GetSessionReceivedBytes(); ++ ++ uint64 aduSessionSentBytes = theApp.statistics->GetAduSessionSentBytes(); ++ uint64 aduSessionRecvBytes = theApp.statistics->GetAduSessionReceivedBytes(); ++ ++ uint64 sentToExternal = sessionSentBytes - aduSessionSentBytes; ++ uint64 recvFromExternal = sessionRecvBytes - aduSessionRecvBytes; ++ ++ if ( sentToExternal < recvFromExternal ) ++ return ADUNANZA_EXTERN; ++ else ++ return ADUNANZA_FASTWEB; ++} ++ ++// lista di servers solo interna ++typedef struct _servIP_Port ++{ ++ uint32 ip; ++ uint16 port; ++} servIP_Port, *LPservIP_Port; ++ ++static LPservIP_Port _aduServers = NULL; ++static int _aduServersNum = 0; ++ ++ ++// Ci dice se connesso ad un server adunanza o meno ++bool IsAduServer(uint32 CurServer) { ++ ++ if (_aduServers && _aduServersNum) ++ { ++ for(int i = 0; i < _aduServersNum; i++) ++ { ++ if (CurServer == _aduServers[i].ip) return true; ++ } ++ } ++ return false; ++} ++ ++#ifndef CLIENT_GUI ++int AduQ(void) { ++ return theApp.uploadqueue->GetAdunanzAUserCount(); ++} ++ ++bool AduDebt(void) { ++ uint64 sentToExternal = theApp.statistics->GetSessionSentBytes() - theApp.statistics->GetAduSessionSentBytes(); ++ uint64 recvFromExternal = theApp.statistics->GetSessionReceivedBytes() - theApp.statistics->GetAduSessionReceivedBytes(); ++ ++ if ( sentToExternal < recvFromExternal ) ++ return true; ++ else ++ return false; ++} ++int SetSlots(void) { ++ float maxUp = (float)thePrefs.GetMaxUpload(); ++ float kBpsUpPerClient = (float)thePrefs.GetSlotAllocation(); ++ float kBpsUp = (float)theStats::GetUploadRate() / 1024.0f; ++ int slots; ++ ++ ++ if (thePrefs.GetMaxUpload() == UNLIMITED) ++ slots = (int)( kBpsUp / kBpsUpPerClient + 2 ); ++ else ++ slots = (int)floor( maxUp / kBpsUpPerClient + 0.5f ); ++ ++ return std::max(MIN_UP_CLIENTS_ALLOWED,slots); ++} ++ ++int TotSlots(void) { ++ if (AduDebt()) ++ return (int)(SetSlots() * 1.5f); ++ else ++ return SetSlots(); ++} ++ ++int ExtSlots(void) { ++ if (AduDebt()) ++ return (int)(TotSlots() * 0.5f); ++ else ++ return TotSlots(); ++} ++ ++uint32 AduNextClient(int fix) { ++ int totslots = TotSlots(), totcount = theApp.uploadqueue->GetUploadCount() - fix; ++ ++ if (totcount < totslots) { ++ if (!AduQ()) ++ return ADUNANZA_ANY; ++ ++ int aducount = theApp.uploadqueue->GetAduUploadCount(); ++ int extcount = totcount - aducount; ++ ++ if (AduDebt()) { ++ int extslots = ExtSlots() - fix; ++ int aduslots = totslots - extslots; ++ ++ if (extslots > extcount && aduslots > aducount) ++ return ADUNANZA_ANY; ++ else if (extslots > extcount) ++ return ADUNANZA_EXTERN; ++ else if (aduslots > aducount) ++ return ADUNANZA_FASTWEB; ++ else ++ return ADUNANZA_NONE; // non dovrebbe poter succedere ++ ++ } else { ++ return ADUNANZA_FASTWEB; ++ } ++ } else ++ return ADUNANZA_NONE; ++} ++ ++uint32 AduGetMaxUploadSlots(void) ++{ ++ return TotSlots(); ++} ++ ++bool AduMaxTrans(void) { ++ uint32 now = (uint32)time(NULL); ++ if (AduQ() && AduNextClient(1) == ADUNANZA_FASTWEB && now > theApp.uploadqueue->lastmax + 45 ) { ++ theApp.uploadqueue->lastmax = now; ++ return true; ++ } else ++ return false; ++} ++#endif +diff -urdpN ../aMule-2.1.3-orig/src/AdunanzA.h ./src/AdunanzA.h +--- ../aMule-2.1.3-orig/src/AdunanzA.h 1970-01-01 01:00:00.000000000 +0100 ++++ ./src/AdunanzA.h 2006-06-12 18:30:05.000000000 +0200 +@@ -0,0 +1,136 @@ ++#ifndef _ADUNANZA_H_ ++#define _ADUNANZA_H_ ++ ++#define V(M, m) _T(#M) _T(".") _T(#m) ++#define _V(M, m) V(M,m) ++ ++#define B(n, l) _T(#n) _T(l) ++#define _B(n, l) B(n, l) ++ ++#define ADU_VER_MAJ 3 ++#define ADU_VER_MIN 11 ++ ++#define ADU_VER_RL _V(ADU_VER_MAJ, ADU_VER_MIN) ++ ++#define ADU_BETA_MAJ 0 ++#define ADU_BETA_MIN "" ++ ++#if ADU_BETA_MAJ > 0 ++ #define ADU_VER ADU_VER_RL _T("b") _B(ADU_BETA_MAJ, ADU_BETA_MIN) ++#else ++ #define ADU_VER ADU_VER_RL _T("b") ++#endif ++ ++#define ADU_MOD_NAME _T("AdunanzA") ++#define ADU_MOD ADU_MOD_NAME _T(" ") ADU_VER ++ ++#include "OPCodes.h" ++ ++#ifdef HAVE_CONFIG_H ++ #include "config.h" // VERSION ++#endif ++ ++#ifdef __CVS__ ++ #define MOD_VERSION_LONG ADU_MOD wxT(" - aMule CVS") ++#else ++ #define MOD_VERSION_LONG ADU_MOD wxT(" - aMule ") wxT(VERSION) ++#endif ++ ++// Parametri e definzioni esportate dal file AdunanzA.cpp ++#define ADUNANZA_ANY 0 ++#define ADUNANZA_EXTERN 1 ++#define ADUNANZA_FASTWEB 2 ++#define ADUNANZA_NONE 0xff ++ ++// Definizioni per icone e per riconoscimento client ++#define ADUNANZA_ICON_NONE 0 ++#define ADUNANZA_ICON_FW 1 ++#define ADUNANZA_ICON_ADU 2 ++ ++// Percentuale minima per assegnare uno slot ad un Adu ++//#define ADUNANZA_MIN_ADU 5 ++// Definizione default del numero di slots ++#define ADUNANZA_DEF_UPSL 8 ++// Definizione default banda Adu ++//#define ADUNANZA_BAND_PERC 85 ++// Definizione connessione automatica ++#define ADUNANZA_AUTO_CONN 1 ++// Definizione forzature upload/dl ext 1:1 - Disabilitato di default ++#define ADUNANZA_AUTO_EXT11 1 ++ ++#define ADU_VER_CODE(M,m,o) (((M) << 12) + ((m) << 7) + (o)) ++#define ADU_GET_MAJ(v) ((v) >> 12) ++#define ADU_GET_MIN(v) (((v) >> 7) & 0x1f) ++#define ADU_GET_B(v) ((v) & 0x7f) ++ ++// ADU URLS ++#define ADURM_URL "http://update.adunanza.net/3-10/adu_remote.conf" ++//#define ADU_SRV_URL "http://ocbmaurice.dyns.net/pl/slist.pl?download/server-best.met" ++#define ADU_SRV_URL "http://corpo.free.fr/server.met" ++#define ADU_NODES_DAT "http://update.adunanza.net/adu_nodes.dat" ++ ++/* ++MAN Milano........................ 1.0.0.0/8 ++MAN Milano hinterland Nord........ 2.0.0.0/8 ++MAN Genova........................ 5.0.0.0/8 ++MAN Veneto........................ 11.0.0.0/8 ++MAN Milano hinterland Sud......... 14.0.0.0/8 ++MAN Ancona........................ 21.0.0.0/8 ++MAN Grosseto...................... 22.0.0.0/8 ++MAN Roma.......................... 23.0.0.0/8 ++MAN Toscana....................... 27.0.0.0/8 ++MAN Triveneto..................... 29.0.0.0/8 ++MAN Bari.......................... 31.0.0.0/8 ++MAN Sicilia....................... 36.0.0.0/8 ++MAN Bologna....................... 37.0.0.0/8 ++MAN Napoli........................ 39.0.0.0/8 ++MAN Torino........................ 41.0.0.0/8 ++MAN Reggio Emilia................. 42.0.0.0/8 ++ ++Routers & OAM..................... 10.0.0.0/8 ++Organization, Administration & Management (ad. es.: Server interni ntp, voip, billing etc. etc.) ++*/ ++ ++// Definizione zone italia FW ++#define MAN_MILANO 1 ++#define MAN_MILANO_H_NORD 2 ++#define MAN_GENOVA 5 ++#define FASTWEB_ROUTERS 10 ++#define MAN_VENETO 11 ++#define MAN_MILANO_H_SUD 14 ++#define MAN_ANCONA 21 ++#define MAN_GROSSETO 22 ++#define MAN_ROMA 23 ++#define MAN_TOSCANA 27 ++#define MAN_TRIVENETO 29 ++#define MAN_BARI 31 ++#define MAN_SICILIA 36 ++#define MAN_BOLOGNA 37 ++#define MAN_NAPOLI 39 ++#define MAN_TORINO 41 ++#define MAN_REGGIO_EMILIA 42 ++ ++// Funzioni esportate ++extern bool AduIsFastWebIP(uint32 ip); ++extern bool AduIsFastWebLANIP(uint32 ip); ++extern bool AduIsFiber(uint32 ip); ++extern uint32 AduGetTypeBand(); ++extern bool IsAduServer(uint32 CurServer); ++extern uint32 AduGetMaxUploadSlots(void); ++//extern float AduGetPercBandwidth(void); ++extern void AduStartConnection(void); ++extern void* AduGetNextAduServer(int value, int& num); ++extern void AduUpdate(char *url); ++// KAdu ++extern bool AduIsValidKaduAddress( uint32 host ); ++ ++extern float calcolaStima( float avail, uint32& firstPublish, uint32 publishInterval, uint32 pubkRTK, bool sameIP, uint32 now ); ++extern float normalizzaStima( float avail, uint32 from, uint32 to ); ++ ++#ifndef CLIENT_GUI ++uint32 AduNextClient(int fix = 0); ++bool AduMaxTrans(void); ++#endif ++ ++#endif ++ +diff -urdpN ../aMule-2.1.3-orig/src/amule.cpp ./src/amule.cpp +--- ../aMule-2.1.3-orig/src/amule.cpp 2006-04-21 05:13:51.000000000 +0200 ++++ ./src/amule.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -91,6 +91,7 @@ + #include "kademlia/kademlia/Kademlia.h" + #include "kademlia/kademlia/Prefs.h" + #include "Timer.h" ++#include "RemoteSettings.h" + + #ifndef AMULE_DAEMON + #ifdef __WXMAC__ +@@ -212,6 +213,8 @@ int CamuleApp::OnExit() + printf("Now, exiting main app...\n"); + } + ++ delete rm; ++ + // From wxWidgets docs, wxConfigBase: + // ... + // Note that you must delete this object (usually in wxApp::OnExit) +@@ -221,7 +224,7 @@ int CamuleApp::OnExit() + // above: you may forget about calling Set(). When Get() is called and + // there is no current object, it will create one using Create() function. + // To disable this behaviour DontCreateOnDemand() is provided. +- delete wxConfigBase::Set((wxConfigBase *)NULL); ++ delete acfg; + + // Save credits + clientcredits->SaveList(); +@@ -387,8 +390,9 @@ std::pair CheckMuleDirec + // + const wxString CamuleApp::FullMuleVersion = GetFullMuleVersion(); + const wxString CamuleApp::OSDescription = wxGetOsDescription(); +-char *CamuleApp::strFullMuleVersion = new char[GetFullMuleVersion().Length()+1]; +-char *CamuleApp::strOSDescription = new char[wxGetOsDescription().Length()+1]; ++ ++char *CamuleApp::strFullMuleVersion = new char[256]; ++char *CamuleApp::strOSDescription = new char[256]; + + bool CamuleApp::OnInit() + { +@@ -426,6 +430,7 @@ bool CamuleApp::OnInit() + OSType = wxT("Unknown"); + } + ++ + // Parse cmdline arguments. + wxCmdLineParser cmdline(AMULE_APP_BASE::argc, AMULE_APP_BASE::argv); + +@@ -559,11 +564,13 @@ bool CamuleApp::OnInit() + } + } + ++ rm = new CRemoteSettings(); ++ + // This creates the CFG file we shall use +- wxConfigBase* cfg = new wxFileConfig( wxEmptyString, wxEmptyString, ConfigDir + wxT("amule.conf") ); ++ acfg = new wxFileConfig( wxEmptyString, wxEmptyString, ConfigDir + wxT("amule.conf") ); + + // Set the config object as the global cfg file +- wxConfig::Set( cfg ); ++ //wxConfig::Set( acfg ); + + // Make a backup of the log file + wxString logfileName(ConfigDir + wxT("logfile")); +@@ -585,7 +592,7 @@ bool CamuleApp::OnInit() + + // Load Preferences + CPreferences::BuildItemList(ConfigDir); +- CPreferences::LoadAllItems( wxConfigBase::Get() ); ++ CPreferences::LoadAllItems( acfg ); + glob_prefs = new CPreferences(); + + std::pair checkResult; +@@ -617,8 +624,9 @@ bool CamuleApp::OnInit() + + // Display notification on new version or first run + wxTextFile vfile( ConfigDir + wxT("lastversion") ); +- wxString newMule(wxT(VERSION)); ++ wxString newMule(ADU_VER); + ++#if 0 + // Test if there's any new version + if (thePrefs::CheckNewVersion()) { + // We use the thread base because I don't want a dialog to pop up. +@@ -628,6 +636,7 @@ bool CamuleApp::OnInit() + version_check->Create(); + version_check->Run(); + } ++#endif + + if ( !wxFileExists( vfile.GetName() ) ) { + vfile.Create(); +@@ -1203,6 +1212,7 @@ void CamuleApp::Localize_mule() + // Is called when the user runs a new version of aMule + void CamuleApp::Trigger_New_version(wxString new_version) + { ++#if 0 + wxString info = wxT(" --- ") + CFormat(_("This is the first time you run aMule %s")) % new_version + wxT(" ---\n\n"); + if (new_version == wxT("CVS")) { + info += _("This version is a testing version, updated daily, and\n"); +@@ -1216,10 +1226,27 @@ void CamuleApp::Trigger_New_version(wxSt + info += _("at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n"); + info += wxT("\n"); + info += _("Feel free to report any bugs to http://forum.amule.org"); ++#endif + +- ShowAlert(info, _("Info"), wxCENTRE | wxOK | wxICON_ERROR); +-} ++ wxString info = wxT(" --- ") + CFormat(_("Questa รจ la prima volta che lanci %s")) % ADU_MOD + wxT(" ---\n\n"); ++ ++ info += wxT("Per maggiori informazioni fate riferimento\n"); ++ info += wxT("al nostro sito www.adunanza.net, o al canale\n"); ++ info += wxT("#La_Stalla sul server IRC chat.adunanza.net.\n"); ++ ++ info += wxT("\n"); ++ ++ info += wxT("Riportate pure qualsiasi problema o consiglio\n"); ++ info += wxT("sul nostro forum.\n"); ++ ++ info += wxT("\n"); ++ ++ info += CFormat(wxT("Basato su aMule %s.")) % wxT(VERSION); + ++ ShowAlert(info, _("Informazioni"), wxCENTRE | wxOK | wxICON_ERROR); ++ ++ rm->UpdateURL = wxT(ADURM_URL); ++} + + void CamuleApp::SetOSFiles(const wxString new_path) + { +@@ -1314,6 +1341,8 @@ void CamuleApp::OnCoreTimer(CMuleInterna + static uint64 msPrev1, msPrev5, msPrevSave, msPrevHist, msPrevOS, msPrevKnownMet; + uint64 msCur = theStats::GetUptimeMillis(); + ++ static uint64 msAduConf = 0; ++ + if (!IsRunning()) { + return; + } +@@ -1388,15 +1417,15 @@ void CamuleApp::OnCoreTimer(CMuleInterna + wxString buffer; + + // Save total upload/download to preferences +- wxConfigBase* cfg = wxConfigBase::Get(); ++ //wxConfigBase* cfg = wxConfigBase::Get(); + buffer = CFormat(wxT("%llu")) % (theStats::GetSessionReceivedBytes() + thePrefs::GetTotalDownloaded()); +- cfg->Write(wxT("/Statistics/TotalDownloadedBytes"), buffer); ++ acfg->Write(wxT("/Statistics/TotalDownloadedBytes"), buffer); + + buffer = CFormat(wxT("%llu")) % (theStats::GetSessionSentBytes() + thePrefs::GetTotalUploaded()); +- cfg->Write(wxT("/Statistics/TotalUploadedBytes"), buffer); ++ acfg->Write(wxT("/Statistics/TotalUploadedBytes"), buffer); + + // Write changes to file +- cfg->Flush(); ++ acfg->Flush(); + + } + +@@ -1412,6 +1441,11 @@ void CamuleApp::OnCoreTimer(CMuleInterna + msPrevKnownMet = msCur; + } + ++ if (msCur > msAduConf) { ++ msAduConf = msCur + MIN2MS(1); //every minute ++ ++ rm->CheckUpdate(); ++ } + + // Recomended by lugdunummaster himself - from emule 0.30c + serverconnect->KeepConnectionAlive(); +@@ -1517,6 +1551,15 @@ void CamuleApp::ShutDown() + + thePrefs::Add2TotalDownloaded(theStats::GetSessionReceivedBytes()); + thePrefs::Add2TotalUploaded(theStats::GetSessionSentBytes()); ++ // Mod adu ++ thePrefs::Add2TotalAduUploaded(theStats::GetAduSessionSentBytes()); ++ thePrefs::Add2TotalAduFUploaded(theStats::GetAduFSessionSentBytes()); ++ thePrefs::Add2TotalAduDUploaded(theStats::GetAduDSessionSentBytes()); ++ thePrefs::Add2TotalAduDownloaded(theStats::GetAduSessionReceivedBytes()); ++ thePrefs::Add2TotalAduFDownloaded(theStats::GetAduFSessionReceivedBytes()); ++ thePrefs::Add2TotalAduDDownloaded(theStats::GetAduDSessionReceivedBytes()); ++ thePrefs::Add2TotalExtUploaded(theStats::GetExtSessionSentBytes()); ++ thePrefs::Add2TotalExtDownloaded(theStats::GetExtSessionReceivedBytes()); + + if (glob_prefs) { + glob_prefs->Save(); +@@ -1694,6 +1737,9 @@ void CamuleApp::OnFinishedHTTPDownload(C + AddLogLineM(true, _("Failed to download the nodes list.")); + } + break; ++ case HTTP_AdunanzaConf: ++ rm->FileDownloadedCallback(event.GetExtraLong()); ++ break; + } + } + +diff -urdpN ../aMule-2.1.3-orig/src/amuled.cpp ./src/amuled.cpp +--- ../aMule-2.1.3-orig/src/amuled.cpp 2006-03-18 08:40:11.000000000 +0100 ++++ ./src/amuled.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -486,26 +486,8 @@ int CamuleDaemonApp::InitGui(bool ,wxStr + return 0; + } + printf("amuled: forking to background - see you\n"); +- // +- // fork to background and detouch from controlling tty +- // while redirecting stdout to /dev/null +- // +- for(int i_fd = 0;i_fd < 3; i_fd++) { +- close(i_fd); +- } +- int fd = open("/dev/null",O_RDWR); +- dup(fd); +- dup(fd); +- int pid = fork(); +- +- wxASSERT(pid != -1); +- +- if ( pid ) { +- exit(0); +- } else { +- setsid(); +- } +- ++ int rc = daemon(0,0); ++ wxASSERT(rc != -1); + #endif + return 0; + } +diff -urdpN ../aMule-2.1.3-orig/src/amuleDlg.cpp ./src/amuleDlg.cpp +--- ../aMule-2.1.3-orig/src/amuleDlg.cpp 2006-03-23 12:37:26.000000000 +0100 ++++ ./src/amuleDlg.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -105,6 +105,7 @@ BEGIN_EVENT_TABLE(CamuleDlg, wxFrame) + EVT_TOOL(ID_BUTTONMESSAGES, CamuleDlg::OnToolBarButton) + EVT_TOOL(ID_BUTTONSTATISTICS, CamuleDlg::OnToolBarButton) + EVT_TOOL(ID_ABOUT, CamuleDlg::OnAboutButton) ++ EVT_TOOL(ID_IRC, CamuleDlg::OnIrcButton) + + EVT_TOOL(ID_BUTTONNEWPREFERENCES, CamuleDlg::OnPrefButton) + #ifndef CLIENT_GUI +@@ -405,30 +406,101 @@ void CamuleDlg::OnToolBarButton(wxComman + } + } + ++#include "wx/process.h" ++ ++void CamuleDlg::OnIrcButton(wxCommandEvent& WXUNUSED(ev)) ++{ ++ ++ wxString exe = wxT("/usr/bin/xchat"); ++ ++ if (!wxFileExists(exe)) { ++ wxString err = wxT("ATTENZIONE!\n"); ++ ++ err += wxT("Per utilizzare questa funzione รจ necessario\n"); ++ err += wxT("che xchat sia installato.\n\n"); ++ err += wxT("Installate xchat e controllate che l'eseguibile sia\n"); ++ err += CFormat(wxT("reperibile in %s\n")) % exe; ++ ++ theApp.ShowAlert(err, _("Error"), wxCENTRE | wxOK | wxICON_ERROR); ++ } ++ ++ wxString cfgdir = CFormat(wxT("%s.xchat2")) % GetConfigDir(); ++ ++ if (!wxDirExists(cfgdir)) { ++ wxMkdir(cfgdir, 0760); ++ ++ wxTextFile vfile( cfgdir + wxT("/xchat.conf") ); ++ ++ if (!vfile.Exists()) ++ vfile.Create(); ++ ++ if (vfile.IsOpened() || vfile.Open()) { ++ vfile.InsertLine( wxT("gui_slist_skip = 1"), 0 ); ++ vfile.InsertLine( wxT("irc_nick1 = Adu3_linux"), 0 ); ++ vfile.InsertLine( wxT("irc_nick2 = Adu3_linux_2"), 0 ); ++ vfile.InsertLine( wxT("irc_nick3 = Adu3_linux_3"), 0 ); ++ ++ vfile.Write(); ++ vfile.Close(); ++ } ++ ++ } ++ ++ wxString cmd = CFormat(wxT("%s --url=irc://chat.adunanza.net/La_Stalla --no-plugins --cfgdir=\"%s\"")) % exe % cfgdir; ++ ++ wxProcess *process = new wxProcess(); ++ long m_pidLast = wxExecute(cmd, wxEXEC_ASYNC, process); ++ if ( !m_pidLast ) { ++ AddDebugLogLineM(false, logGeneral, CFormat(wxT("Execution of '%s' failed.")) % cmd); ++ delete process; ++ } else ++ AddDebugLogLineM(false, logGeneral, CFormat(wxT("Process %ld (%s) launched.")) % m_pidLast % cmd ); ++ ++} + + void CamuleDlg::OnAboutButton(wxCommandEvent& WXUNUSED(ev)) + { + wxString msg = wxT(" "); ++ // Stefano Picerno: Aggiungo la label "AdunanzA" nel nome del programma + #ifdef CLIENT_GUI +- msg << _("aMule remote control ") << wxT(VERSION); ++ msg << wxT("aMule ") << ADU_MOD_NAME << wxT(" remote control ") << ADU_VER; // << wxT(" - ") << wxT(VERSION); + #else +- msg << wxT("aMule ") << wxT(VERSION); ++ msg << wxT("aMule ") << ADU_MOD; // << wxT(" - ") << wxT(VERSION); + #endif + msg << wxT(" "); ++ // Fine modifiche + #ifdef CVSDATE + msg << _("Snapshot:") << wxT("\n ") << wxT(CVSDATE); + #endif +- msg << wxT("\n\n") << _( ++ msg << wxT("\n\n") << wxT( ++ " Versione specifica per utenti Fastweb \n\n" ++ " Website: http://www.adunanza.net \n\n" ++ " originalmente modificata da: \n" ++ " http://amuleadu.altervista.org \n\n" ++ " E' una modifica di aMule " VERSION " (www.amule.org) \n" ++ " 'All-Platform' p2p client based on eMule \n" ++ " Copyright (C) 2003-2006 aMule Team \n\n" ++ " Part of aMule is based on \n" ++ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" ++ " Copyright (C) 2002 Petar Maymounkov\n" ++ " http://kademlia.scs.cs.nyu.edu\n"); ++ ++#if 0 ++ msg << wxT("\n\n") << wxT( + " 'All-Platform' p2p client based on eMule \n\n" + " Website: http://www.amule.org \n" + " Forum: http://forum.amule.org \n" + " FAQ: http://wiki.amule.org \n\n" ++ " ") ADU_MOD wxT("\n" ++ " by http://www.adunanza.net\n" ++ " originally developed by http://amuleadu.altervista.org\n\n" + " Contact: admin@amule.org (administrative issues) \n" + " Copyright (C) 2003-2006 aMule Team \n\n" + " Part of aMule is based on \n" + " Kademlia: Peer-to-peer routing based on the XOR metric.\n" + " Copyright (C) 2002 Petar Maymounkov\n" + " http://kademlia.scs.cs.nyu.edu\n"); ++#endif + + if (is_safe_state) { + wxMessageBox(msg, _("Message"), wxOK | wxICON_INFORMATION, this); +@@ -867,7 +939,7 @@ void CamuleDlg::OnBnClickedFast(wxComman + bool CamuleDlg::LoadGUIPrefs(bool override_pos, bool override_size) + { + // Create a config base for loading razor preferences +- wxConfigBase *config = wxConfigBase::Get(); ++ wxConfigBase *config = theApp.acfg; + // If config haven't been created exit without loading + if (config == NULL) { + return false; +@@ -913,7 +985,7 @@ bool CamuleDlg::SaveGUIPrefs() + Save client size and position */ + + // Create a config base for saving razor preferences +- wxConfigBase *config = wxConfigBase::Get(); ++ wxConfigBase *config = theApp.acfg; + // If config haven't been created exit without saving + if (config == NULL) { + return false; +@@ -1340,6 +1412,21 @@ void CamuleDlg::Apply_Clients_Skin(wxStr + bitmaps_found[Client_ExcellentRating_Smiley].found = true; + bitmaps_found[Client_ExcellentRating_Smiley].filename=skinfile[i].AfterLast(wxT('=')); + } ++ // Client_Adunanza_Flag ++ if (skinfile[i].StartsWith(wxT("Client_Adunanza_Flag="))) { ++ bitmaps_found[Client_Adunanza_Flag].found = true; ++ bitmaps_found[Client_Adunanza_Flag].filename=skinfile[i].AfterLast(wxT('=')); ++ } ++ // Client_Fastweb_Flag ++ if (skinfile[i].StartsWith(wxT("Client_Fastweb_Flag="))) { ++ bitmaps_found[Client_Fastweb_Flag].found = true; ++ bitmaps_found[Client_Fastweb_Flag].filename=skinfile[i].AfterLast(wxT('=')); ++ } ++ // Client_Fiber_Flag ++ if (skinfile[i].StartsWith(wxT("Client_Fiber_Flag="))) { ++ bitmaps_found[Client_Fiber_Flag].found = true; ++ bitmaps_found[Client_Fiber_Flag].filename=skinfile[i].AfterLast(wxT('=')); ++ } + } + } + +diff -urdpN ../aMule-2.1.3-orig/src/amuleDlg.h ./src/amuleDlg.h +--- ../aMule-2.1.3-orig/src/amuleDlg.h 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/amuleDlg.h 2006-06-12 18:30:05.000000000 +0200 +@@ -89,6 +89,9 @@ enum ClientSkinEnum { + Client_ExcellentRating_Smiley, + Client_CommentOnly_Smiley, + // Add items here. ++ Client_Adunanza_Flag, ++ Client_Fastweb_Flag, ++ Client_Fiber_Flag, + CLIENT_SKIN_UNUSED + }; + +@@ -182,6 +185,7 @@ protected: + + void OnToolBarButton(wxCommandEvent& ev); + void OnAboutButton(wxCommandEvent& ev); ++ void OnIrcButton(wxCommandEvent& ev); + void OnPrefButton(wxCommandEvent& ev); + #ifndef CLIENT_GUI + void OnImportButton(wxCommandEvent& ev); +diff -urdpN ../aMule-2.1.3-orig/src/amule-gui.cpp ./src/amule-gui.cpp +--- ../aMule-2.1.3-orig/src/amule-gui.cpp 2006-02-03 20:14:05.000000000 +0100 ++++ ./src/amule-gui.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -234,15 +234,15 @@ int CamuleGuiBase::InitGui(bool geometry + // Should default/last-used position be overridden? + #ifdef CVSDATE + #ifdef CLIENT_GUI +- m_FrameTitle = wxString::Format(wxT("aMule remote control %s %s"), wxT(VERSION), wxT(CVSDATE)); ++ m_FrameTitle = wxString::Format(wxT("aMule ") ADU_MOD); //wxT(" remote control %s %s"), wxT(VERSION), wxT(CVSDATE)); + #else +- m_FrameTitle = wxString::Format(wxT("aMule %s %s"), wxT(VERSION), wxT(CVSDATE)); ++ m_FrameTitle = wxString::Format(wxT("aMule ") ADU_MOD); // wxT(" - %s %s"), wxT(VERSION), wxT(CVSDATE)); + #endif + #else + #ifdef CLIENT_GUI +- m_FrameTitle = wxString::Format(wxT("aMule remote control %s"), wxT(VERSION)); ++ m_FrameTitle = wxString::Format(wxT("aMule ") ADU_MOD); //wxT(" remote control %s"), wxT(VERSION)); + #else +- m_FrameTitle = wxString::Format(wxT("aMule %s"), wxT(VERSION)); ++ m_FrameTitle = wxString::Format(wxT("aMule ") ADU_MOD); //wxT(" - %s"), wxT(VERSION)); + #endif + #endif + if ( geometry_enabled ) { +diff -urdpN ../aMule-2.1.3-orig/src/amule.h ./src/amule.h +--- ../aMule-2.1.3-orig/src/amule.h 2006-06-05 11:41:56.000000000 +0200 ++++ ./src/amule.h 2006-06-12 18:30:05.000000000 +0200 +@@ -72,6 +72,9 @@ class wxSingleInstanceChecker; + class wxExecuteData; + class CMuleInternalEvent; + ++class CRemoteSettings; ++class wxFileConfig; ++ + + #define theApp wxGetApp() + +@@ -179,6 +182,9 @@ public: + UploadBandwidthThrottler* uploadBandwidthThrottler; + wxLocale m_locale; + ++ CRemoteSettings* rm; ++ wxFileConfig* acfg; ++ + void ShutDown(); + + wxString GetLog(bool reset = false); +diff -urdpN ../aMule-2.1.3-orig/src/amule-remote-gui.cpp ./src/amule-remote-gui.cpp +--- ../aMule-2.1.3-orig/src/amule-remote-gui.cpp 2006-03-24 22:15:56.000000000 +0100 ++++ ./src/amule-remote-gui.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -81,7 +81,8 @@ using std::auto_ptr; + #include "ServerListCtrl.h" + #include "ClientCredits.h" + #include "OtherFunctions.h" // Needed for CastItoIShort +- ++#include "InternalEvents.h" // Needed for CMuleInternalEvent ++#include "RemoteSettings.h" + + CEConnectDlg::CEConnectDlg() : + wxDialog(theApp.amuledlg, -1, _("Connect to remote amule"), wxDefaultPosition ) +@@ -89,9 +90,9 @@ CEConnectDlg::CEConnectDlg() : + CoreConnect(this, TRUE); + + wxString pref_host, pref_port; +- wxConfig::Get()->Read(wxT("/EC/Host" ), &pref_host, wxT("localhost")); +- wxConfig::Get()->Read(wxT("/EC/Port" ), &pref_port, wxT("4712")); +- wxConfig::Get()->Read(wxT("/EC/Password" ), &pwd_hash); ++ theApp.acfg->Read(wxT("/EC/Host" ), &pref_host, wxT("localhost")); ++ theApp.acfg->Read(wxT("/EC/Port" ), &pref_port, wxT("4712")); ++ theApp.acfg->Read(wxT("/EC/Password" ), &pwd_hash); + + CastChild(ID_REMOTE_HOST, wxTextCtrl)->SetValue(pref_host); + CastChild(ID_REMOTE_PORT, wxTextCtrl)->SetValue(pref_port); +@@ -133,16 +134,28 @@ BEGIN_EVENT_TABLE(CamuleRemoteGuiApp, wx + + EVT_CUSTOM(wxEVT_EC_CONNECTION, -1, CamuleRemoteGuiApp::OnECConnection) + EVT_CUSTOM(wxEVT_EC_INIT_DONE, -1, CamuleRemoteGuiApp::OnECInitDone) ++ EVT_MULE_INTERNAL(wxEVT_CORE_FINISHED_HTTP_DOWNLOAD, -1, CamuleRemoteGuiApp::OnFinishedHTTPDownload) + + END_EVENT_TABLE() + + + IMPLEMENT_APP(CamuleRemoteGuiApp) + ++void CamuleRemoteGuiApp::OnFinishedHTTPDownload(CMuleInternalEvent& event) ++{ ++ switch (event.GetInt()) { ++ case HTTP_AdunanzaConf: ++ rm->FileDownloadedCallback(event.GetExtraLong()); ++ break; ++ } ++} + + int CamuleRemoteGuiApp::OnExit() + { + StopTickTimer(); ++ ++ delete rm; ++ delete acfg; + + return wxApp::OnExit(); + } +@@ -210,6 +223,7 @@ bool CamuleRemoteGuiApp::OnInit() + + amuledlg = NULL; + ++ printf("amulegui: OnInit - starting timer\n"); + if ( !wxApp::OnInit() ) { + return false; + } +@@ -235,7 +249,10 @@ bool CamuleRemoteGuiApp::OnInit() + wxMkdir( ConfigDir, CPreferences::GetDirPermissions() ); + } + +- wxConfig::Set(new wxFileConfig(wxEmptyString, wxEmptyString, ConfigDir + wxT("remote.conf"))); ++ rm = new CRemoteSettings(); ++ ++ theApp.acfg = new wxFileConfig(wxEmptyString, wxEmptyString, ConfigDir + wxT("remote.conf")); ++ + + glob_prefs = new CPreferencesRem(connect); + +@@ -294,9 +311,9 @@ void CamuleRemoteGuiApp::OnECInitDone(wx + void CamuleRemoteGuiApp::Startup() { + + if ( dialog->SaveUserPass() ) { +- wxConfig::Get()->Write(wxT("/EC/Host" ), dialog->Host()); +- wxConfig::Get()->Write(wxT("/EC/Port" ), dialog->Port()); +- wxConfig::Get()->Write(wxT("/EC/Password" ), dialog->PassHash()); ++ theApp.acfg->Write(wxT("/EC/Host" ), dialog->Host()); ++ theApp.acfg->Write(wxT("/EC/Port" ), dialog->Port()); ++ theApp.acfg->Write(wxT("/EC/Password" ), dialog->PassHash()); + } + dialog->Destroy(); + +@@ -530,7 +547,7 @@ CPreferencesRem::CPreferencesRem(CRemote + m_conn = conn; + + CPreferences::BuildItemList( theApp.ConfigDir); +- CPreferences::LoadAllItems( wxConfigBase::Get() ); ++ CPreferences::LoadAllItems( theApp.acfg ); + + // + // Settings queried from remote side +@@ -1157,6 +1174,15 @@ void CDownQueueRem::DeleteItem(CPartFile + { + auto_ptr file(in_file); + ++#if 0 ++ printf("&theApp: %08x\n", &theApp); ++ printf("theApp.amuledlg: %08x\n", theApp.amuledlg); ++ printf("theApp.amuledlg->transferwnd: %08x\n", theApp.amuledlg->transferwnd); ++ printf("theApp.amuledlg->transferwnd->downloadlistctrl: %08x\n", theApp.amuledlg->transferwnd->downloadlistctrl); ++ printf("file.get(): %08x\n", &theApp); ++ printf("&theApp: %08x\n", &theApp); ++#endif ++ + theApp.amuledlg->transferwnd->downloadlistctrl->RemoveFile(file.get()); + + m_enc_map.erase(file->GetFileHash()); +@@ -1182,6 +1208,7 @@ void CDownQueueRem::ProcessItemUpdate(CE + tag->SetSourceXferCount(file->transferingsrc); + tag->SetSourceNotCurrCount(file->m_notCurrentSources); + tag->SetSourceCount(file->m_source_count); ++ tag->SetAduSourceCount(file->m_adu_source_count); + tag->SetSourceCountA4AF(file->m_a4af_source_count); + tag->SetFileStatus(file->status); + +@@ -1202,6 +1229,7 @@ void CDownQueueRem::ProcessItemUpdate(CE + file->transferingsrc = tag->SourceXferCount(); + file->m_notCurrentSources = tag->SourceNotCurrCount(); + file->m_source_count = tag->SourceCount(); ++ file->m_adu_source_count = tag->AduSourceCount(); + file->m_a4af_source_count = tag->SourceCountA4AF(); + file->status = tag->FileStatus(); + +diff -urdpN ../aMule-2.1.3-orig/src/amule-remote-gui.h ./src/amule-remote-gui.h +--- ../aMule-2.1.3-orig/src/amule-remote-gui.h 2006-06-05 11:41:56.000000000 +0200 ++++ ./src/amule-remote-gui.h 2006-06-12 18:30:05.000000000 +0200 +@@ -713,6 +713,10 @@ public: + + CStatistics *statistics; + ++ wxFileConfig* acfg; ++ CRemoteSettings* rm; ++ void OnFinishedHTTPDownload(CMuleInternalEvent& evt); ++ + bool AddServer(CServer *srv, bool fromUser = false); + + uint32 GetPublicIP(); +diff -urdpN ../aMule-2.1.3-orig/src/BaseClient.cpp ./src/BaseClient.cpp +--- ../aMule-2.1.3-orig/src/BaseClient.cpp 2006-03-10 03:53:01.000000000 +0100 ++++ ./src/BaseClient.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -60,6 +60,7 @@ + #include "Logger.h" + #include "DataToText.h" // Needed for GetSoftName() + #include "OtherFunctions.h" ++#include "RemoteSettings.h" + + #include "kademlia/kademlia/Kademlia.h" + #include "kademlia/net/KademliaUDPListener.h" +@@ -69,6 +70,9 @@ + + //#define __PACKET_DEBUG__ + ++// Stefano Picerno: include Adunanza header ++#include "AdunanzA.h" // Needed for AduIsFastWebIP ++// Fine + + // some client testing variables + static wxString crash_name = wxT("[Invalid User Name]"); +@@ -246,6 +250,10 @@ void CUpDownClient::Init() + + /* Creation time (for buddies timeout) */ + m_nCreationTime = ::GetTickCount(); ++ ++ isAduSoftware = 0; ++ aduver = 0; ++ sentadu = false; + } + + +@@ -408,6 +416,7 @@ bool CUpDownClient::ProcessHelloTypePack + switch(temptag.GetNameID()){ + case CT_NAME: + m_Username = temptag.GetStr(); ++ AddDebugLogLineM(false, logClient, CFormat(wxT("username: %s hash: %s")) % m_Username % hash.Encode()); + break; + + case CT_VERSION: +@@ -524,8 +533,13 @@ bool CUpDownClient::ProcessHelloTypePack + // 7 Min Version (Only need 0-99) + // 3 Upd Version (Only need 0-5) + // 7 Bld Version (Only need 0-99) +- m_byCompatibleClient = (temptag.GetInt() >> 24); ++ m_byCompatibleClient = m_clientSoft = (temptag.GetInt() >> 24); + m_nClientVersion = temptag.GetInt() & 0x00ffffff; ++ uint32 nClientMajVersion = (m_nClientVersion >> 17) & 0x7f; ++ uint32 nClientMinVersion = (m_nClientVersion >> 10) & 0x7f; ++ uint32 nClientUpVersion = (m_nClientVersion >> 7) & 0x07; ++ ++ m_nClientVersion = MAKE_CLIENT_VERSION(nClientMajVersion, nClientMinVersion, nClientUpVersion); + m_byEmuleVersion = 0x99; + m_fSharedDirectories = 1; + dwEmuleTags |= 4; +@@ -657,6 +671,8 @@ void CUpDownClient::SendMuleInfoPacket(b + return; + } + ++ bool wastePackets = ( m_dwUserIP && AduIsFastWebIP(m_dwUserIP) ? true : false ); ++ + CPacket* packet = NULL; + CMemFile data; + +@@ -687,7 +703,9 @@ void CUpDownClient::SendMuleInfoPacket(b + data.WriteUInt8(EMULE_PROTOCOL); + + // Tag number +- data.WriteUInt32(9); ++ // Stefano Picerno: Aggiungo il tag ET_SUPERADU3, per il riconoscimento dei client Adu ++ data.WriteUInt32(7 + ( wastePackets ? 1 + 1 /*AdunanzA*/ + 1 /*ET_MOD_VERSION*/ : 0 ) ); ++ // Fine + + CTag tag1(ET_COMPRESSION,1); + tag1.WriteTagToFile(&data); +@@ -713,15 +731,22 @@ void CUpDownClient::SendMuleInfoPacket(b + CTag tag7(ET_FEATURES, dwTagValue); + tag7.WriteTagToFile(&data); + +- CTag tag8(ET_COMPATIBLECLIENT,SO_AMULE); +- tag8.WriteTagToFile(&data); ++ if (wastePackets) { ++ ++ CTag tag8(ET_COMPATIBLECLIENT,SO_AMULE); ++ tag8.WriteTagToFile(&data); + +- // Support for tag ET_MOD_VERSION +- wxString mod_name(MOD_VERSION_LONG); +- CTag tag9(ET_MOD_VERSION, mod_name); +- tag9.WriteTagToFile(&data); +- // Maella end ++ // Support for tag ET_MOD_VERSION ++ wxString mod_name(MOD_VERSION_LONG); ++ CTag tag9(ET_MOD_VERSION, mod_name); ++ tag9.WriteTagToFile(&data); ++ // Maella end + ++ // Stefano Picerno: In realta' gli altri client adu ignorano il valore associato al tag Adu; ++ // e' sufficiente che tale valore sia != 0. ++ CTag tag10(ET_SUPERADU3, ADUNANZA_FASTWEB); // E' connesso ad Adunanza ++ tag10.WriteTagToFile(&data); ++ } + } + + packet = new CPacket(&data,OP_EMULEPROT); +@@ -859,6 +884,13 @@ bool CUpDownClient::ProcessMuleInfoPacke + case ET_MOD_VERSION: + if (temptag.IsStr()) { + m_strModVersion = temptag.GetStr(); ++ if (m_strModVersion.Find(wxT("AdunanzA")) > -1) { ++ uint32 adumaj = 0, adumin = 0, adubeta = 0; ++ if (sscanf(unicode2char(m_strModVersion),"AdunanzA %u.%ub%u", &adumaj, &adumin, &adubeta) < 2) ++ sscanf(unicode2char(m_strModVersion),"AdunanzA %u.%u", &adumaj, &adumin); ++ ++ aduver = ADU_VER_CODE(adumaj, adumin, adubeta); ++ } + } else if (temptag.IsInt()) { + m_strModVersion = wxString::Format(wxT("ModID=%u"), temptag.GetInt()); + } else { +@@ -867,6 +899,18 @@ bool CUpDownClient::ProcessMuleInfoPacke + + break; + ++ // Mod Add - Gestisce il tag ET_SUPERADU3 ++ case ET_SUPERADU3: ++ uint32 tagval; ++ tagval = temptag.GetInt(); ++ SetIsAduSoftware(tagval); ++ if (!aduver) { ++ aduver = ADU_VER_CODE(3, 7, 0); ++ } ++ ++ break; ++ // fine mod Adu ++ + default: + AddDebugLogLineM( false, logPacketErrors, + CFormat( wxT("Unknown Mule tag (%s) from client: %s") ) +@@ -908,7 +952,13 @@ bool CUpDownClient::ProcessMuleInfoPacke + + ReGetClientSoft(); + +- m_byInfopacketsReceived |= IP_EMULEPROTPACK; ++ m_byInfopacketsReceived |= IP_EMULEPROTPACK; ++ ++ // Mod AdunanzA ++ // lupz ++ if (IsOldAdu(theApp.rm->mVer)) ++ Ban(); ++ // Fine Mod AdunanzA + } + + return (protocol_version == 0xFF); // This was a OS_Info? +@@ -937,7 +987,21 @@ void CUpDownClient::SendHelloAnswer() + void CUpDownClient::SendHelloTypePacket(CMemFile* data) + { + data->WriteHash(thePrefs::GetUserHash()); +- data->WriteUInt32(theApp.GetID()); ++ ++ amuleIPV4Address address; ++ m_socket->GetPeer(address); ++ m_FullUserIP = address.IPAddress(); ++ SetIP(StringIPtoUint32(m_FullUserIP)); ++ ++ uint32 clientid; ++ if (AduIsFastWebIP(GetIP())) ++ clientid = theApp.GetID(); ++ else ++ clientid = theApp.GetED2KID(); ++ ++ data->WriteUInt32(clientid); ++ ++ //data->WriteUInt32(theApp.GetID()); + data->WriteUInt16(thePrefs::GetPort()); + + uint32 tagcount = 6; +@@ -1378,7 +1442,7 @@ bool CUpDownClient::TryToConnect(bool bI + bio.WriteUInt128(Kademlia::CUInt128(GetBuddyID())); + bio.WriteUInt128(Kademlia::CUInt128(m_reqfile->GetFileHash().GetHash())); + bio.WriteUInt16(thePrefs::GetPort()); +- CPacket* packet = new CPacket(&bio, OP_KADEMLIAHEADER, KADEMLIA_CALLBACK_REQ); ++ CPacket* packet = new CPacket(&bio, theApp.rm->kadOpcode, KADEMLIA_CALLBACK_REQ); + theApp.clientudp->SendPacket(packet, GetBuddyIP(), GetBuddyPort()); + AddDebugLogLineM(false,logLocalClient, wxString::Format(wxT("KADEMLIA_CALLBACK_REQ (%i)"),packet->GetPacketSize())); + theStats::AddUpOverheadKad(packet->GetRealPacketSize()); +@@ -1535,13 +1599,14 @@ void CUpDownClient::ReGetClientSoft() + } + + int iHashType = GetHashType(); ++ AddDebugLogLineM(false, logClient, CFormat(wxT("soft: %u hash: %u byEmuleVersion: %u nClientVersion: %u")) % m_clientSoft % iHashType % m_byEmuleVersion % m_nClientVersion); + wxString clientModString; + if (iHashType == SO_EMULE) { + + m_clientSoft = m_byCompatibleClient; + m_clientSoftString = GetSoftName(m_clientSoft); + // Special issues: +- if((GetClientModString().IsEmpty() == false) && (m_clientSoft != SO_EMULE)) { ++ if(m_clientSoftString.IsEmpty() && (GetClientModString().IsEmpty() == false) && (m_clientSoft != SO_EMULE)) { + m_clientSoftString = GetClientModString(); + } + // Isn't xMule annoying? +@@ -1591,9 +1656,13 @@ void CUpDownClient::ReGetClientSoft() + } + } + ++ if (m_byEmuleVersion && m_nClientVersion > 0xff) ++ m_byEmuleVersion = 0x99; ++ + if (m_byEmuleVersion == 0) { + m_nClientVersion = MAKE_CLIENT_VERSION(0,0,0); +- } else if (m_byEmuleVersion != 0x99) { ++ } ++ else if (m_byEmuleVersion != 0x99) { + uint32 nClientMinVersion = (m_byEmuleVersion >> 4)*10 + (m_byEmuleVersion & 0x0f); + m_nClientVersion = MAKE_CLIENT_VERSION(0,nClientMinVersion,0); + switch (m_clientSoft) { +@@ -1609,11 +1678,9 @@ void CUpDownClient::ReGetClientSoft() + break; + } + } else { +- uint32 nClientMajVersion = (m_nClientVersion >> 17) & 0x7f; +- uint32 nClientMinVersion = (m_nClientVersion >> 10) & 0x7f; +- uint32 nClientUpVersion = (m_nClientVersion >> 7) & 0x07; +- +- m_nClientVersion = MAKE_CLIENT_VERSION(nClientMajVersion, nClientMinVersion, nClientUpVersion); ++ uint32 nClientMajVersion = m_nClientVersion / (100U * 10U * 100U); ++ uint32 nClientMinVersion = m_nClientVersion / (100U * 10U) - (nClientMajVersion * 100U); ++ uint32 nClientUpVersion = m_nClientVersion / 100U - (nClientMajVersion * 100U * 10U) - (nClientMinVersion * 10U) ; + + switch (m_clientSoft) { + case SO_AMULE: +@@ -1644,6 +1711,33 @@ void CUpDownClient::ReGetClientSoft() + break; + } + } ++ ++ // Stefano Picerno: Aggiungo alla versione del client i flag Adunanza / Fastweb ++ uint32 aduResult = GetClientAduType(); ++ if (aduResult == ADUNANZA_ICON_FW ) ++ { ++ clientModString = _(" - Fastweb - ") + GetClientModString(); ++ } ++ else if (aduResult == ADUNANZA_ICON_ADU ) ++ { ++ if (ADU_GET_B(aduver)) ++ m_strModVersion = wxString::Format(wxT("V%u.%ub%u"), ADU_GET_MAJ(aduver), ADU_GET_MIN(aduver), ADU_GET_B(aduver)); ++ else ++ m_strModVersion = wxString::Format(wxT("V%u.%u"), ADU_GET_MAJ(aduver), ADU_GET_MIN(aduver)); ++ ++ clientModString = _(" - AdunanzA ") + GetClientModString(); ++ } else ++ clientModString = _(" - ") + GetClientModString(); ++ ++ if (aduResult > 0) { ++ if (IsAduFiber()) ++ clientModString += _(" Fibra"); ++ else ++ clientModString += _(" DSL"); ++ ++ SetClientFWCity(); ++ } ++ // Fine + } else if (m_bIsHybrid) { + // seen: + // 105010 50.10 +@@ -1711,11 +1805,8 @@ void CUpDownClient::ReGetClientSoft() + m_clientVerString = wxString::Format(wxT("v%u.%u"), m_nClientVersion / 100000, (m_nClientVersion / 1000) % 100); + } + +- m_clientVersionString = m_clientVerString; +- if (!clientModString.IsEmpty()) { +- m_clientVerString += wxT(" - ") + clientModString; +- } +- m_fullClientVerString = m_clientSoftString + wxT(" ") + m_clientVerString; ++ m_clientVersionString = m_clientVerString + clientModString; ++ m_fullClientVerString = m_clientSoftString + wxT(" ") + m_clientVerString + clientModString; + + UpdateStats(); + } +@@ -1759,6 +1850,9 @@ void CUpDownClient::ResetFileStatusInfo( + m_pReqFileAICHHash = NULL; + } + ++ // Mod Adu ++ SetIsAduSoftware( 0 ); ++ // Fine adu + } + + wxString CUpDownClient::GetUploadFileInfo() +@@ -1842,12 +1936,19 @@ void CUpDownClient::SendSignaturePacket( + uint8 byChaIPKind = 0; + uint32 ChallengeIP = 0; + if (bUseV2){ +- if (::IsLowID(theApp.GetED2KID())) { ++ ++ uint32 clientid; ++ if (AduIsFastWebIP(m_dwUserIP)) ++ clientid = theApp.GetID(); ++ else ++ clientid = theApp.GetED2KID(); ++ ++ if (::IsLowID(clientid)) { + // we cannot do not know for sure our public ip, so use the remote clients one + ChallengeIP = GetIP(); + byChaIPKind = CRYPT_CIP_REMOTECLIENT; + } else { +- ChallengeIP = theApp.GetED2KID(); ++ ChallengeIP = clientid; + byChaIPKind = CRYPT_CIP_LOCALCLIENT; + } + } +@@ -1949,6 +2050,9 @@ void CUpDownClient::ProcessSignaturePack + } + + m_dwLastSignatureIP = GetIP(); ++ ++ SendMuleInfoPacket(false); ++ sentadu = true; + } + + void CUpDownClient::SendSecIdentStatePacket(){ +@@ -2088,10 +2192,14 @@ bool CUpDownClient::IsConnected() const + return m_socket && m_socket->IsConnected(); + } + ++// Stefano Picerno: aggiunto il parametro actualPayloadSize (e' necessario passarlo al socket ++#if 0 + bool CUpDownClient::SendPacket(CPacket* packet, bool delpacket, bool controlpacket) ++#endif ++bool CUpDownClient::SendPacket(CPacket* packet, bool delpacket, bool controlpacket, uint32 actualPayloadSize ) + { + if ( m_socket ) { +- m_socket->SendPacket(packet, delpacket, controlpacket ); ++ m_socket->SendPacket(packet, delpacket, controlpacket, actualPayloadSize ); + return true; + } else { + printf("CAUGHT DEAD SOCKET IN SENDPACKET()\n"); +diff -urdpN ../aMule-2.1.3-orig/src/ClientDetailDialog.cpp ./src/ClientDetailDialog.cpp +--- ../aMule-2.1.3-orig/src/ClientDetailDialog.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/ClientDetailDialog.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -91,7 +91,7 @@ bool CClientDetailDialog::OnInitDialog() + + CastChild(ID_DID,wxStaticText)->SetLabel(wxString::Format(wxT("%u (%s)"),ENDIAN_NTOHL(m_client->GetIP()),(m_client->HasLowID() ? _("LowID"):_("HighID")))); + +- CastChild(ID_DIP,wxStaticText)->SetLabel(m_client->GetFullIP() + wxString::Format(wxT(":%i"),m_client->GetUserPort())); ++ //CastChild(ID_DIP,wxStaticText)->SetLabel(Uint32_16toStringIP_Port(m_client->GetIP() & 0x000fffff,m_client->GetUserPort())); + + if (m_client->GetServerIP()) { + +diff -urdpN ../aMule-2.1.3-orig/src/ClientListCtrl.cpp ./src/ClientListCtrl.cpp +--- ../aMule-2.1.3-orig/src/ClientListCtrl.cpp 2006-04-06 03:24:09.000000000 +0200 ++++ ./src/ClientListCtrl.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -43,6 +43,7 @@ + #include + #include + ++#include "AdunanzA.h" + + + +@@ -595,7 +596,35 @@ void CUploadingView::DrawCell( CUpDownCl + wxIMAGELIST_DRAW_TRANSPARENT); + } + +- dc->DrawText( client->GetUserName(), rect.x + 20, rect.y + 3 ); ++ // Aggiungo le icone per adu / fastweb ++ uint32 client_type = client->GetClientAduType(); ++ wxString preUserName = wxString(_("")); ++ ++ if (client_type!=ADUNANZA_ANY) { ++ switch (client_type) ++ { ++ case ADUNANZA_ICON_ADU: ++ // Adu protocol -> Draw the '+' in the lower right ++ imagelist.Draw( Client_Adunanza_Flag, *dc, rect.x, rect.y + 1, wxIMAGELIST_DRAW_TRANSPARENT); ++ break; ++ case ADUNANZA_ICON_FW: ++ // Client from Fastweb address -> Draw the other '+' in the ++ // lower right ++ imagelist.Draw( Client_Fastweb_Flag, *dc, rect.x, rect.y + 1, wxIMAGELIST_DRAW_TRANSPARENT); ++ break; ++ default: ++ break; ++ } ++ if (client->IsAduFiber()) ++ imagelist.Draw( Client_Fiber_Flag, *dc, rect.x, rect.y + 1, wxIMAGELIST_DRAW_TRANSPARENT); ++ ++ if (client->GetClientFWCity().Len()) ++ preUserName += _("(") + client->GetClientFWCity() + _(") "); ++ ++ } ++ // Fine ++ ++ dc->DrawText( preUserName + client->GetUserName(), rect.x + 20, rect.y + 3 ); + + return; + } +diff -urdpN ../aMule-2.1.3-orig/src/ClientTCPSocket.cpp ./src/ClientTCPSocket.cpp +--- ../aMule-2.1.3-orig/src/ClientTCPSocket.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/ClientTCPSocket.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -287,7 +287,7 @@ bool CClientTCPSocket::ProcessPacket(con + if (m_client->GetInfoPacketsReceived() == IP_BOTH) { + m_client->InfoPacketsReceived(); + } +- ++ + // Socket might die because of sending in InfoPacketsReceived, so check + if (m_client) { + m_client->ConnectionEstablished(); +@@ -347,9 +347,10 @@ bool CClientTCPSocket::ProcessPacket(con + } + Notify_UploadCtrlRefreshClient( m_client ); + // send a response packet with standart informations +- if ((m_client->GetHashType() == SO_EMULE) && !bIsMuleHello) { +- m_client->SendMuleInfoPacket(false); +- } ++ ++ if ((m_client->GetHashType() == SO_EMULE) && !bIsMuleHello) { ++ m_client->SendMuleInfoPacket(false); ++ } + + // Client might die from Sending in SendMuleInfoPacket, so check + if ( m_client ) { +@@ -360,7 +361,11 @@ bool CClientTCPSocket::ProcessPacket(con + // Client might die from Sending in SendHelloAnswer, so check + if (m_client && m_client->GetOSInfoSupport()) { + m_client->SendMuleInfoPacket(false,true); // Send the OS Info tag on the recycled Mule Info +- } ++ } ++ ++ if ((m_client->GetHashType() == SO_EMULE) && bIsMuleHello && m_client->HasFastwebIP()) { ++ m_client->SendMuleInfoPacket(false); ++ } + + // Client might die from Sending in SendMuleInfoPacket, so check + if ( m_client ) { +@@ -1258,6 +1263,7 @@ bool CClientTCPSocket::ProcessExtPacket( + if (m_client->GetInfoPacketsReceived() == IP_BOTH) { + m_client->InfoPacketsReceived(); + } ++ + m_client->SendMuleInfoPacket(true); + } else { + AddDebugLogLineM( false, logRemoteClient, wxT("Remote Client: OP_EMULEINFO is an OS_INFO") ); +diff -urdpN ../aMule-2.1.3-orig/src/ClientUDPSocket.cpp ./src/ClientUDPSocket.cpp +--- ../aMule-2.1.3-orig/src/ClientUDPSocket.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/ClientUDPSocket.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -46,6 +46,7 @@ + #include "kademlia/kademlia/Kademlia.h" + #include "kademlia/io/IOException.h" + #include "zlib.h" ++#include "RemoteSettings.h" + + // + // CClientUDPSocket -- Extended eMule UDP socket +@@ -81,33 +82,26 @@ void CClientUDPSocket::OnPacketReceived( + uint16 port = addr.Service(); + + try { +- switch (protocol) { +- case OP_EMULEPROT: +- ProcessPacket((char*)buffer + 2,length - 2, opcode, ip, port); +- break; +- +- case OP_KADEMLIAHEADER: +- theStats::AddDownOverheadKad(length); +- Kademlia::CKademlia::processPacket(buffer, length, wxUINT32_SWAP_ALWAYS(ip), port); +- break; +- +- case OP_KADEMLIAPACKEDPROT: { +- theStats::AddDownOverheadKad(length); +- uint32 nNewSize = length*10+300; // Should be enough... +- byte unpack[nNewSize]; +- uLongf unpackedsize = nNewSize-2; +- uint16 result = uncompress(unpack + 2, &unpackedsize, buffer + 2, length-2); +- if (result == Z_OK) { +- unpack[0] = OP_KADEMLIAHEADER; +- unpack[1] = opcode; +- Kademlia::CKademlia::processPacket(unpack, unpackedsize + 2, wxUINT32_SWAP_ALWAYS(ip), port); +- } else { +- AddDebugLogLineM(false, logClientKadUDP, wxT("Failed to uncompress Kademlia packet")); +- } +- break; ++ if (protocol == OP_EMULEPROT) { ++ ProcessPacket((char*)buffer + 2,length - 2, opcode, ip, port); ++ } else if (protocol == theApp.rm->kadOpcode) { ++ theStats::AddDownOverheadKad(length); ++ Kademlia::CKademlia::processPacket(buffer, length, wxUINT32_SWAP_ALWAYS(ip), port); ++ } else if (protocol == theApp.rm->kadZOpcode) { ++ theStats::AddDownOverheadKad(length); ++ uint32 nNewSize = length*10+300; // Should be enough... ++ byte unpack[nNewSize]; ++ uLongf unpackedsize = nNewSize-2; ++ uint16 result = uncompress(unpack + 2, &unpackedsize, buffer + 2, length-2); ++ if (result == Z_OK) { ++ unpack[0] = theApp.rm->kadOpcode; ++ unpack[1] = opcode; ++ Kademlia::CKademlia::processPacket(unpack, unpackedsize + 2, wxUINT32_SWAP_ALWAYS(ip), port); ++ } else { ++ AddDebugLogLineM(false, logClientKadUDP, wxT("Failed to uncompress Kademlia packet")); + } +- default: +- AddDebugLogLineM(false, logClientUDP, wxString::Format(wxT("Unknown opcode on received packet: 0x%x"), protocol)); ++ } else { ++ AddDebugLogLineM(false, logClientUDP, wxString::Format(wxT("Unknown opcode on received packet: 0x%x"), protocol)); + } + } catch (const wxString& e) { + AddDebugLogLineM(false, logClientUDP, wxT("Error while parsing UDP packet: ") + e); +diff -urdpN ../aMule-2.1.3-orig/src/DownloadClient.cpp ./src/DownloadClient.cpp +--- ../aMule-2.1.3-orig/src/DownloadClient.cpp 2006-01-24 23:23:31.000000000 +0100 ++++ ./src/DownloadClient.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -489,7 +489,7 @@ void CUpDownClient::SetDownloadState(uin + if (m_nDownloadState != byNewState) { + if (m_reqfile) { + // Notify the client that this source has changed its state +- m_reqfile->ClientStateChanged( m_nDownloadState, byNewState ); ++ m_reqfile->ClientStateChanged( m_nDownloadState, byNewState, this ); + + if (byNewState == DS_DOWNLOADING) { + m_reqfile->AddDownloadingSource(this); +@@ -571,12 +571,58 @@ void CUpDownClient::ProcessHashSet(const + SendStartupLoadReq(); + } + ++void CUpDownClient::CreateBlockRequests(int iMaxBlocks) ++{ ++ wxASSERT( iMaxBlocks >= 1 /*&& iMaxBlocks <= 3*/ ); ++ if (m_DownloadBlocks_list.IsEmpty()) ++ { ++ //dazzle: prevent a sign error from occurring ++ uint16 count, countinit; ++ if (iMaxBlocks - m_PendingBlocks_list.GetCount() > 0) ++ countinit = iMaxBlocks - m_PendingBlocks_list.GetCount(); ++ else ++ countinit = 0; ++ ++ count = countinit; ++ //end dazzle ++ Requested_Block_Struct* toadd[count]; ++ if (m_reqfile->GetNextRequestedBlock(this,toadd,&count)) { ++ for (int i = 0; i != count; i++) ++ m_DownloadBlocks_list.AddTail(toadd[i]); ++ } ++ //dazzle: if no blocks available, try to drop the slowest source, then try again ++ else if (m_reqfile->DropSlowestSource(this)) { ++ count = countinit; ++ if (m_reqfile->GetNextRequestedBlock(this,toadd,&count)){ ++ for (int i = 0; i < count; i++) ++ m_DownloadBlocks_list.AddTail(toadd[i]); ++ } ++ } ++ ++ //end dazzle ++ } ++ ++ while (m_PendingBlocks_list.GetCount() < iMaxBlocks && !m_DownloadBlocks_list.IsEmpty()) ++ { ++ Pending_Block_Struct* pblock = new Pending_Block_Struct; ++ pblock->block = m_DownloadBlocks_list.RemoveHead(); ++ pblock->zStream = NULL; ++ pblock->totalUnzipped = 0; ++ pblock->fZStreamError = 0; ++ pblock->fRecovered = 0; ++ m_PendingBlocks_list.AddTail(pblock); ++ } ++ ++} ++ + void CUpDownClient::SendBlockRequests() + { + m_dwLastBlockReceived = ::GetTickCount(); + if (!m_reqfile) { + return; + } ++ ++#if 0 + if (m_DownloadBlocks_list.IsEmpty()) { + // Barry - instead of getting 3, just get how many is needed + uint16 count = 3 - m_PendingBlocks_list.GetCount(); +@@ -599,7 +645,9 @@ void CUpDownClient::SendBlockRequests() + pblock->fRecovered = 0; + m_PendingBlocks_list.AddTail(pblock); + } +- ++#endif ++ ++ CreateBlockRequests(3); + + if (m_PendingBlocks_list.IsEmpty()) { + if (!GetSentCancelTransfer()){ +@@ -698,7 +746,17 @@ void CUpDownClient::ProcessBlockPacket(c + if ( nEndPos == nStartPos || size != ((nEndPos - nStartPos) + HEADER_SIZE)) { + throw wxString(wxT("Corrupted or invalid DataBlock received (ProcessBlockPacket)")); + } +- theStats::AddDownloadFromSoft(GetClientSoft(),size - HEADER_SIZE); ++ // mod Adu ++ // Emanem ++ // Aggiungo i dati trasferiti all'elenco AdunanzA ++ uint32 aduBytes = 0, aduFBytes = 0; ++ if (IsAduClient()) { ++ aduBytes = size - HEADER_SIZE; ++ if (IsAduFiber()) ++ aduFBytes = aduBytes; ++ } ++ theStats::AddDownloadFromSoft(GetClientSoft(),size - HEADER_SIZE,aduBytes,aduFBytes); ++ + bytesReceivedCycle += size - HEADER_SIZE; + + credits->AddDownloaded(size - HEADER_SIZE, GetIP(), theApp.CryptoAvailable()); +@@ -1313,7 +1371,7 @@ void CUpDownClient::SetRequestFile(CPart + if ( m_reqfile != reqfile ) { + // Decrement the source-count of the old request-file + if ( m_reqfile ) { +- m_reqfile->ClientStateChanged( GetDownloadState(), -1 ); ++ m_reqfile->ClientStateChanged( GetDownloadState(), -1, this ); + m_reqfile->UpdatePartsFrequency( this, false ); + } + +@@ -1324,7 +1382,7 @@ void CUpDownClient::SetRequestFile(CPart + + if ( reqfile ) { + // Increment the source-count of the new request-file +- m_reqfile->ClientStateChanged( -1, GetDownloadState() ); ++ m_reqfile->ClientStateChanged( -1, GetDownloadState(), this ); + + m_nPartCount = reqfile->GetPartCount(); + } +@@ -1455,3 +1513,31 @@ void CUpDownClient::ProcessAICHFileHash( + AddDebugLogLineM( false, logAICHTransfer, wxT("ProcessAICHFileHash(): PartFile not found or Partfile differs from requested file, ") + GetClientFullInfo() ); + } + } ++ ++void CUpDownClient::SendCancelTransfer(CPacket* packet) ++{ ++ if (!m_socket){ ++ wxASSERT(0); ++ return; ++ } ++ ++ if (!GetSentCancelTransfer()) ++ { ++ bool bDeletePacket; ++ CPacket* pCancelTransferPacket; ++ if (packet) ++ { ++ pCancelTransferPacket = packet; ++ bDeletePacket = false; ++ } ++ else ++ { ++ pCancelTransferPacket = new CPacket(OP_CANCELTRANSFER, 0); ++ bDeletePacket = true; ++ } ++ ++ theStats::AddUpOverheadFileRequest(pCancelTransferPacket->GetPacketSize()); ++ m_socket->SendPacket(pCancelTransferPacket,bDeletePacket,true); ++ SetSentCancelTransfer(1); ++ } ++} +diff -urdpN ../aMule-2.1.3-orig/src/DownloadListCtrl.cpp ./src/DownloadListCtrl.cpp +--- ../aMule-2.1.3-orig/src/DownloadListCtrl.cpp 2006-03-10 06:02:41.000000000 +0100 ++++ ./src/DownloadListCtrl.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -1411,13 +1411,11 @@ void CDownloadListCtrl::DrawFileItem( wx + + // Sources + case 6: { ++ uint16 asc = file->GetAduSourceCount(); + uint16 sc = file->GetSourceCount(); + uint16 ncsc = file->GetNotCurrentSourcesCount(); +- if ( ncsc ) { +- text = wxString::Format( wxT("%i/%i" ), sc - ncsc, sc ); +- } else { +- text = wxString::Format( wxT("%i"), sc ); +- } ++ ++ text = wxString::Format( wxT("%i"), asc ); + + if ( file->GetSrcA4AFCount() ) { + text += wxString::Format( wxT("+%i"), file->GetSrcA4AFCount() ); +@@ -1425,6 +1423,12 @@ void CDownloadListCtrl::DrawFileItem( wx + + text += wxString::Format( wxT(" (%i)"), file->GetTransferingSrcCount() ); + ++ if ( ncsc ) { ++ text += wxString::Format( wxT(" E[%i/%i]" ), sc - ncsc, sc ); ++ } else { ++ text += wxString::Format( wxT(" E[%i]"), sc ); ++ } ++ + break; + } + +@@ -1600,13 +1604,39 @@ void CDownloadListCtrl::DrawSourceItem( + m_ImageList.Draw(Client_BadGuy_Smiley, *dc, point2.x, point.y, + wxIMAGELIST_DRAW_TRANSPARENT); + } ++ ++ // Stefano Picerno: Aggiungo l'immagine giusta a seconda dei flag Adu / Fastweb ++ uint32 client_type = client->GetClientAduType(); ++ wxString preUserName = wxString(_("")); ++ if (client_type>ADUNANZA_ANY) { ++ switch (client_type) ++ { ++ case ADUNANZA_ICON_ADU: ++ // Adu protocol -> Draw the 'A' in the lower right ++ m_ImageList.Draw(Client_Adunanza_Flag, *dc, point2.x, point.y, wxIMAGELIST_DRAW_TRANSPARENT); ++ break; ++ case ADUNANZA_ICON_FW: ++ // Client from Fastweb address -> Draw the 'F' in the lower right ++ m_ImageList.Draw(Client_Fastweb_Flag, *dc, point2.x, point.y, wxIMAGELIST_DRAW_TRANSPARENT); ++ break; ++ default: ++ break; ++ } ++ if (client->IsAduFiber()) ++ m_ImageList.Draw(Client_Fiber_Flag, *dc, point2.x, point.y, wxIMAGELIST_DRAW_TRANSPARENT); ++ ++ if (client->GetClientFWCity().Len()) ++ preUserName += _("(") + client->GetClientFWCity() + _(") "); ++ ++ } + + if ( client->GetUserName().IsEmpty() ) { +- dc->DrawText( wxT("?"), rect.GetX() + 40, rect.GetY() ); ++ dc->DrawText( preUserName + wxT("?"), rect.GetX() + 40, rect.GetY() ); + } else { +- dc->DrawText( client->GetUserName(), rect.GetX() + 40, ++ dc->DrawText( preUserName + client->GetUserName(), rect.GetX() + 40, + rect.GetY()); + } ++ // Fine + } + break; + +@@ -1885,8 +1915,8 @@ int CDownloadListCtrl::Compare( const CP + // Sort by number of sources + case 6: + result = CmpAny( +- file1->GetSourceCount(), +- file2->GetSourceCount() ); ++ file1->GetAduSourceCount(), ++ file2->GetAduSourceCount() ); + break; + + // Sort by priority +diff -urdpN ../aMule-2.1.3-orig/src/DownloadQueue.cpp ./src/DownloadQueue.cpp +--- ../aMule-2.1.3-orig/src/DownloadQueue.cpp 2006-02-24 11:37:53.000000000 +0100 ++++ ./src/DownloadQueue.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -353,11 +353,11 @@ void CDownloadQueue::Process() + uint32 downspeed = 0; + if (thePrefs::GetMaxDownload() != UNLIMITED && m_datarate > 1500) { + downspeed = (((uint32)thePrefs::GetMaxDownload())*1024*100)/(m_datarate+1); +- if (downspeed < 50) { ++ /*if (downspeed < 50) { + downspeed = 50; + } else if (downspeed > 200) { + downspeed = 200; +- } ++ }*/ + } + + m_datarate = 0; +@@ -1363,7 +1363,7 @@ void CDownloadQueue::KademliaSearchFile( + } + + //Do we need more sources? +- if(!(!temp->IsStopped() && thePrefs::GetMaxSourcePerFile() > temp->GetSourceCount())) { ++ if(!(!temp->IsStopped() && thePrefs::GetMaxSourcePerFile() > temp->GetAduSourceCount())) { + AddDebugLogLineM(false, logKadSearch, wxT("No more sources needed for this file")); + return; + } +@@ -1382,7 +1382,16 @@ void CDownloadQueue::KademliaSearchFile( + } + + CUpDownClient* ctemp = NULL; +- switch( type ) { ++ ++ // Se il client รจ nella rete fastweb lo considero sempre non firewalled ++ uint8 adutype; ++ if (type == (uint8)3 && AduIsFastWebLANIP(ED2KID)) ++ adutype = 1; ++ else ++ adutype = type; ++ ++ ++ switch( adutype ) { + case 1: { + //NonFirewalled users + if(!tcp) { +diff -urdpN ../aMule-2.1.3-orig/src/ECSpecialCoreTags.cpp ./src/ECSpecialCoreTags.cpp +--- ../aMule-2.1.3-orig/src/ECSpecialCoreTags.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/ECSpecialCoreTags.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -130,6 +130,7 @@ CEC_PartFile_Tag::CEC_PartFile_Tag(CPart + valuemap.CreateTag(EC_TAG_PARTFILE_STATUS, file->GetStatus(), this); + + valuemap.CreateTag(EC_TAG_PARTFILE_SOURCE_COUNT, file->GetSourceCount(), this); ++ valuemap.CreateTag(EC_TAG_PARTFILE_ADU_SOURCE_COUNT, file->GetAduSourceCount(), this); + valuemap.CreateTag(EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT, file->GetNotCurrentSourcesCount(), this); + valuemap.CreateTag(EC_TAG_PARTFILE_SOURCE_COUNT_XFER, file->GetTransferingSrcCount(), this); + valuemap.CreateTag(EC_TAG_PARTFILE_SOURCE_COUNT_A4AF, file->GetSrcA4AFCount(), this); +@@ -166,6 +167,7 @@ CEC_PartFile_Tag::CEC_PartFile_Tag(CPart + AddTag(CECTag(EC_TAG_PARTFILE_STATUS, file->GetStatus())); + + AddTag(CECTag(EC_TAG_PARTFILE_SOURCE_COUNT, file->GetSourceCount())); ++ AddTag(CECTag(EC_TAG_PARTFILE_ADU_SOURCE_COUNT, file->GetAduSourceCount())); + AddTag(CECTag(EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT, file->GetNotCurrentSourcesCount())); + AddTag(CECTag(EC_TAG_PARTFILE_SOURCE_COUNT_XFER, file->GetTransferingSrcCount())); + AddTag(CECTag(EC_TAG_PARTFILE_SOURCE_COUNT_A4AF, file->GetSrcA4AFCount())); +diff -urdpN ../aMule-2.1.3-orig/src/EMSocket.cpp ./src/EMSocket.cpp +--- ../aMule-2.1.3-orig/src/EMSocket.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/EMSocket.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -510,10 +510,10 @@ SocketSentBytes CEMSocket::Send(uint32 m + + maxNumberOfBytesToSend = GetNextFragSize(maxNumberOfBytesToSend, minFragSize); + +- bool bWasLongTimeSinceSend = (::GetTickCount() - lastSent) > 1000; +- + lastCalledSend = ::GetTickCount(); + ++ bool bWasLongTimeSinceSend = (lastCalledSend - lastSent) > 1000; ++ + bool anErrorHasOccured = false; + uint32 sentStandardPacketBytesThisCall = 0; + uint32 sentControlPacketBytesThisCall = 0; +diff -urdpN ../aMule-2.1.3-orig/src/GuiEvents.h ./src/GuiEvents.h +--- ../aMule-2.1.3-orig/src/GuiEvents.h 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/GuiEvents.h 2006-06-12 18:30:05.000000000 +0200 +@@ -150,7 +150,8 @@ enum HTTP_Download_File { + // Auto-updating server.met has a different callback. + HTTP_ServerMetAuto, + HTTP_VersionCheck, +- HTTP_NodesDat ++ HTTP_NodesDat, ++ HTTP_AdunanzaConf + }; + + DECLARE_LOCAL_EVENT_TYPE(wxEVT_MULE_NOTIFY_EVENT, wxEVT_USER_FIRST+NOTIFY_EVENT) +diff -urdpN ../aMule-2.1.3-orig/src/KadDlg.cpp ./src/KadDlg.cpp +--- ../aMule-2.1.3-orig/src/KadDlg.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/KadDlg.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -93,13 +93,13 @@ void CKadDlg::SetUpdatePeriod(int step) + + void CKadDlg::SetGraphColors() + { +- static const char aTrend[] = { 2, 1, 0 }; +- static const int aRes[] = { IDC_C0, IDC_C0_3, IDC_C0_2 }; ++ static const char aTrend[] = { 3, 2, 1, 0 }; ++ static const int aRes[] = { IDC_C1, IDC_C0, IDC_C0_3, IDC_C0_2 }; + + m_kad_scope->SetBackgroundColor(CStatisticsDlg::getColors(0)); + m_kad_scope->SetGridColor(CStatisticsDlg::getColors(1)); + +- for (size_t i = 0; i < 3; ++i) { ++ for (size_t i = 0; i < 4; ++i) { + m_kad_scope->SetPlotColor(CStatisticsDlg::getColors(12 + i), aTrend[i]); + + CColorFrameCtrl* ctrl = CastChild(aRes[i], CColorFrameCtrl); +@@ -111,25 +111,35 @@ void CKadDlg::SetGraphColors() + + void CKadDlg::UpdateGraph(bool bStatsVisible, const GraphUpdateInfo& update) + { +- const float* apfKad[] = { &update.kadnodes[0], &update.kadnodes[1], &update.kadnodes[2] }; ++ const float* apfKad[] = { &update.kadnodes[0], &update.kadnodes[1], &update.kadnodes[2] , &update.kadnodes[3] }; + unsigned nodeCount = static_cast(update.kadnodes[2]); ++ unsigned activeNodeCount = static_cast(update.kadnodes[3]); + + if (!bStatsVisible) { + m_kad_scope->DelayPoints(); + } else { ++ float range = m_kad_scope->GetUpperLimit(); ++ + // Check the current node-count to see if we should increase the graph height +- if (m_kad_scope->GetUpperLimit() < update.kadnodes[2]) { ++ if (range > update.kadnodes[1]*1.5) { ++ // If the range is really higher than the average adjust this ++ range = update.kadnodes[1]*1.5; ++ } ++ ++ if (range < update.kadnodes[2]) { + // Grow the limit by 50 sized increments. +- m_kad_scope->SetRanges(0.0, ((nodeCount + 49) / 50) * 50); ++ range = ((nodeCount + 49) / 50) * 50; + } + ++ m_kad_scope->SetRanges(0.0, range); ++ + m_kad_scope->AppendPoints(update.timestamp, apfKad); + } + + wxStaticText* label = CastChild( wxT("nodesListLabel"), wxStaticText ); + wxCHECK_RET(label, wxT("Failed to find kad-nodes label")); + +- label->SetLabel(wxString::Format(_("Nodes (%u)"), nodeCount)); ++ label->SetLabel(wxString::Format(_("Active nodes %u (total %u)"), activeNodeCount, nodeCount)); + label->GetParent()->Layout(); + } + +diff -urdpN ../aMule-2.1.3-orig/src/kademlia/kademlia/Entry.h ./src/kademlia/kademlia/Entry.h +--- ../aMule-2.1.3-orig/src/kademlia/kademlia/Entry.h 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/kademlia/kademlia/Entry.h 2006-06-12 18:30:05.000000000 +0200 +@@ -81,6 +81,19 @@ public: + return 0; + } + ++ float GetFloatTagValue(const wxString& tagname) const ++ { ++ TagList::const_iterator it; ++ Kademlia::CTag* tag; ++ for (it = taglist.begin(); it != taglist.end(); ++it) { ++ tag = *it; ++ if (!tag->m_name.Cmp(tagname) && tag->IsFloat()) { ++ return tag->GetFloat(); ++ } ++ } ++ return 0.f; ++ } ++ + wxString GetStrTagValue(const wxString& tagname) const + { + TagList::const_iterator it; +diff -urdpN ../aMule-2.1.3-orig/src/kademlia/kademlia/Indexed.cpp ./src/kademlia/kademlia/Indexed.cpp +--- ../aMule-2.1.3-orig/src/kademlia/kademlia/Indexed.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/kademlia/kademlia/Indexed.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -48,12 +48,16 @@ there client on the eMule forum.. + #include "../net/KademliaUDPListener.h" + #include "../utils/UInt128.h" + #include "../../OtherFunctions.h" ++#include + #include "../kademlia/Tag.h" + #include "../io/FileIO.h" + #include "../io/IOException.h" + #include "amule.h" + #include "Preferences.h" + #include "Logger.h" ++#include //for pow in debug ++#include "../../NetworkFunctions.h" //needed still for debug ++#include "RemoteSettings.h" + + #include + +@@ -74,9 +78,9 @@ wxString CIndexed::m_loadfilename; + + CIndexed::CIndexed() + { +- m_sfilename = theApp.ConfigDir + wxT("src_index.dat"); +- m_kfilename = theApp.ConfigDir + wxT("key_index.dat"); +- m_loadfilename = theApp.ConfigDir + wxT("load_index.dat"); ++ m_sfilename = theApp.ConfigDir + wxT("src_index.TEST5"); ++ m_kfilename = theApp.ConfigDir + wxT("key_index.TEST5"); ++ m_loadfilename = theApp.ConfigDir + wxT("load_index.TEST5"); + m_lastClean = time(NULL) + (60*30); + m_totalIndexSource = 0; + m_totalIndexKeyword = 0; +@@ -120,8 +124,9 @@ void CIndexed::readFile(void) + + uint32 version = k_file.readUInt32(); + if( version < 2 ) { +- time_t savetime = k_file.readUInt32(); +- if( savetime > time(NULL) ) { ++ uint32 savetime = k_file.readUInt32(); ++ uint32 now = (uint32)time(NULL); ++ if( savetime + theApp.rm->kadRepublishTimeK > now ) { + CUInt128 id; + + k_file.readUInt128(&id); +@@ -144,6 +149,8 @@ void CIndexed::readFile(void) + while( tagList ) { + CTag* tag = k_file.readTag(); + if(tag) { ++ uint32 tmpValue; ++ + if (!tag->m_name.Cmp(wxT(TAG_FILENAME))) { + toaddN->fileName = tag->GetStr(); + KadTagStrMakeLower(toaddN->fileName); // Make lowercase, the search code expects lower case strings! +@@ -162,6 +169,22 @@ void CIndexed::readFile(void) + } else if (!tag->m_name.Cmp(wxT(TAG_SOURCEUPORT))) { + toaddN->udpport = tag->GetInt(); + toaddN->taglist.push_back(tag); ++ // Mod Adu ++ // lupz ++ // riallineo alla data attuale le date memorizzate ++ // รจ necessario per manterenere un comportamento coerente anche tra i ++ // muli che non stanno online h24 ++ } else if ( !tag->m_name.Cmp(wxT(TAG_KADFIRSTPUBLISH)) || ++ !tag->m_name.Cmp(wxT(TAG_KADLASTPUBLISH)) || ++ !tag->m_name.Cmp(wxT(TAG_KADCOMPLETE_FIRSTPUBLISH)) || ++ !tag->m_name.Cmp(wxT(TAG_KADCOMPLETE_LASTPUBLISH))) ++ { ++ wxString tmpTagName = wxString(tag->m_name); ++ tmpValue = tag->GetInt() + (now - savetime); ++ delete tag; ++ tag = new CTagUInt32(tmpTagName, tmpValue); ++ toaddN->taglist.push_back(tag); ++ // Fine mod adu + } else { + toaddN->taglist.push_back(tag); + } +@@ -171,9 +194,10 @@ void CIndexed::readFile(void) + toaddN->keyID.setValue(keyID); + toaddN->sourceID.setValue(sourceID); + uint8 load = 0; +- if(AddKeyword(keyID, sourceID, toaddN, load)) { ++ if(AddKeyword(keyID, sourceID, toaddN, load, true)) { + totalKeyword++; + } else { ++ AddDebugLogLineM( false, logKadIndex, CFormat(wxT("Scartato file: %s")) % toaddN->fileName); + delete toaddN; + } + numName--; +@@ -293,7 +317,7 @@ CIndexed::~CIndexed() + uint32 version = 1; + s_file.writeUInt32(version); + +- s_file.writeUInt32(time(NULL)+KADEMLIAREPUBLISHTIMES); ++ s_file.writeUInt32(time(NULL)+theApp.rm->kadRepublishTimeS); + + s_file.writeUInt32(m_Sources_map.size()); + SrcHashMap::iterator itSrcHash = m_Sources_map.begin(); +@@ -333,7 +357,7 @@ CIndexed::~CIndexed() + uint32 version = 1; + k_file.writeUInt32(version); + +- k_file.writeUInt32(time(NULL)+KADEMLIAREPUBLISHTIMEK); ++ k_file.writeUInt32(time(NULL)); + + k_file.writeUInt128(Kademlia::CKademlia::getPrefs()->getKadID()); + +@@ -486,7 +510,7 @@ void CIndexed::clean(void) + m_lastClean = time(NULL) + MIN2S(30); + } + +-bool CIndexed::AddKeyword(const CUInt128& keyID, const CUInt128& sourceID, Kademlia::CEntry* entry, uint8& load) ++bool CIndexed::AddKeyword(const CUInt128& keyID, const CUInt128& sourceID, Kademlia::CEntry* entry, uint8& load,bool loading) + { + if( !entry ) { + return false; +@@ -503,9 +527,21 @@ bool CIndexed::AddKeyword(const CUInt128 + + KeyHashMap::iterator itKeyHash = m_Keyword_map.find(keyID); + KeyHash* currKeyHash = NULL; ++ float avail = 1.f, cavail = 1.f; ++ uint32 now = (uint32)time(NULL); ++ + if(itKeyHash == m_Keyword_map.end()) { + Source* currSource = new Source; + currSource->sourceID.setValue(sourceID); ++ if (!loading) { ++ entry->taglist.push_back(new CTagFloat(TAG_KADSOURCES, avail)); ++ entry->taglist.push_back(new CTagUInt32(TAG_KADFIRSTPUBLISH, now)); ++ entry->taglist.push_back(new CTagUInt32(TAG_KADLASTPUBLISH, now)); ++ ++ entry->taglist.push_back(new CTagFloat(TAG_KADCOMPLETE_SOURCES, cavail)); ++ entry->taglist.push_back(new CTagUInt32(TAG_KADCOMPLETE_FIRSTPUBLISH, now)); ++ entry->taglist.push_back(new CTagUInt32(TAG_KADCOMPLETE_LASTPUBLISH, now)); ++ } + currSource->entryList.push_front(entry); + currKeyHash = new KeyHash; + currKeyHash->keyID.setValue(keyID); +@@ -526,24 +562,71 @@ bool CIndexed::AddKeyword(const CUInt128 + CSourceKeyMap::iterator itSource = currKeyHash->m_Source_map.find(sourceID); + if(itSource != currKeyHash->m_Source_map.end()) { + currSource = itSource->second; ++ Kademlia::CEntry* currEntry = NULL; ++ uint32 firstPublish = now, cfirstPublish = now; ++ + if (currSource->entryList.size() > 0) { +- if( indexTotal > KADEMLIAMAXINDEX - 5000 ) { +- load = 100; +- //We are in a hot node.. If we continued to update all the publishes +- //while this index is full, popular files will be the only thing you index. +- return false; +- } +- delete currSource->entryList.front(); ++ currEntry = currSource->entryList.front(); ++ avail = currEntry->GetFloatTagValue(wxT(TAG_KADSOURCES)); ++ firstPublish = currEntry->GetIntTagValue(wxT(TAG_KADFIRSTPUBLISH)); ++ uint32 publishInterval = (uint32)(now - currEntry->GetIntTagValue(wxT(TAG_KADLASTPUBLISH))); ++ uint32 pubkRTK = currEntry->GetIntTagValue(wxT(TAG_KADREPUBLISHTIMEK)); ++ ++ avail = calcolaStima( avail, firstPublish, publishInterval, pubkRTK, entry->ip == currEntry->ip, now); ++ ++ cavail = currEntry->GetFloatTagValue(wxT(TAG_KADCOMPLETE_SOURCES)); ++ cfirstPublish = currEntry->GetIntTagValue(wxT(TAG_KADCOMPLETE_FIRSTPUBLISH)); ++ ++ uint32 complete = currEntry->GetIntTagValue(wxT(TAG_KADCOMPLETE)); ++ ++ if ( complete ) { ++ uint32 cpublishInterval = (uint32)(now - currEntry->GetIntTagValue(wxT(TAG_KADCOMPLETE_LASTPUBLISH))); ++ ++ cavail = calcolaStima( cavail, cfirstPublish, cpublishInterval, pubkRTK, entry->ip == currEntry->ip, now); ++ } ++ ++#if ADU_BETA_MAJ > 0 ++ ++ AddDebugLogLineM( false, logKadIndex, CFormat(wxT("Estimated %.0f (N: %.0f) sources after %s publish for ed2k://|file|%s|%u|%s|/")) ++ % avail ++ % normalizzaStima(avail, firstPublish, now) ++ % Uint32toStringIP(wxUINT32_SWAP_ALWAYS(entry->ip)) ++ % entry->fileName ++ % entry->size ++ % sourceID.toHexString() ); ++ ++ // END ++#endif ++ ++ delete currEntry; + currSource->entryList.pop_front(); + } else { + m_totalIndexKeyword++; + } + load = (indexTotal*100)/KADEMLIAMAXINDEX; ++ ++ entry->taglist.push_back(new CTagFloat(TAG_KADSOURCES, avail)); ++ entry->taglist.push_back(new CTagUInt32(TAG_KADFIRSTPUBLISH, firstPublish)); ++ entry->taglist.push_back(new CTagUInt32(TAG_KADLASTPUBLISH, now)); ++ ++ entry->taglist.push_back(new CTagFloat(TAG_KADCOMPLETE_SOURCES, cavail)); ++ entry->taglist.push_back(new CTagUInt32(TAG_KADCOMPLETE_FIRSTPUBLISH, cfirstPublish)); ++ entry->taglist.push_back(new CTagUInt32(TAG_KADCOMPLETE_LASTPUBLISH, now)); ++ + currSource->entryList.push_front(entry); + return true; + } else { + currSource = new Source; + currSource->sourceID.setValue(sourceID); ++ if (!loading) { ++ entry->taglist.push_back(new CTagFloat(TAG_KADSOURCES, avail)); ++ entry->taglist.push_back(new CTagUInt32(TAG_KADFIRSTPUBLISH, now)); ++ entry->taglist.push_back(new CTagUInt32(TAG_KADLASTPUBLISH, now)); ++ ++ entry->taglist.push_back(new CTagFloat(TAG_KADCOMPLETE_SOURCES, cavail)); ++ entry->taglist.push_back(new CTagUInt32(TAG_KADCOMPLETE_FIRSTPUBLISH, now)); ++ entry->taglist.push_back(new CTagUInt32(TAG_KADCOMPLETE_LASTPUBLISH, now)); ++ } + currSource->entryList.push_front(entry); + currKeyHash->m_Source_map[currSource->sourceID] = currSource; + m_totalIndexKeyword++; +@@ -593,18 +676,18 @@ bool CIndexed::AddSources(const CUInt128 + currSource->entryList.pop_front(); + delete currName; + currSource->entryList.push_front(entry); +- load = (size*100)/KADEMLIAMAXSOUCEPERFILE; ++ load = (size*100)/theApp.rm->kadMaxSrcFile; + return true; + } + } else { + //This should never happen! + currSource->entryList.push_front(entry); + wxASSERT(0); +- load = (size*100)/KADEMLIAMAXSOUCEPERFILE; ++ load = (size*100)/theApp.rm->kadMaxSrcFile; + return true; + } + } +- if( size > KADEMLIAMAXSOUCEPERFILE ) { ++ if( size > theApp.rm->kadMaxSrcFile ) { + Source* currSource = currSrcHash->m_Source_map.back(); + currSrcHash->m_Source_map.pop_back(); + wxASSERT(currSource!=NULL); +@@ -623,7 +706,7 @@ bool CIndexed::AddSources(const CUInt128 + currSource->entryList.push_front(entry); + currSrcHash->m_Source_map.push_front(currSource); + m_totalIndexSource++; +- load = (size*100)/KADEMLIAMAXSOUCEPERFILE; ++ load = (size*100)/theApp.rm->kadMaxSrcFile; + return true; + } + } +@@ -667,18 +750,18 @@ bool CIndexed::AddNotes(const CUInt128& + currNote->entryList.pop_front(); + delete currName; + currNote->entryList.push_front(entry); +- load = (size*100)/KADEMLIAMAXNOTESPERFILE; ++ load = (size*100)/theApp.rm->kadMaxNotFile; + return true; + } + } else { + //This should never happen! + currNote->entryList.push_front(entry); + wxASSERT(0); +- load = (size*100)/KADEMLIAMAXNOTESPERFILE; ++ load = (size*100)/theApp.rm->kadMaxNotFile; + return true; + } + } +- if( size > KADEMLIAMAXNOTESPERFILE ) { ++ if( size > theApp.rm->kadMaxNotFile ) { + Source* currNote = currNoteHash->m_Source_map.back(); + currNoteHash->m_Source_map.pop_back(); + wxASSERT(currNote!=NULL); +@@ -696,7 +779,7 @@ bool CIndexed::AddNotes(const CUInt128& + currNote->sourceID.setValue(sourceID); + currNote->entryList.push_front(entry); + currNoteHash->m_Source_map.push_front(currNote); +- load = (size*100)/KADEMLIAMAXNOTESPERFILE; ++ load = (size*100)/theApp.rm->kadMaxNotFile; + return true; + } + } +@@ -952,7 +1035,7 @@ void CIndexed::SendValidKeywordResult(co + currKeyHash = itKeyHash->second; + byte packet[1024*50]; + CByteIO bio(packet,sizeof(packet)); +- bio.writeByte(OP_KADEMLIAHEADER); ++ bio.writeByte(theApp.rm->kadOpcode); + bio.writeByte(KADEMLIA_SEARCH_RES); + bio.writeUInt128(keyID); + bio.writeUInt16(50); +@@ -975,7 +1058,7 @@ void CIndexed::SendValidKeywordResult(co + AddDebugLogLineM(false, logClientKadUDP, wxT("KadSearchRes ") + Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(ip), port)); + CKademlia::getUDPListener()->sendPacket(packet, len, ip, port); + bio.reset(); +- bio.writeByte(OP_KADEMLIAHEADER); ++ bio.writeByte(theApp.rm->kadOpcode); + bio.writeByte(KADEMLIA_SEARCH_RES); + bio.writeUInt128(keyID); + bio.writeUInt16(50); +@@ -1004,7 +1087,7 @@ void CIndexed::SendValidSourceResult(con + currSrcHash = itSrcHash->second; + byte packet[1024*50]; + CByteIO bio(packet,sizeof(packet)); +- bio.writeByte(OP_KADEMLIAHEADER); ++ bio.writeByte(theApp.rm->kadOpcode); + bio.writeByte(KADEMLIA_SEARCH_RES); + bio.writeUInt128(keyID); + bio.writeUInt16(50); +@@ -1025,7 +1108,7 @@ void CIndexed::SendValidSourceResult(con + AddDebugLogLineM(false, logClientKadUDP, wxT("KadSearchRes ") + Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(ip) , port)); + CKademlia::getUDPListener()->sendPacket(packet, len, ip, port); + bio.reset(); +- bio.writeByte(OP_KADEMLIAHEADER); ++ bio.writeByte(theApp.rm->kadOpcode); + bio.writeByte(KADEMLIA_SEARCH_RES); + bio.writeUInt128(keyID); + bio.writeUInt16(50); +@@ -1053,7 +1136,7 @@ void CIndexed::SendValidNoteResult(const + currNoteHash = itNote->second; + byte packet[1024*50]; + CByteIO bio(packet,sizeof(packet)); +- bio.writeByte(OP_KADEMLIAHEADER); ++ bio.writeByte(theApp.rm->kadOpcode); + bio.writeByte(KADEMLIA_SRC_NOTES_RES); + bio.writeUInt128(keyID); + bio.writeUInt16(50); +@@ -1074,7 +1157,7 @@ void CIndexed::SendValidNoteResult(const + AddDebugLogLineM(false, logClientKadUDP, wxT("KadNotesRes ") + Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(ip), port)); + CKademlia::getUDPListener()->sendPacket(packet, len, ip, port); + bio.reset(); +- bio.writeByte(OP_KADEMLIAHEADER); ++ bio.writeByte(theApp.rm->kadOpcode); + bio.writeByte(KADEMLIA_SRC_NOTES_RES); + bio.writeUInt128(keyID); + bio.writeUInt16(50); +diff -urdpN ../aMule-2.1.3-orig/src/kademlia/kademlia/Indexed.h ./src/kademlia/kademlia/Indexed.h +--- ../aMule-2.1.3-orig/src/kademlia/kademlia/Indexed.h 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/kademlia/kademlia/Indexed.h 2006-06-12 18:30:05.000000000 +0200 +@@ -122,7 +122,7 @@ public: + CIndexed(); + ~CIndexed(); + +- bool AddKeyword(const CUInt128& keyWordID, const CUInt128& sourceID, Kademlia::CEntry* entry, uint8& load); ++ bool AddKeyword(const CUInt128& keyWordID, const CUInt128& sourceID, Kademlia::CEntry* entry, uint8& load,bool loading = false); + bool AddSources(const CUInt128& keyWordID, const CUInt128& sourceID, Kademlia::CEntry* entry, uint8& load); + bool AddNotes(const CUInt128& keyID, const CUInt128& sourceID, Kademlia::CEntry* entry, uint8& load); + bool AddLoad(const CUInt128& keyID, uint32 time); +diff -urdpN ../aMule-2.1.3-orig/src/kademlia/kademlia/Prefs.cpp ./src/kademlia/kademlia/Prefs.cpp +--- ../aMule-2.1.3-orig/src/kademlia/kademlia/Prefs.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/kademlia/kademlia/Prefs.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -110,6 +110,13 @@ void CPrefs::readFile() + } catch (const CSafeIOException& e) { + AddDebugLogLineM(true, logKadPrefs, wxT("IO error while reading prefs: ") + e.what()); + } ++ ++ // Mod Adu ++ // lupz ++ // evitiamo di avere client con id tutto nullo ++ if (m_clientID == 0) ++ m_clientID.setValueRandom(); ++ // Fine mod Adu + } + + void CPrefs::writeFile() +diff -urdpN ../aMule-2.1.3-orig/src/kademlia/kademlia/Search.cpp ./src/kademlia/kademlia/Search.cpp +--- ../aMule-2.1.3-orig/src/kademlia/kademlia/Search.cpp 2006-02-11 02:23:21.000000000 +0100 ++++ ./src/kademlia/kademlia/Search.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -65,6 +65,9 @@ typedef CTag ed2kCTag; + #include "updownclient.h" + #include "Logger.h" + #include "../../Preferences.h" ++#include ++#include ++#include "RemoteSettings.h" + + #ifdef _DEBUG + #define new DEBUG_NEW +@@ -132,6 +135,10 @@ CSearch::~CSearch() + // WTF? + } + } ++ ++ if (!m_unique_found_srcs.empty() && temp) { ++ AddDebugLogLineM(false, logKadIndex, wxString::Format(wxT("Got total results %d for %s"), m_unique_found_srcs.size(), temp->GetFileName().c_str()) ); ++ } + } + + void CSearch::go(void) +@@ -264,7 +271,7 @@ void CSearch::processResponse(uint32 fro + + // Not interested in responses for FIND_NODE, will be added to contacts by udp listener + if (m_type == NODE) { +- AddDebugLogLineM(false, logKadSearch, wxT("Node type search result, discarding.")); ++ AddDebugLogLineM(false, logKadSearch, wxT("Node type search result, discarding. node: ") + Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(fromIP),fromPort)); + m_answers++; + m_possible.clear(); + delete results; +@@ -388,7 +395,7 @@ void CSearch::StorePacket() + break; + } + case STOREFILE: { +- AddDebugLogLineM(false, logKadSearch, wxT("Search result type: StoreFile")); ++ //AddDebugLogLineM(false, logKadSearch, wxT("Search result type: StoreFile")); + if( m_answers > SEARCHSTOREFILE_TOTAL ) { + prepareToStop(); + break; +@@ -437,7 +444,7 @@ void CSearch::StorePacket() + break; + } + case STOREKEYWORD: { +- AddDebugLogLineM(false, logKadSearch, wxT("Search result type: StoreKeyword")); ++ //AddDebugLogLineM(false, logKadSearch, wxT("Search result type: StoreKeyword")); + if( m_answers > SEARCHSTOREKEYWORD_TOTAL ) { + prepareToStop(); + break; +@@ -458,7 +465,7 @@ void CSearch::StorePacket() + break; + } + case STORENOTES: { +- AddDebugLogLineM(false, logKadSearch, wxT("Search result type: StoreNotes")); ++ //AddDebugLogLineM(false, logKadSearch, wxT("Search result type: StoreNotes")); + byte fileid[16]; + m_target.toByteArray(fileid); + CKnownFile* file = theApp.sharedfiles->GetFileByID(CMD4Hash(fileid)); +@@ -554,7 +561,7 @@ void CSearch::processResult(uint32 fromI + processResultNotes(fromIP, fromPort, answer, info); + break; + } +- AddDebugLogLineM(false, logKadSearch, wxT("Got result ") + type + wxT(" from ") + Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(fromIP),fromPort)); ++ //AddDebugLogLineM(false, logKadSearch, wxT("Got result ") + type + wxT(" from ") + Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(fromIP),fromPort)); + } + + void CSearch::processResultFile(uint32 WXUNUSED(fromIP), uint16 WXUNUSED(fromPort), const CUInt128 &answer, TagList *info) +@@ -602,6 +609,8 @@ void CSearch::processResultFile(uint32 W + } + delete info; + ++ m_unique_found_srcs[ip] = type; ++ + switch( type ) { + case 1: + case 3: { +@@ -675,7 +684,7 @@ void CSearch::processResultNotes(uint32 + } + } + +-void CSearch::processResultKeyword(uint32 WXUNUSED(fromIP), uint16 WXUNUSED(fromPort), const CUInt128 &answer, TagList *info) ++void CSearch::processResultKeyword(uint32 fromIP, uint16 fromPort, const CUInt128 &answer, TagList *info) + { + bool interested = false; + wxString name; +@@ -689,6 +698,9 @@ void CSearch::processResultKeyword(uint3 + wxString codec; + uint32 bitrate = 0; + uint32 availability = 0; ++ float kadavailability = 0.f; ++ uint32 first = 0; ++ uint32 last = 0; + + for (TagList::const_iterator it = info->begin(); it != info->end(); ++it) { + CTag* tag = *it; +@@ -714,6 +726,12 @@ void CSearch::processResultKeyword(uint3 + bitrate = tag->GetInt(); + } else if (!tag->m_name.Cmp(wxT(TAG_MEDIA_CODEC))) { + codec = tag->GetStr(); ++ } else if (!tag->m_name.Cmp(wxT(TAG_KADFIRSTPUBLISH))) { ++ first = tag->GetInt(); ++ } else if (!tag->m_name.Cmp(wxT(TAG_KADLASTPUBLISH))) { ++ last = tag->GetInt(); ++ } else if (!tag->m_name.Cmp(wxT(TAG_KADSOURCES))) { ++ kadavailability = tag->GetFloat(); + } else if (!tag->m_name.Cmp(wxT(TAG_SOURCES))) { + availability = tag->GetInt(); + if( availability > 65500 ) { +@@ -724,6 +742,8 @@ void CSearch::processResultKeyword(uint3 + } + delete info; + ++ kadavailability = normalizzaStima( kadavailability, first, last ); ++ + // Check that it matches original criteria + // generally this is ok, but with the transition of Kad from ACP to Unicode we may receive 'wrong' results in the next months which are + // actually not 'wrong' (don't ask for a detailed explanation) +@@ -770,7 +790,10 @@ void CSearch::processResultKeyword(uint3 + taglist.push_back(new ed2kCTag(TAG_MEDIA_BITRATE, bitrate)); + } + if (availability) { +- taglist.push_back(new ed2kCTag(TAG_SOURCES, availability)); ++ taglist.push_back(new ed2kCTag(TAG_COMPLETE_SOURCES, availability)); ++ } ++ if (kadavailability) { ++ taglist.push_back(new ed2kCTag(TAG_SOURCES, (uint32)kadavailability)); + } + + if (interested) { +@@ -797,19 +820,19 @@ void CSearch::sendFindValue(const CUInt1 + switch(m_type){ + case NODE: + case NODECOMPLETE: +- bio.WriteUInt8(KADEMLIA_FIND_NODE); ++ bio.WriteUInt8(theApp.rm->kadFindNode); + break; + case FILE: + case KEYWORD: + case FINDSOURCE: + case NOTES: +- bio.WriteUInt8(KADEMLIA_FIND_VALUE); ++ bio.WriteUInt8(theApp.rm->kadFindValue); + break; + case FINDBUDDY: + case STOREFILE: + case STOREKEYWORD: + case STORENOTES: +- bio.WriteUInt8(KADEMLIA_STORE); ++ bio.WriteUInt8(theApp.rm->kadStore); + break; + default: + AddDebugLogLineM(false, logKadSearch, wxT("Invalid search type. (CSearch::sendFindValue)")); +@@ -872,7 +895,9 @@ void CSearch::PreparePacketForTags( CByt + taglist.push_back(new CTagStr(TAG_FILENAME, file->GetFileName())); + taglist.push_back(new CTagUInt(TAG_FILESIZE, file->GetFileSize())); + taglist.push_back(new CTagUInt(TAG_SOURCES, (uint32)file->m_nCompleteSourcesCount)); +- ++ taglist.push_back(new CTagUInt32(TAG_KADREPUBLISHTIMEK, theApp.rm->kadRepublishTimeK)); ++ taglist.push_back(new CTagUInt(TAG_KADCOMPLETE, ( file->IsPartFile() ? 0 : 1 ))); ++ + // eD2K file type (Audio, Video, ...) + // NOTE: Archives and CD-Images are published with file type "Pro" + wxString strED2KFileType(GetED2KFileTypeSearchTerm(GetED2KFileTypeID(file->GetFileName()))); +@@ -953,7 +978,7 @@ void CSearch::PreparePacket(void) + } + if( count > 100 ) { + bio3 = new CByteIO(packet3,sizeof(packet3)); +- bio3->writeByte(OP_KADEMLIAHEADER); ++ bio3->writeByte(theApp.rm->kadOpcode); + bio3->writeByte(KADEMLIA_PUBLISH_REQ); + bio3->writeUInt128(m_target); + bio3->writeUInt16(count-100); +@@ -973,7 +998,7 @@ void CSearch::PreparePacket(void) + } + if( count > 50 ) { + bio2 = new CByteIO(packet2,sizeof(packet2)); +- bio2->writeByte(OP_KADEMLIAHEADER); ++ bio2->writeByte(theApp.rm->kadOpcode); + bio2->writeByte(KADEMLIA_PUBLISH_REQ); + bio2->writeUInt128(m_target); + bio2->writeUInt16(count-50); +@@ -993,7 +1018,7 @@ void CSearch::PreparePacket(void) + } + if( count > 0 ) { + bio1 = new CByteIO(packet1,sizeof(packet1)); +- bio1->writeByte(OP_KADEMLIAHEADER); ++ bio1->writeByte(theApp.rm->kadOpcode); + bio1->writeByte(KADEMLIA_PUBLISH_REQ); + bio1->writeUInt128(m_target); + bio1->writeUInt16(count); +diff -urdpN ../aMule-2.1.3-orig/src/kademlia/kademlia/Search.h ./src/kademlia/kademlia/Search.h +--- ../aMule-2.1.3-orig/src/kademlia/kademlia/Search.h 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/kademlia/kademlia/Search.h 2006-06-12 18:30:05.000000000 +0200 +@@ -148,6 +148,7 @@ private: + ContactMap m_best; + ContactList m_delete; + ContactMap m_inUse; ++ std::map m_unique_found_srcs; + }; + + } // End namespace +diff -urdpN ../aMule-2.1.3-orig/src/kademlia/net/KademliaUDPListener.cpp ./src/kademlia/net/KademliaUDPListener.cpp +--- ../aMule-2.1.3-orig/src/kademlia/net/KademliaUDPListener.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/kademlia/net/KademliaUDPListener.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -58,6 +58,11 @@ there client on the eMule forum.. + #include "../../Logger.h" + #include + #include "../../Preferences.h" ++#include "../../RemoteSettings.h" ++ ++// Stefano Picerno: ADunanzaA Mod ++#include "../../AdunanzA.h" ++// FIne mod + + #include + #include +@@ -93,6 +98,8 @@ void CKademliaUDPListener::sendMyDetails + bio.WriteUInt16(thePrefs::GetEffectiveUDPPort()); + bio.WriteUInt16(thePrefs::GetPort()); + bio.WriteUInt8(0); ++ if (opcode==KADEMLIA_HELLO_REQ || opcode==KADEMLIA_HELLO_RES) ++ AddDebugLogLineM(false, logClientKadUDP, CFormat(wxT("Hello to %s")) % Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(ip), port)); + sendPacket(&bio, opcode, ip, port); + } + +@@ -115,7 +122,7 @@ void CKademliaUDPListener::publishPacket + //We need to get the tag lists working with CMemFiles.. + byte packet[1024]; + CByteIO bio(packet, sizeof(packet)); +- bio.writeByte(OP_KADEMLIAHEADER); ++ bio.writeByte(theApp.rm->kadOpcode); + bio.writeByte(KADEMLIA_PUBLISH_REQ); + bio.writeUInt128(targetID); + //We only use this for publishing sources now.. So we always send one here.. +@@ -128,6 +135,13 @@ void CKademliaUDPListener::publishPacket + + void CKademliaUDPListener::processPacket(const byte* data, uint32 lenData, uint32 ip, uint16 port) + { ++ // Stefano Picerno: Modifica Adu ++ if (!AduIsValidKaduAddress( ip ) ) ++ { ++ AddDebugLogLineM(false, logKadMain, CFormat(wxT("Skipping processPacket from non kADU %s")) % Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(ip), port)); ++ return; ++ } ++ // Fine Modifica + //Update connection state only when it changes. + bool curCon = CKademlia::getPrefs()->hasHadContact(); + CKademlia::getPrefs()->setLastContact(); +@@ -228,6 +242,13 @@ void CKademliaUDPListener::processPacket + + void CKademliaUDPListener::addContact( const byte *data, uint32 lenData, uint32 ip, uint16 port, uint16 tport) + { ++ // Stefano Picerno: mod adu ++ if (!AduIsValidKaduAddress( ip ) ) ++ { ++ AddDebugLogLineM(false, logKadMain, CFormat(wxT("Skipping addContact non kADU %s")) % Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(ip), port)); ++ return; ++ } ++ // Fine Modifica + CMemFile bio((byte*)data, lenData); + CUInt128 id = bio.ReadUInt128(); + bio.ReadUInt32(); +@@ -253,10 +274,13 @@ void CKademliaUDPListener::addContact( c + } + } + +-void CKademliaUDPListener::addContacts( const byte *data, uint32 lenData, uint16 numContacts) ++bool CKademliaUDPListener::addContacts( const byte *data, uint32 lenData, uint16 numContacts) + { + CMemFile bio((byte*)data, lenData ); + CRoutingZone *routingZone = CKademlia::getRoutingZone(); ++ ++ bool bOnlyFastweb = true; ++ + for (uint16 i=0; iadd(id, ip, port, tport, type); ++ if (AduIsValidKaduAddress( ip )) ++ routingZone->add(id, ip, port, tport, type); ++ else ++ bOnlyFastweb = false; + } + } ++ ++ return bOnlyFastweb; + } + + //KADEMLIA_BOOTSTRAP_REQ +@@ -334,7 +363,12 @@ void CKademliaUDPListener::processBootst + } + + // Add these contacts to the list. +- addContacts(packetData+2, lenPacket-2, numContacts); ++ if (!addContacts(packetData+2, lenPacket-2, numContacts)) ++ { ++ // This packet did contain NON fastweb addresses ++ // ++ // TODO: Add to blacklist ++ } + // Send sender to alive. + CKademlia::getRoutingZone()->setAlive(ip, port); + } +@@ -398,7 +432,11 @@ void CKademliaUDPListener::processKademl + // bool flag2 = (type >> 7); //Reserved + // bool flag3 = (type >> 8); //Reserved + +- type = type & 0x1F; ++ int req=type; ++ ++ //type = type & 0x1F; ++ type=std::min((int)type,56); ++ + if( type == 0 ) { + throw wxString::Format(wxT("***NOTE: Received wrong type (0x%02x) in "), type) + wxString::FromAscii(__FUNCTION__); + } +@@ -419,10 +457,12 @@ void CKademliaUDPListener::processKademl + CKademlia::getRoutingZone()->getClosestTo(2, target, distance, (int)type, &results); + uint16 count = (uint16)results.size(); + ++ AddDebugLogLineM(false, logKadRouting, CFormat(wxT("KadRes %s requested: %u max: %u found: %u")) % Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(ip), port) % req % type % count); ++ + // Write response +- // Max count is 32. size 817.. +- // 16 + 1 + 25(32) +- CMemFile bio2( 817 ); ++ // Max count is 56. size 1417.. ++ // 16 + 1 + 25(56) ++ CMemFile bio2( 1417 ); + bio2.WriteUInt128(target); + bio2.WriteUInt8((byte)count); + CContact *c; +@@ -462,6 +502,7 @@ void CKademliaUDPListener::processKademl + CMemFile bio((byte*)packetData, lenPacket); + CUInt128 target = bio.ReadUInt128(); + uint16 numContacts = bio.ReadUInt8(); ++ AddDebugLogLineM(false, logKadRouting, CFormat(wxT("KadRes %s found: %u")) % Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(ip), port) % numContacts); + + // Verify packet is expected size + if (lenPacket != (uint32)(16+1 + (16+4+2+2+1)*numContacts)) { +@@ -480,7 +521,7 @@ void CKademliaUDPListener::processKademl + uint16 contactPort = bio.ReadUInt16(); + uint16 tport = bio.ReadUInt16(); + byte type = bio.ReadUInt8(); +- if(::IsGoodIPPort(wxUINT32_SWAP_ALWAYS(contactIP),contactPort)) { ++ if(::IsGoodIPPort(wxUINT32_SWAP_ALWAYS(contactIP),contactPort) && AduIsValidKaduAddress(contactIP)) { + routingZone->add(id, contactIP, contactPort, tport, type); + results->push_back(new CContact(id, contactIP, contactPort, tport, target)); + } +@@ -725,6 +766,7 @@ void CKademliaUDPListener::processSearch + CSearchManager::processResult(target, ip, port, answer, tags); + count--; + } ++ AddDebugLogLineM(false, logKadSearch, wxT("Got result from ") + Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(ip),port)); + } + + //KADEMLIA_PUBLISH_REQ +@@ -1191,6 +1233,14 @@ void CKademliaUDPListener::processCallba + + void CKademliaUDPListener::sendPacket(const byte *data, uint32 lenData, uint32 destinationHost, uint16 destinationPort) + { ++ // inizio mod Adu ++ if (!AduIsValidKaduAddress( destinationHost ) ) ++ { ++ AddDebugLogLineM(false, logKadMain, CFormat(wxT("Skipping sendPacket to non kADU %s")) % Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(destinationHost), destinationPort)); ++ return; ++ } ++ // Fine mod Adu ++ + //This is temp.. The entire Kad code will be rewritten using CMemFile and send a Packet object directly. + CMemFile mem_data((byte*)data+2,lenData-2); + sendPacket(&mem_data,data[1],destinationHost, destinationPort); +@@ -1198,13 +1248,28 @@ void CKademliaUDPListener::sendPacket(co + + void CKademliaUDPListener::sendPacket(const byte *data, uint32 lenData, byte opcode, uint32 destinationHost, uint16 destinationPort) + { ++ // inizio mod Adu ++ if (!AduIsValidKaduAddress( destinationHost ) ) ++ { ++ AddDebugLogLineM(false, logKadMain, CFormat(wxT("Skipping sendPacket to non kADU %s")) % Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(destinationHost), destinationPort)); ++ return; ++ } ++ // Fine mod Adu ++ + CMemFile mem_data((byte*)data,lenData); + sendPacket(&mem_data,opcode,destinationHost, destinationPort); + } + + void CKademliaUDPListener::sendPacket(CMemFile *data, byte opcode, uint32 destinationHost, uint16 destinationPort) + { +- CPacket* packet = new CPacket(data, OP_KADEMLIAHEADER, opcode); ++ // inizio mod Adu ++ if (!AduIsValidKaduAddress( destinationHost ) ) ++ { ++ AddDebugLogLineM(false, logKadMain, CFormat(wxT("Skipping sendPacket to non kADU %s")) % Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(destinationHost), destinationPort)); ++ return; ++ } ++ // Fine mod Adu ++ CPacket* packet = new CPacket(data, theApp.rm->kadOpcode, opcode); + if( packet->GetPacketSize() > 200 ) { + packet->PackPacket(); + } +diff -urdpN ../aMule-2.1.3-orig/src/kademlia/net/KademliaUDPListener.h ./src/kademlia/net/KademliaUDPListener.h +--- ../aMule-2.1.3-orig/src/kademlia/net/KademliaUDPListener.h 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/kademlia/net/KademliaUDPListener.h 2006-06-12 18:30:05.000000000 +0200 +@@ -72,7 +72,8 @@ public: + + private: + void addContact (const byte* data, uint32 lenData, uint32 ip, uint16 port, uint16 tport = 0); +- void addContacts(const byte* data, uint32 lenData, uint16 numContacts); ++ // Stefano Picerno: Aggiunto il valore di ritorno. Se e' true, tutti i contatti sono validi e sono stati aggiunti. ++ bool addContacts(const byte* data, uint32 lenData, uint16 numContacts); + static SSearchTerm* CreateSearchExpressionTree(CMemFile& bio, int iLevel); + static void Free(SSearchTerm* pSearchTerms); + +diff -urdpN ../aMule-2.1.3-orig/src/kademlia/routing/Contact.cpp ./src/kademlia/routing/Contact.cpp +--- ../aMule-2.1.3-orig/src/kademlia/routing/Contact.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/kademlia/routing/Contact.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -54,6 +54,9 @@ using namespace Kademlia; + CContact::~CContact() + { + theStats::RemoveKadNode(); ++ ++ if (m_type<3) ++ theStats::RemoveActiveKadNode(); + } + + CContact::CContact() +@@ -152,11 +155,18 @@ void CContact::checkingType() + m_expires = time(NULL) + MIN2S(2); + m_type++; + ++ if (m_type==3) ++ theStats::RemoveActiveKadNode(); ++ + } + + void CContact::updateType() + { + uint32 hours = (time(NULL)-m_created)/HR2S(1); ++ ++ if (m_type>2) ++ theStats::AddActiveKadNode(); ++ + switch(hours) { + case 0: + m_type = 2; +diff -urdpN ../aMule-2.1.3-orig/src/kademlia/routing/RoutingZone.cpp ./src/kademlia/routing/RoutingZone.cpp +--- ../aMule-2.1.3-orig/src/kademlia/routing/RoutingZone.cpp 2006-03-10 05:07:58.000000000 +0100 ++++ ./src/kademlia/routing/RoutingZone.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -64,6 +64,13 @@ there client on the eMule forum.. + #include "../../Logger.h" + #include "../../NetworkFunctions.h" + #include "../../ArchSpecific.h" ++#include "../../GuiEvents.h" ++#include ++#include "../../HTTPDownload.h" // Needed for CHTTPDownloadThreadBase ++// Stefano Picerno: MOd ADunanza ++#include "../../AdunanzA.h" ++// Fine mod ++ + + #warning EC + #ifndef AMULE_DAEMON +@@ -140,8 +147,9 @@ CRoutingZone::~CRoutingZone() + + void CRoutingZone::readFile(void) + { ++ uint32 numContacts = 0; ++ + try { +- uint32 numContacts = 0; + CFile file; + if (file.Open(m_filename, CFile::read)) { + +@@ -154,6 +162,7 @@ void CRoutingZone::readFile(void) + byte type = file.ReadUInt8(); + if(IsGoodIPPort(wxUINT32_SWAP_ALWAYS(ip),udpPort)) { + if( type < 4) { ++ + add(id, ip, udpPort, tcpPort, type); + } + } +@@ -166,6 +175,15 @@ void CRoutingZone::readFile(void) + } catch (const CSafeIOException& e) { + AddDebugLogLineM(false, logKadRouting, wxT("IO error in CRoutingZone::readFile: ") + e.what()); + } ++ ++ if (numContacts == 0) { ++ wxString strURL(wxT(ADU_NODES_DAT)); ++ wxString tmpFile(m_filename + wxT(".download")); ++ ++ CHTTPDownloadThread *downloader = new CHTTPDownloadThread(strURL, tmpFile, HTTP_NodesDat); ++ downloader->Create(); ++ downloader->Run(); ++ } + } + + void CRoutingZone::writeFile(void) +@@ -176,7 +194,8 @@ void CRoutingZone::writeFile(void) + CFile file; + if (file.Open(m_filename, CFile::write)) { + ContactList contacts; +- getBootstrapContacts(&contacts, 200); ++ //getBootstrapContacts(&contacts, 200); ++ getAllEntries(&contacts); + file.WriteUInt32((uint32)std::min((int)contacts.size(), CONTACT_FILE_LIMIT)); + ContactList::const_iterator it; + for (it = contacts.begin(); it != contacts.end(); ++it) { +@@ -216,9 +235,12 @@ bool CRoutingZone::add(const CUInt128 &i + + //AddDebugLogLineM(false, logKadMain, wxT("Adding a contact (routing) with ip ") + Uint32_16toStringIP_Port(wxUINT32_SWAP_ALWAYS(ip),port)); + +- if (id == me) { ++ // Mod Adu ++ // lupz ++ // l'id tutto nullo non e' valido su kadu ++ if (id == me || id == 0) + return false; +- } ++ // Fine mod Adu + + CUInt128 distance(me); + distance.XOR(id); +@@ -573,10 +595,21 @@ uint32 CRoutingZone::getBootstrapContact + if (top.size() > 0) { + ContactList::const_iterator it; + for (it = top.begin(); it != top.end(); ++it) { +- results->push_back(*it); +- retVal++; +- if (retVal == maxRequired) { +- break; ++ // Mod Adu ++ // Emanem ++ // Inserisco un nodo nei risultati se e solo se ha un ++ // IP di FastWeb (occhio che l'IP va rigirato). ++ uint32 ip = (*it)->getIPAddress(); ++ // if (AduIsFastWebIP(ntohl((*it)->getIPAddress()))) ++ // ++ // Stefano Picerno: Aggiungo un nodo nei risultati solo se e' ++ // valido = fastweb + non bannato ++ if (AduIsValidKaduAddress( ip ) ) { ++ results->push_back(*it); ++ retVal++; ++ if (retVal == maxRequired) { ++ break; ++ } + } + } + } +diff -urdpN ../aMule-2.1.3-orig/src/kademlia/routing/RoutingZone.h ./src/kademlia/routing/RoutingZone.h +--- ../aMule-2.1.3-orig/src/kademlia/routing/RoutingZone.h 2006-03-10 05:07:58.000000000 +0100 ++++ ./src/kademlia/routing/RoutingZone.h 2006-06-12 18:30:05.000000000 +0200 +@@ -120,7 +120,7 @@ private: + static wxString m_filename; + static CUInt128 me; + +- void readFile(void); ++ void readFile(); + void writeFile(void); + + bool isLeaf(void) const; +diff -urdpN ../aMule-2.1.3-orig/src/KnownFile.cpp ./src/KnownFile.cpp +--- ../aMule-2.1.3-orig/src/KnownFile.cpp 2006-03-24 20:25:20.000000000 +0100 ++++ ./src/KnownFile.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -52,6 +52,7 @@ + #include "ClientList.h" // Needed for clientlist (buddy support) + #include "ArchSpecific.h" + #include "Logger.h" ++#include "RemoteSettings.h" + + #include "kademlia/kademlia/Entry.h" + +@@ -618,7 +619,7 @@ bool CKnownFile::LoadTagsFromFile(const + case FT_KADLASTPUBLISHSRC: + SetLastPublishTimeKadSrc( newtag.GetInt(), 0 ); + +- if(GetLastPublishTimeKadSrc() > (uint32)time(NULL)+KADEMLIAREPUBLISHTIMES) { ++ if(GetLastPublishTimeKadSrc() > (uint32)time(NULL)+theApp.rm->kadRepublishTimeS) { + //There may be a posibility of an older client that saved a random number here.. This will check for that.. + SetLastPublishTimeKadSrc(0, 0); + } +@@ -1038,22 +1039,31 @@ CPacket* CKnownFile::CreateSrcInfoPacket + // Updates priority of file if autopriority is activated + void CKnownFile::UpdateAutoUpPriority() + { ++ uint8 priority = PR_NORMAL; ++ ++ if (!IsAutoUpPriority()) ++ priority = GetUpPriority(); ++ ++ if ( priority == PR_POWERSHARE && m_nCompleteSourcesCount > 10) ++ priority = PR_VERYHIGH; ++ + if (IsAutoUpPriority()) { + uint32 queued = GetQueuedCount(); +- uint8 priority = PR_NORMAL; + +- if (queued > 20) { ++ if ( m_nCompleteSourcesCount > 0 && m_nCompleteSourcesCount < 8 ) { ++ priority = PR_VERYHIGH; ++ } else if (queued > 20) { + priority = PR_LOW; + } else if (queued > 1) { + priority = PR_NORMAL; + } else { + priority = PR_HIGH; + } ++ } + +- if (GetUpPriority() != priority) { +- SetUpPriority(priority, false); +- Notify_SharedFilesUpdateItem(this); +- } ++ if (GetUpPriority() != priority) { ++ SetUpPriority(priority, false); ++ Notify_SharedFilesUpdateItem(this); + } + } + +@@ -1063,7 +1073,7 @@ void CKnownFile::SetFileComment(const wx + SetLastPublishTimeKadNotes(0); + wxString strCfgPath = wxT("/") + m_abyFileHash.Encode() + wxT("/"); + +- wxConfigBase* cfg = wxConfigBase::Get(); ++ wxConfigBase* cfg = theApp.acfg; + cfg->Write( strCfgPath + wxT("Comment"), strNewComment); + + m_strComment = strNewComment; +@@ -1082,7 +1092,7 @@ void CKnownFile::SetFileRating(int8 iNew + if (m_iRating != iNewRating) { + SetLastPublishTimeKadNotes(0); + wxString strCfgPath = wxT("/") + m_abyFileHash.Encode() + wxT("/"); +- wxConfigBase* cfg = wxConfigBase::Get(); ++ wxConfigBase* cfg = theApp.acfg; + cfg->Write( strCfgPath + wxT("Rate"), iNewRating); + m_iRating = iNewRating; + +@@ -1113,12 +1123,12 @@ bool CKnownFile::PublishNotes() + } + + if(!GetFileComment().IsEmpty()) { +- m_lastPublishTimeKadNotes = (uint32)time(NULL)+KADEMLIAREPUBLISHTIMEN; ++ m_lastPublishTimeKadNotes = (uint32)time(NULL)+theApp.rm->kadRepublishTimeN; + return true; + } + + if(GetFileRating() != 0) { +- m_lastPublishTimeKadNotes = (uint32)time(NULL)+KADEMLIAREPUBLISHTIMEN; ++ m_lastPublishTimeKadNotes = (uint32)time(NULL)+theApp.rm->kadRepublishTimeN; + return true; + } + +@@ -1134,7 +1144,7 @@ bool CKnownFile::PublishSrc() + if( buddy ) { + lastBuddyIP = theApp.clientlist->GetBuddy()->GetIP(); + if( lastBuddyIP != m_lastBuddyIP ) { +- SetLastPublishTimeKadSrc( (uint32)time(NULL)+KADEMLIAREPUBLISHTIMES, lastBuddyIP ); ++ SetLastPublishTimeKadSrc( (uint32)time(NULL)+theApp.rm->kadRepublishTimeS, lastBuddyIP ); + return true; + } + } else { +@@ -1146,7 +1156,7 @@ bool CKnownFile::PublishSrc() + return false; + } + +- SetLastPublishTimeKadSrc((uint32)time(NULL)+KADEMLIAREPUBLISHTIMES,lastBuddyIP); ++ SetLastPublishTimeKadSrc((uint32)time(NULL)+theApp.rm->kadRepublishTimeS,lastBuddyIP); + return true; + + } +@@ -1166,11 +1176,11 @@ void CKnownFile::UpdatePartsInfo() + + if (flag) { + ArrayOfUInts16 count; +- count.Alloc(m_ClientUploadList.size()); ++ //count.Alloc(m_ClientUploadList.size()); + + SourceSet::iterator it = m_ClientUploadList.begin(); + for ( ; it != m_ClientUploadList.end(); it++ ) { +- if ( !(*it)->GetUpPartStatus().empty() && (*it)->GetUpPartCount() == partcount ) { ++ if ( !(*it)->GetUpPartStatus().empty() && (*it)->GetUpPartCount() == partcount && (*it)->IsAduClient() ) { + count.Add( (*it)->GetUpCompleteSourcesCount() ); + } + } +@@ -1254,6 +1264,9 @@ void CKnownFile::UpdatePartsInfo() + + void CKnownFile::UpdateUpPartsFrequency( CUpDownClient* client, bool increment ) + { ++ if (!client->IsAduClient()) ++ return; ++ + const BitVector& freq = client->GetUpPartStatus(); + + if ( m_AvailPartFrequency.GetCount() != GetPartCount() ) { +@@ -1312,7 +1325,7 @@ void CKnownFile::LoadComment() + #ifndef CLIENT_GUI + wxString strCfgPath = wxT("/") + m_abyFileHash.Encode() + wxT("/"); + +- wxConfigBase* cfg = wxConfigBase::Get(); ++ wxConfigBase* cfg = theApp.acfg; + + m_strComment = cfg->Read( strCfgPath + wxT("Comment"), wxEmptyString); + m_iRating = cfg->Read( strCfgPath + wxT("Rate"), 0l); +diff -urdpN ../aMule-2.1.3-orig/src/KnownFileList.cpp ./src/KnownFileList.cpp +--- ../aMule-2.1.3-orig/src/KnownFileList.cpp 2006-02-03 14:11:28.000000000 +0100 ++++ ./src/KnownFileList.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -36,7 +36,6 @@ + + #include + +- + CKnownFileList::CKnownFileList() + { + accepted = 0; +diff -urdpN ../aMule-2.1.3-orig/src/libs/ec/ECCodes.h ./src/libs/ec/ECCodes.h +--- ../aMule-2.1.3-orig/src/libs/ec/ECCodes.h 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/libs/ec/ECCodes.h 2006-06-12 18:30:05.000000000 +0200 +@@ -1329,7 +1329,8 @@ enum { + * May also contain a ::EC_TAG_STAT_NODE_VALUE child, and that will be displayed in brackets after this value. + * This only works for value types that require a \c %s format string. + */ +- EC_TAG_STAT_VALUE_TYPE ///< \c uint8 value describing the value of its parent (::EC_TAG_STAT_NODE_VALUE). See also the ::EC_STATTREE_NODE_VALUE_TYPE enum. ++ EC_TAG_STAT_VALUE_TYPE, ///< \c uint8 value describing the value of its parent (::EC_TAG_STAT_NODE_VALUE). See also the ::EC_STATTREE_NODE_VALUE_TYPE enum. ++ EC_TAG_PARTFILE_ADU_SOURCE_COUNT + }; + + +diff -urdpN ../aMule-2.1.3-orig/src/libs/ec/ECSpecialTags.h ./src/libs/ec/ECSpecialTags.h +--- ../aMule-2.1.3-orig/src/libs/ec/ECSpecialTags.h 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/libs/ec/ECSpecialTags.h 2006-06-12 18:30:05.000000000 +0200 +@@ -207,6 +207,7 @@ class CEC_PartFile_Tag : public CECTag { + wxString FileEd2kLink() { return GetTagByNameSafe(EC_TAG_PARTFILE_ED2K_LINK)->GetStringData(); } + uint8 FileStatus() { return GetTagByNameSafe(EC_TAG_PARTFILE_STATUS)->GetInt8Data(); } + uint16 SourceCount() { return GetTagByNameSafe(EC_TAG_PARTFILE_SOURCE_COUNT)->GetInt16Data(); } ++ uint16 AduSourceCount() { return GetTagByNameSafe(EC_TAG_PARTFILE_ADU_SOURCE_COUNT)->GetInt16Data(); } + uint16 SourceNotCurrCount() { return GetTagByNameSafe(EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT)->GetInt32Data(); } + uint16 SourceXferCount() { return GetTagByNameSafe(EC_TAG_PARTFILE_SOURCE_COUNT_XFER)->GetInt16Data(); } + uint16 SourceCountA4AF() { return GetTagByNameSafe(EC_TAG_PARTFILE_SOURCE_COUNT_A4AF)->GetInt16Data(); } +@@ -234,6 +235,7 @@ class CEC_PartFile_Tag : public CECTag { + void SetFileStatus(uint8 &value) { AssignIfExist(EC_TAG_PARTFILE_STATUS, value); } + + void SetSourceCount(uint16 &value) { AssignIfExist(EC_TAG_PARTFILE_SOURCE_COUNT, value); } ++ void SetAduSourceCount(uint16 &value) { AssignIfExist(EC_TAG_PARTFILE_ADU_SOURCE_COUNT, value); } + void SetSourceNotCurrCount(uint32 &value) { AssignIfExist(EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT, value); } + void SetSourceXferCount(uint16 &value) { AssignIfExist(EC_TAG_PARTFILE_SOURCE_COUNT_XFER, value); } + void SetSourceCountA4AF(uint16 &value) { AssignIfExist(EC_TAG_PARTFILE_SOURCE_COUNT_A4AF, value); } +diff -urdpN ../aMule-2.1.3-orig/src/Makefile.am ./src/Makefile.am +--- ../aMule-2.1.3-orig/src/Makefile.am 2006-01-30 19:53:03.000000000 +0100 ++++ ./src/Makefile.am 2006-06-12 18:30:05.000000000 +0200 +@@ -66,7 +66,6 @@ libmuleappcommon_a_SOURCES = \ + FileFunctions.cpp \ + MemFile.cpp \ + NetworkFunctions.cpp \ +- Packet.cpp \ + RLE.cpp \ + SafeFile.cpp \ + SHA.cpp \ +@@ -108,7 +107,6 @@ libmuleappgui_a_SOURCES = \ + EditServerListDlg.cpp \ + listctrl.cpp \ + MuleGifCtrl.cpp \ +- MuleListCtrl.cpp \ + MuleNotebook.cpp \ + MuleTextCtrl.cpp \ + FileDetailListCtrl.cpp \ +@@ -134,7 +132,6 @@ core_sources = \ + ExternalConn.cpp \ + Friend.cpp \ + FriendList.cpp \ +- HTTPDownload.cpp \ + IPFilter.cpp \ + KnownFileList.cpp \ + ListenSocket.cpp \ +@@ -164,6 +161,7 @@ gui_sources = \ + ClientDetailDialog.cpp \ + FileDetailDialog.cpp \ + KadDlg.cpp \ ++ MuleListCtrl.cpp \ + OScopeCtrl.cpp \ + PartFileConvert.cpp \ + PrefsUnifiedDlg.cpp \ +@@ -178,17 +176,20 @@ gui_sources = \ + ServerListCtrl.cpp \ + SharedFilesCtrl.cpp \ + MuleTrayIcon.cpp \ +- TransferWnd.cpp ++ TransferWnd.cpp + + remote_common_sources = \ + OtherFunctions.cpp + + common_sources = \ ++ AdunanzA.cpp \ ++ RemoteSettings.cpp \ + ClientCredits.cpp \ + ECSpecialMuleTags.cpp \ + KnownFile.cpp \ + GetTickCount.cpp \ + Logger.cpp \ ++ Packet.cpp \ + PartFile.cpp \ + Preferences.cpp \ + Proxy.cpp \ +@@ -196,6 +197,7 @@ common_sources = \ + Statistics.cpp \ + StatTree.cpp \ + SHAHashSet.cpp \ ++ HTTPDownload.cpp \ + $(remote_common_sources) + + # Libs +diff -urdpN ../aMule-2.1.3-orig/src/Makefile.in ./src/Makefile.in +--- ../aMule-2.1.3-orig/src/Makefile.in 2006-06-11 17:08:58.000000000 +0200 ++++ ./src/Makefile.in 2006-06-12 18:30:05.000000000 +0200 +@@ -83,8 +83,8 @@ libmuleappcommon_a_AR = $(AR) $(ARFLAGS) + libmuleappcommon_a_LIBADD = + am__libmuleappcommon_a_SOURCES_DIST = CFile.cpp DataToText.cpp \ + ED2KLink.cpp FileFunctions.cpp MemFile.cpp \ +- NetworkFunctions.cpp Packet.cpp RLE.cpp SafeFile.cpp SHA.cpp \ +- Tag.cpp Timer.cpp kademlia/utils/UInt128.cpp CryptoPP.cpp ++ NetworkFunctions.cpp RLE.cpp SafeFile.cpp SHA.cpp Tag.cpp \ ++ Timer.cpp kademlia/utils/UInt128.cpp CryptoPP.cpp + @USE_EMBEDDED_CRYPTO_TRUE@am__objects_1 = libmuleappcommon_a-CryptoPP.$(OBJEXT) + am_libmuleappcommon_a_OBJECTS = libmuleappcommon_a-CFile.$(OBJEXT) \ + libmuleappcommon_a-DataToText.$(OBJEXT) \ +@@ -92,7 +92,6 @@ am_libmuleappcommon_a_OBJECTS = libmulea + libmuleappcommon_a-FileFunctions.$(OBJEXT) \ + libmuleappcommon_a-MemFile.$(OBJEXT) \ + libmuleappcommon_a-NetworkFunctions.$(OBJEXT) \ +- libmuleappcommon_a-Packet.$(OBJEXT) \ + libmuleappcommon_a-RLE.$(OBJEXT) \ + libmuleappcommon_a-SafeFile.$(OBJEXT) \ + libmuleappcommon_a-SHA.$(OBJEXT) \ +@@ -126,7 +125,6 @@ am_libmuleappgui_a_OBJECTS = libmuleappg + libmuleappgui_a-EditServerListDlg.$(OBJEXT) \ + libmuleappgui_a-listctrl.$(OBJEXT) \ + libmuleappgui_a-MuleGifCtrl.$(OBJEXT) \ +- libmuleappgui_a-MuleListCtrl.$(OBJEXT) \ + libmuleappgui_a-MuleNotebook.$(OBJEXT) \ + libmuleappgui_a-MuleTextCtrl.$(OBJEXT) \ + libmuleappgui_a-FileDetailListCtrl.$(OBJEXT) \ +@@ -150,12 +148,11 @@ am__objects_2 = amule-AICHSyncThread.$(O + amule-DownloadQueue.$(OBJEXT) amule-EMSocket.$(OBJEXT) \ + amule-ECSpecialCoreTags.$(OBJEXT) amule-ExternalConn.$(OBJEXT) \ + amule-Friend.$(OBJEXT) amule-FriendList.$(OBJEXT) \ +- amule-HTTPDownload.$(OBJEXT) amule-IPFilter.$(OBJEXT) \ +- amule-KnownFileList.$(OBJEXT) amule-ListenSocket.$(OBJEXT) \ +- amule-MuleUDPSocket.$(OBJEXT) amule-SearchList.$(OBJEXT) \ +- amule-ServerConnect.$(OBJEXT) amule-ServerList.$(OBJEXT) \ +- amule-ServerSocket.$(OBJEXT) amule-ServerUDPSocket.$(OBJEXT) \ +- amule-SharedFileList.$(OBJEXT) \ ++ amule-IPFilter.$(OBJEXT) amule-KnownFileList.$(OBJEXT) \ ++ amule-ListenSocket.$(OBJEXT) amule-MuleUDPSocket.$(OBJEXT) \ ++ amule-SearchList.$(OBJEXT) amule-ServerConnect.$(OBJEXT) \ ++ amule-ServerList.$(OBJEXT) amule-ServerSocket.$(OBJEXT) \ ++ amule-ServerUDPSocket.$(OBJEXT) amule-SharedFileList.$(OBJEXT) \ + amule-UploadBandwidthThrottler.$(OBJEXT) \ + amule-UploadClient.$(OBJEXT) amule-UploadQueue.$(OBJEXT) \ + amule-Kademlia.$(OBJEXT) amule-Search.$(OBJEXT) \ +@@ -166,7 +163,8 @@ am__objects_3 = amule-amule-gui.$(OBJEXT + amule-AddFriend.$(OBJEXT) amule-ChatSelector.$(OBJEXT) \ + amule-ClientDetailDialog.$(OBJEXT) \ + amule-FileDetailDialog.$(OBJEXT) amule-KadDlg.$(OBJEXT) \ +- amule-OScopeCtrl.$(OBJEXT) amule-PartFileConvert.$(OBJEXT) \ ++ amule-MuleListCtrl.$(OBJEXT) amule-OScopeCtrl.$(OBJEXT) \ ++ amule-PartFileConvert.$(OBJEXT) \ + amule-PrefsUnifiedDlg.$(OBJEXT) amule-SearchDlg.$(OBJEXT) \ + amule-ServerWnd.$(OBJEXT) amule-SharedFilesWnd.$(OBJEXT) \ + amule-StatisticsDlg.$(OBJEXT) amule-SearchListCtrl.$(OBJEXT) \ +@@ -175,13 +173,15 @@ am__objects_3 = amule-amule-gui.$(OBJEXT + amule-ServerListCtrl.$(OBJEXT) amule-SharedFilesCtrl.$(OBJEXT) \ + amule-MuleTrayIcon.$(OBJEXT) amule-TransferWnd.$(OBJEXT) + am__objects_4 = amule-OtherFunctions.$(OBJEXT) +-am__objects_5 = amule-ClientCredits.$(OBJEXT) \ ++am__objects_5 = amule-AdunanzA.$(OBJEXT) \ ++ amule-RemoteSettings.$(OBJEXT) amule-ClientCredits.$(OBJEXT) \ + amule-ECSpecialMuleTags.$(OBJEXT) amule-KnownFile.$(OBJEXT) \ + amule-GetTickCount.$(OBJEXT) amule-Logger.$(OBJEXT) \ +- amule-PartFile.$(OBJEXT) amule-Preferences.$(OBJEXT) \ +- amule-Proxy.$(OBJEXT) amule-Server.$(OBJEXT) \ +- amule-Statistics.$(OBJEXT) amule-StatTree.$(OBJEXT) \ +- amule-SHAHashSet.$(OBJEXT) $(am__objects_4) ++ amule-Packet.$(OBJEXT) amule-PartFile.$(OBJEXT) \ ++ amule-Preferences.$(OBJEXT) amule-Proxy.$(OBJEXT) \ ++ amule-Server.$(OBJEXT) amule-Statistics.$(OBJEXT) \ ++ amule-StatTree.$(OBJEXT) amule-SHAHashSet.$(OBJEXT) \ ++ amule-HTTPDownload.$(OBJEXT) $(am__objects_4) + am_amule_OBJECTS = $(am__objects_2) $(am__objects_3) $(am__objects_5) + amule_OBJECTS = $(am_amule_OBJECTS) + am__DEPENDENCIES_1 = +@@ -204,12 +204,11 @@ am__objects_7 = amuled-AICHSyncThread.$( + amuled-DownloadClient.$(OBJEXT) amuled-DownloadQueue.$(OBJEXT) \ + amuled-EMSocket.$(OBJEXT) amuled-ECSpecialCoreTags.$(OBJEXT) \ + amuled-ExternalConn.$(OBJEXT) amuled-Friend.$(OBJEXT) \ +- amuled-FriendList.$(OBJEXT) amuled-HTTPDownload.$(OBJEXT) \ +- amuled-IPFilter.$(OBJEXT) amuled-KnownFileList.$(OBJEXT) \ +- amuled-ListenSocket.$(OBJEXT) amuled-MuleUDPSocket.$(OBJEXT) \ +- amuled-SearchList.$(OBJEXT) amuled-ServerConnect.$(OBJEXT) \ +- amuled-ServerList.$(OBJEXT) amuled-ServerSocket.$(OBJEXT) \ +- amuled-ServerUDPSocket.$(OBJEXT) \ ++ amuled-FriendList.$(OBJEXT) amuled-IPFilter.$(OBJEXT) \ ++ amuled-KnownFileList.$(OBJEXT) amuled-ListenSocket.$(OBJEXT) \ ++ amuled-MuleUDPSocket.$(OBJEXT) amuled-SearchList.$(OBJEXT) \ ++ amuled-ServerConnect.$(OBJEXT) amuled-ServerList.$(OBJEXT) \ ++ amuled-ServerSocket.$(OBJEXT) amuled-ServerUDPSocket.$(OBJEXT) \ + amuled-SharedFileList.$(OBJEXT) \ + amuled-UploadBandwidthThrottler.$(OBJEXT) \ + amuled-UploadClient.$(OBJEXT) amuled-UploadQueue.$(OBJEXT) \ +@@ -218,13 +217,15 @@ am__objects_7 = amuled-AICHSyncThread.$( + amuled-Prefs.$(OBJEXT) amuled-RoutingZone.$(OBJEXT) \ + amuled-Contact.$(OBJEXT) + am__objects_8 = amuled-OtherFunctions.$(OBJEXT) +-am__objects_9 = amuled-ClientCredits.$(OBJEXT) \ ++am__objects_9 = amuled-AdunanzA.$(OBJEXT) \ ++ amuled-RemoteSettings.$(OBJEXT) amuled-ClientCredits.$(OBJEXT) \ + amuled-ECSpecialMuleTags.$(OBJEXT) amuled-KnownFile.$(OBJEXT) \ + amuled-GetTickCount.$(OBJEXT) amuled-Logger.$(OBJEXT) \ +- amuled-PartFile.$(OBJEXT) amuled-Preferences.$(OBJEXT) \ +- amuled-Proxy.$(OBJEXT) amuled-Server.$(OBJEXT) \ +- amuled-Statistics.$(OBJEXT) amuled-StatTree.$(OBJEXT) \ +- amuled-SHAHashSet.$(OBJEXT) $(am__objects_8) ++ amuled-Packet.$(OBJEXT) amuled-PartFile.$(OBJEXT) \ ++ amuled-Preferences.$(OBJEXT) amuled-Proxy.$(OBJEXT) \ ++ amuled-Server.$(OBJEXT) amuled-Statistics.$(OBJEXT) \ ++ amuled-StatTree.$(OBJEXT) amuled-SHAHashSet.$(OBJEXT) \ ++ amuled-HTTPDownload.$(OBJEXT) $(am__objects_8) + am_amuled_OBJECTS = amuled-amuled.$(OBJEXT) amuled-Timer.$(OBJEXT) \ + $(am__objects_7) $(am__objects_9) + amuled_OBJECTS = $(am_amuled_OBJECTS) +@@ -233,7 +234,7 @@ am__objects_10 = amulegui-amule-gui.$(OB + amulegui-ChatSelector.$(OBJEXT) \ + amulegui-ClientDetailDialog.$(OBJEXT) \ + amulegui-FileDetailDialog.$(OBJEXT) amulegui-KadDlg.$(OBJEXT) \ +- amulegui-OScopeCtrl.$(OBJEXT) \ ++ amulegui-MuleListCtrl.$(OBJEXT) amulegui-OScopeCtrl.$(OBJEXT) \ + amulegui-PartFileConvert.$(OBJEXT) \ + amulegui-PrefsUnifiedDlg.$(OBJEXT) \ + amulegui-SearchDlg.$(OBJEXT) amulegui-ServerWnd.$(OBJEXT) \ +@@ -247,13 +248,16 @@ am__objects_10 = amulegui-amule-gui.$(OB + amulegui-SharedFilesCtrl.$(OBJEXT) \ + amulegui-MuleTrayIcon.$(OBJEXT) amulegui-TransferWnd.$(OBJEXT) + am__objects_11 = amulegui-OtherFunctions.$(OBJEXT) +-am__objects_12 = amulegui-ClientCredits.$(OBJEXT) \ ++am__objects_12 = amulegui-AdunanzA.$(OBJEXT) \ ++ amulegui-RemoteSettings.$(OBJEXT) \ ++ amulegui-ClientCredits.$(OBJEXT) \ + amulegui-ECSpecialMuleTags.$(OBJEXT) \ + amulegui-KnownFile.$(OBJEXT) amulegui-GetTickCount.$(OBJEXT) \ +- amulegui-Logger.$(OBJEXT) amulegui-PartFile.$(OBJEXT) \ +- amulegui-Preferences.$(OBJEXT) amulegui-Proxy.$(OBJEXT) \ +- amulegui-Server.$(OBJEXT) amulegui-Statistics.$(OBJEXT) \ +- amulegui-StatTree.$(OBJEXT) amulegui-SHAHashSet.$(OBJEXT) \ ++ amulegui-Logger.$(OBJEXT) amulegui-Packet.$(OBJEXT) \ ++ amulegui-PartFile.$(OBJEXT) amulegui-Preferences.$(OBJEXT) \ ++ amulegui-Proxy.$(OBJEXT) amulegui-Server.$(OBJEXT) \ ++ amulegui-Statistics.$(OBJEXT) amulegui-StatTree.$(OBJEXT) \ ++ amulegui-SHAHashSet.$(OBJEXT) amulegui-HTTPDownload.$(OBJEXT) \ + $(am__objects_11) + am_amulegui_OBJECTS = amulegui-amule-remote-gui.$(OBJEXT) \ + $(am__objects_10) $(am__objects_12) +@@ -504,8 +508,8 @@ noinst_LIBRARIES = $(am__append_6) $(am_ + + # Common to core/gui/monolithic + libmuleappcommon_a_SOURCES = CFile.cpp DataToText.cpp ED2KLink.cpp \ +- FileFunctions.cpp MemFile.cpp NetworkFunctions.cpp Packet.cpp \ +- RLE.cpp SafeFile.cpp SHA.cpp Tag.cpp Timer.cpp \ ++ FileFunctions.cpp MemFile.cpp NetworkFunctions.cpp RLE.cpp \ ++ SafeFile.cpp SHA.cpp Tag.cpp Timer.cpp \ + kademlia/utils/UInt128.cpp $(am__append_11) + libmuleappcommon_a_CFLAGS = $(WX_CXXFLAGS) -I$(srcdir)/libs + libmuleappcommon_a_CXXFLAGS = $(WX_CXXFLAGS) -I$(srcdir)/libs +@@ -539,7 +543,6 @@ libmuleappgui_a_SOURCES = \ + EditServerListDlg.cpp \ + listctrl.cpp \ + MuleGifCtrl.cpp \ +- MuleListCtrl.cpp \ + MuleNotebook.cpp \ + MuleTextCtrl.cpp \ + FileDetailListCtrl.cpp \ +@@ -564,7 +567,6 @@ core_sources = \ + ExternalConn.cpp \ + Friend.cpp \ + FriendList.cpp \ +- HTTPDownload.cpp \ + IPFilter.cpp \ + KnownFileList.cpp \ + ListenSocket.cpp \ +@@ -594,6 +596,7 @@ gui_sources = \ + ClientDetailDialog.cpp \ + FileDetailDialog.cpp \ + KadDlg.cpp \ ++ MuleListCtrl.cpp \ + OScopeCtrl.cpp \ + PartFileConvert.cpp \ + PrefsUnifiedDlg.cpp \ +@@ -608,17 +611,20 @@ gui_sources = \ + ServerListCtrl.cpp \ + SharedFilesCtrl.cpp \ + MuleTrayIcon.cpp \ +- TransferWnd.cpp ++ TransferWnd.cpp + + remote_common_sources = \ + OtherFunctions.cpp + + common_sources = \ ++ AdunanzA.cpp \ ++ RemoteSettings.cpp \ + ClientCredits.cpp \ + ECSpecialMuleTags.cpp \ + KnownFile.cpp \ + GetTickCount.cpp \ + Logger.cpp \ ++ Packet.cpp \ + PartFile.cpp \ + Preferences.cpp \ + Proxy.cpp \ +@@ -626,6 +632,7 @@ common_sources = \ + Statistics.cpp \ + StatTree.cpp \ + SHAHashSet.cpp \ ++ HTTPDownload.cpp \ + $(remote_common_sources) + + +@@ -892,6 +899,7 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-AICHSyncThread.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-AddFileThread.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-AddFriend.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-AdunanzA.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-BaseClient.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-ChatSelector.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-ClientCredits.Po@am__quote@ +@@ -924,16 +932,19 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-KnownFileList.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-ListenSocket.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-Logger.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-MuleListCtrl.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-MuleTrayIcon.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-MuleUDPSocket.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-OScopeCtrl.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-OtherFunctions.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-Packet.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-PartFile.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-PartFileConvert.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-Preferences.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-Prefs.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-PrefsUnifiedDlg.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-Proxy.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-RemoteSettings.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-RoutingZone.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-SHAHashSet.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amule-Search.Po@am__quote@ +@@ -965,6 +976,7 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulecmd-TextClient.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-AICHSyncThread.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-AddFileThread.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-AdunanzA.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-BaseClient.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-ClientCredits.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-ClientCreditsList.Po@am__quote@ +@@ -992,10 +1004,12 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-Logger.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-MuleUDPSocket.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-OtherFunctions.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-Packet.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-PartFile.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-Preferences.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-Prefs.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-Proxy.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-RemoteSettings.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-RoutingZone.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-SHAHashSet.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-Search.Po@am__quote@ +@@ -1015,6 +1029,7 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-amule.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amuled-amuled.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-AddFriend.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-AdunanzA.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-ChatSelector.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-ClientCredits.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-ClientDetailDialog.Po@am__quote@ +@@ -1024,17 +1039,21 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-FileDetailDialog.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-FriendListCtrl.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-GetTickCount.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-HTTPDownload.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-KadDlg.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-KnownFile.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-Logger.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-MuleListCtrl.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-MuleTrayIcon.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-OScopeCtrl.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-OtherFunctions.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-Packet.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-PartFile.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-PartFileConvert.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-Preferences.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-PrefsUnifiedDlg.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-Proxy.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-RemoteSettings.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-SHAHashSet.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-SearchDlg.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amulegui-SearchListCtrl.Po@am__quote@ +@@ -1057,7 +1076,6 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappcommon_a-FileFunctions.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappcommon_a-MemFile.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappcommon_a-NetworkFunctions.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappcommon_a-Packet.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappcommon_a-RLE.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappcommon_a-SHA.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappcommon_a-SafeFile.Po@am__quote@ +@@ -1086,7 +1104,6 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappgui_a-EditServerListDlg.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappgui_a-FileDetailListCtrl.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappgui_a-MuleGifCtrl.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappgui_a-MuleListCtrl.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappgui_a-MuleNotebook.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappgui_a-MuleTextCtrl.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmuleappgui_a-listctrl.Po@am__quote@ +@@ -1190,20 +1207,6 @@ libmuleappcommon_a-NetworkFunctions.obj: + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmuleappcommon_a_CXXFLAGS) $(CXXFLAGS) -c -o libmuleappcommon_a-NetworkFunctions.obj `if test -f 'NetworkFunctions.cpp'; then $(CYGPATH_W) 'NetworkFunctions.cpp'; else $(CYGPATH_W) '$(srcdir)/NetworkFunctions.cpp'; fi` + +-libmuleappcommon_a-Packet.o: Packet.cpp +-@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmuleappcommon_a_CXXFLAGS) $(CXXFLAGS) -MT libmuleappcommon_a-Packet.o -MD -MP -MF "$(DEPDIR)/libmuleappcommon_a-Packet.Tpo" -c -o libmuleappcommon_a-Packet.o `test -f 'Packet.cpp' || echo '$(srcdir)/'`Packet.cpp; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libmuleappcommon_a-Packet.Tpo" "$(DEPDIR)/libmuleappcommon_a-Packet.Po"; else rm -f "$(DEPDIR)/libmuleappcommon_a-Packet.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Packet.cpp' object='libmuleappcommon_a-Packet.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmuleappcommon_a_CXXFLAGS) $(CXXFLAGS) -c -o libmuleappcommon_a-Packet.o `test -f 'Packet.cpp' || echo '$(srcdir)/'`Packet.cpp +- +-libmuleappcommon_a-Packet.obj: Packet.cpp +-@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmuleappcommon_a_CXXFLAGS) $(CXXFLAGS) -MT libmuleappcommon_a-Packet.obj -MD -MP -MF "$(DEPDIR)/libmuleappcommon_a-Packet.Tpo" -c -o libmuleappcommon_a-Packet.obj `if test -f 'Packet.cpp'; then $(CYGPATH_W) 'Packet.cpp'; else $(CYGPATH_W) '$(srcdir)/Packet.cpp'; fi`; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libmuleappcommon_a-Packet.Tpo" "$(DEPDIR)/libmuleappcommon_a-Packet.Po"; else rm -f "$(DEPDIR)/libmuleappcommon_a-Packet.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Packet.cpp' object='libmuleappcommon_a-Packet.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmuleappcommon_a_CXXFLAGS) $(CXXFLAGS) -c -o libmuleappcommon_a-Packet.obj `if test -f 'Packet.cpp'; then $(CYGPATH_W) 'Packet.cpp'; else $(CYGPATH_W) '$(srcdir)/Packet.cpp'; fi` +- + libmuleappcommon_a-RLE.o: RLE.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmuleappcommon_a_CXXFLAGS) $(CXXFLAGS) -MT libmuleappcommon_a-RLE.o -MD -MP -MF "$(DEPDIR)/libmuleappcommon_a-RLE.Tpo" -c -o libmuleappcommon_a-RLE.o `test -f 'RLE.cpp' || echo '$(srcdir)/'`RLE.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libmuleappcommon_a-RLE.Tpo" "$(DEPDIR)/libmuleappcommon_a-RLE.Po"; else rm -f "$(DEPDIR)/libmuleappcommon_a-RLE.Tpo"; exit 1; fi +@@ -1596,20 +1599,6 @@ libmuleappgui_a-MuleGifCtrl.obj: MuleGif + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmuleappgui_a_CXXFLAGS) $(CXXFLAGS) -c -o libmuleappgui_a-MuleGifCtrl.obj `if test -f 'MuleGifCtrl.cpp'; then $(CYGPATH_W) 'MuleGifCtrl.cpp'; else $(CYGPATH_W) '$(srcdir)/MuleGifCtrl.cpp'; fi` + +-libmuleappgui_a-MuleListCtrl.o: MuleListCtrl.cpp +-@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmuleappgui_a_CXXFLAGS) $(CXXFLAGS) -MT libmuleappgui_a-MuleListCtrl.o -MD -MP -MF "$(DEPDIR)/libmuleappgui_a-MuleListCtrl.Tpo" -c -o libmuleappgui_a-MuleListCtrl.o `test -f 'MuleListCtrl.cpp' || echo '$(srcdir)/'`MuleListCtrl.cpp; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libmuleappgui_a-MuleListCtrl.Tpo" "$(DEPDIR)/libmuleappgui_a-MuleListCtrl.Po"; else rm -f "$(DEPDIR)/libmuleappgui_a-MuleListCtrl.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MuleListCtrl.cpp' object='libmuleappgui_a-MuleListCtrl.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmuleappgui_a_CXXFLAGS) $(CXXFLAGS) -c -o libmuleappgui_a-MuleListCtrl.o `test -f 'MuleListCtrl.cpp' || echo '$(srcdir)/'`MuleListCtrl.cpp +- +-libmuleappgui_a-MuleListCtrl.obj: MuleListCtrl.cpp +-@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmuleappgui_a_CXXFLAGS) $(CXXFLAGS) -MT libmuleappgui_a-MuleListCtrl.obj -MD -MP -MF "$(DEPDIR)/libmuleappgui_a-MuleListCtrl.Tpo" -c -o libmuleappgui_a-MuleListCtrl.obj `if test -f 'MuleListCtrl.cpp'; then $(CYGPATH_W) 'MuleListCtrl.cpp'; else $(CYGPATH_W) '$(srcdir)/MuleListCtrl.cpp'; fi`; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libmuleappgui_a-MuleListCtrl.Tpo" "$(DEPDIR)/libmuleappgui_a-MuleListCtrl.Po"; else rm -f "$(DEPDIR)/libmuleappgui_a-MuleListCtrl.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MuleListCtrl.cpp' object='libmuleappgui_a-MuleListCtrl.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmuleappgui_a_CXXFLAGS) $(CXXFLAGS) -c -o libmuleappgui_a-MuleListCtrl.obj `if test -f 'MuleListCtrl.cpp'; then $(CYGPATH_W) 'MuleListCtrl.cpp'; else $(CYGPATH_W) '$(srcdir)/MuleListCtrl.cpp'; fi` +- + libmuleappgui_a-MuleNotebook.o: MuleNotebook.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmuleappgui_a_CXXFLAGS) $(CXXFLAGS) -MT libmuleappgui_a-MuleNotebook.o -MD -MP -MF "$(DEPDIR)/libmuleappgui_a-MuleNotebook.Tpo" -c -o libmuleappgui_a-MuleNotebook.o `test -f 'MuleNotebook.cpp' || echo '$(srcdir)/'`MuleNotebook.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libmuleappgui_a-MuleNotebook.Tpo" "$(DEPDIR)/libmuleappgui_a-MuleNotebook.Po"; else rm -f "$(DEPDIR)/libmuleappgui_a-MuleNotebook.Tpo"; exit 1; fi +@@ -1890,20 +1879,6 @@ amule-FriendList.obj: FriendList.cpp + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-FriendList.obj `if test -f 'FriendList.cpp'; then $(CYGPATH_W) 'FriendList.cpp'; else $(CYGPATH_W) '$(srcdir)/FriendList.cpp'; fi` + +-amule-HTTPDownload.o: HTTPDownload.cpp +-@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-HTTPDownload.o -MD -MP -MF "$(DEPDIR)/amule-HTTPDownload.Tpo" -c -o amule-HTTPDownload.o `test -f 'HTTPDownload.cpp' || echo '$(srcdir)/'`HTTPDownload.cpp; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-HTTPDownload.Tpo" "$(DEPDIR)/amule-HTTPDownload.Po"; else rm -f "$(DEPDIR)/amule-HTTPDownload.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='HTTPDownload.cpp' object='amule-HTTPDownload.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-HTTPDownload.o `test -f 'HTTPDownload.cpp' || echo '$(srcdir)/'`HTTPDownload.cpp +- +-amule-HTTPDownload.obj: HTTPDownload.cpp +-@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-HTTPDownload.obj -MD -MP -MF "$(DEPDIR)/amule-HTTPDownload.Tpo" -c -o amule-HTTPDownload.obj `if test -f 'HTTPDownload.cpp'; then $(CYGPATH_W) 'HTTPDownload.cpp'; else $(CYGPATH_W) '$(srcdir)/HTTPDownload.cpp'; fi`; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-HTTPDownload.Tpo" "$(DEPDIR)/amule-HTTPDownload.Po"; else rm -f "$(DEPDIR)/amule-HTTPDownload.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='HTTPDownload.cpp' object='amule-HTTPDownload.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-HTTPDownload.obj `if test -f 'HTTPDownload.cpp'; then $(CYGPATH_W) 'HTTPDownload.cpp'; else $(CYGPATH_W) '$(srcdir)/HTTPDownload.cpp'; fi` +- + amule-IPFilter.o: IPFilter.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-IPFilter.o -MD -MP -MF "$(DEPDIR)/amule-IPFilter.Tpo" -c -o amule-IPFilter.o `test -f 'IPFilter.cpp' || echo '$(srcdir)/'`IPFilter.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-IPFilter.Tpo" "$(DEPDIR)/amule-IPFilter.Po"; else rm -f "$(DEPDIR)/amule-IPFilter.Tpo"; exit 1; fi +@@ -2282,6 +2257,20 @@ amule-KadDlg.obj: KadDlg.cpp + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-KadDlg.obj `if test -f 'KadDlg.cpp'; then $(CYGPATH_W) 'KadDlg.cpp'; else $(CYGPATH_W) '$(srcdir)/KadDlg.cpp'; fi` + ++amule-MuleListCtrl.o: MuleListCtrl.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-MuleListCtrl.o -MD -MP -MF "$(DEPDIR)/amule-MuleListCtrl.Tpo" -c -o amule-MuleListCtrl.o `test -f 'MuleListCtrl.cpp' || echo '$(srcdir)/'`MuleListCtrl.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-MuleListCtrl.Tpo" "$(DEPDIR)/amule-MuleListCtrl.Po"; else rm -f "$(DEPDIR)/amule-MuleListCtrl.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MuleListCtrl.cpp' object='amule-MuleListCtrl.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-MuleListCtrl.o `test -f 'MuleListCtrl.cpp' || echo '$(srcdir)/'`MuleListCtrl.cpp ++ ++amule-MuleListCtrl.obj: MuleListCtrl.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-MuleListCtrl.obj -MD -MP -MF "$(DEPDIR)/amule-MuleListCtrl.Tpo" -c -o amule-MuleListCtrl.obj `if test -f 'MuleListCtrl.cpp'; then $(CYGPATH_W) 'MuleListCtrl.cpp'; else $(CYGPATH_W) '$(srcdir)/MuleListCtrl.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-MuleListCtrl.Tpo" "$(DEPDIR)/amule-MuleListCtrl.Po"; else rm -f "$(DEPDIR)/amule-MuleListCtrl.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MuleListCtrl.cpp' object='amule-MuleListCtrl.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-MuleListCtrl.obj `if test -f 'MuleListCtrl.cpp'; then $(CYGPATH_W) 'MuleListCtrl.cpp'; else $(CYGPATH_W) '$(srcdir)/MuleListCtrl.cpp'; fi` ++ + amule-OScopeCtrl.o: OScopeCtrl.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-OScopeCtrl.o -MD -MP -MF "$(DEPDIR)/amule-OScopeCtrl.Tpo" -c -o amule-OScopeCtrl.o `test -f 'OScopeCtrl.cpp' || echo '$(srcdir)/'`OScopeCtrl.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-OScopeCtrl.Tpo" "$(DEPDIR)/amule-OScopeCtrl.Po"; else rm -f "$(DEPDIR)/amule-OScopeCtrl.Tpo"; exit 1; fi +@@ -2492,6 +2481,34 @@ amule-TransferWnd.obj: TransferWnd.cpp + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-TransferWnd.obj `if test -f 'TransferWnd.cpp'; then $(CYGPATH_W) 'TransferWnd.cpp'; else $(CYGPATH_W) '$(srcdir)/TransferWnd.cpp'; fi` + ++amule-AdunanzA.o: AdunanzA.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-AdunanzA.o -MD -MP -MF "$(DEPDIR)/amule-AdunanzA.Tpo" -c -o amule-AdunanzA.o `test -f 'AdunanzA.cpp' || echo '$(srcdir)/'`AdunanzA.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-AdunanzA.Tpo" "$(DEPDIR)/amule-AdunanzA.Po"; else rm -f "$(DEPDIR)/amule-AdunanzA.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AdunanzA.cpp' object='amule-AdunanzA.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-AdunanzA.o `test -f 'AdunanzA.cpp' || echo '$(srcdir)/'`AdunanzA.cpp ++ ++amule-AdunanzA.obj: AdunanzA.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-AdunanzA.obj -MD -MP -MF "$(DEPDIR)/amule-AdunanzA.Tpo" -c -o amule-AdunanzA.obj `if test -f 'AdunanzA.cpp'; then $(CYGPATH_W) 'AdunanzA.cpp'; else $(CYGPATH_W) '$(srcdir)/AdunanzA.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-AdunanzA.Tpo" "$(DEPDIR)/amule-AdunanzA.Po"; else rm -f "$(DEPDIR)/amule-AdunanzA.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AdunanzA.cpp' object='amule-AdunanzA.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-AdunanzA.obj `if test -f 'AdunanzA.cpp'; then $(CYGPATH_W) 'AdunanzA.cpp'; else $(CYGPATH_W) '$(srcdir)/AdunanzA.cpp'; fi` ++ ++amule-RemoteSettings.o: RemoteSettings.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-RemoteSettings.o -MD -MP -MF "$(DEPDIR)/amule-RemoteSettings.Tpo" -c -o amule-RemoteSettings.o `test -f 'RemoteSettings.cpp' || echo '$(srcdir)/'`RemoteSettings.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-RemoteSettings.Tpo" "$(DEPDIR)/amule-RemoteSettings.Po"; else rm -f "$(DEPDIR)/amule-RemoteSettings.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='RemoteSettings.cpp' object='amule-RemoteSettings.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-RemoteSettings.o `test -f 'RemoteSettings.cpp' || echo '$(srcdir)/'`RemoteSettings.cpp ++ ++amule-RemoteSettings.obj: RemoteSettings.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-RemoteSettings.obj -MD -MP -MF "$(DEPDIR)/amule-RemoteSettings.Tpo" -c -o amule-RemoteSettings.obj `if test -f 'RemoteSettings.cpp'; then $(CYGPATH_W) 'RemoteSettings.cpp'; else $(CYGPATH_W) '$(srcdir)/RemoteSettings.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-RemoteSettings.Tpo" "$(DEPDIR)/amule-RemoteSettings.Po"; else rm -f "$(DEPDIR)/amule-RemoteSettings.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='RemoteSettings.cpp' object='amule-RemoteSettings.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-RemoteSettings.obj `if test -f 'RemoteSettings.cpp'; then $(CYGPATH_W) 'RemoteSettings.cpp'; else $(CYGPATH_W) '$(srcdir)/RemoteSettings.cpp'; fi` ++ + amule-ClientCredits.o: ClientCredits.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-ClientCredits.o -MD -MP -MF "$(DEPDIR)/amule-ClientCredits.Tpo" -c -o amule-ClientCredits.o `test -f 'ClientCredits.cpp' || echo '$(srcdir)/'`ClientCredits.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-ClientCredits.Tpo" "$(DEPDIR)/amule-ClientCredits.Po"; else rm -f "$(DEPDIR)/amule-ClientCredits.Tpo"; exit 1; fi +@@ -2562,6 +2579,20 @@ amule-Logger.obj: Logger.cpp + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-Logger.obj `if test -f 'Logger.cpp'; then $(CYGPATH_W) 'Logger.cpp'; else $(CYGPATH_W) '$(srcdir)/Logger.cpp'; fi` + ++amule-Packet.o: Packet.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-Packet.o -MD -MP -MF "$(DEPDIR)/amule-Packet.Tpo" -c -o amule-Packet.o `test -f 'Packet.cpp' || echo '$(srcdir)/'`Packet.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-Packet.Tpo" "$(DEPDIR)/amule-Packet.Po"; else rm -f "$(DEPDIR)/amule-Packet.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Packet.cpp' object='amule-Packet.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-Packet.o `test -f 'Packet.cpp' || echo '$(srcdir)/'`Packet.cpp ++ ++amule-Packet.obj: Packet.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-Packet.obj -MD -MP -MF "$(DEPDIR)/amule-Packet.Tpo" -c -o amule-Packet.obj `if test -f 'Packet.cpp'; then $(CYGPATH_W) 'Packet.cpp'; else $(CYGPATH_W) '$(srcdir)/Packet.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-Packet.Tpo" "$(DEPDIR)/amule-Packet.Po"; else rm -f "$(DEPDIR)/amule-Packet.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Packet.cpp' object='amule-Packet.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-Packet.obj `if test -f 'Packet.cpp'; then $(CYGPATH_W) 'Packet.cpp'; else $(CYGPATH_W) '$(srcdir)/Packet.cpp'; fi` ++ + amule-PartFile.o: PartFile.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-PartFile.o -MD -MP -MF "$(DEPDIR)/amule-PartFile.Tpo" -c -o amule-PartFile.o `test -f 'PartFile.cpp' || echo '$(srcdir)/'`PartFile.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-PartFile.Tpo" "$(DEPDIR)/amule-PartFile.Po"; else rm -f "$(DEPDIR)/amule-PartFile.Tpo"; exit 1; fi +@@ -2660,6 +2691,20 @@ amule-SHAHashSet.obj: SHAHashSet.cpp + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-SHAHashSet.obj `if test -f 'SHAHashSet.cpp'; then $(CYGPATH_W) 'SHAHashSet.cpp'; else $(CYGPATH_W) '$(srcdir)/SHAHashSet.cpp'; fi` + ++amule-HTTPDownload.o: HTTPDownload.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-HTTPDownload.o -MD -MP -MF "$(DEPDIR)/amule-HTTPDownload.Tpo" -c -o amule-HTTPDownload.o `test -f 'HTTPDownload.cpp' || echo '$(srcdir)/'`HTTPDownload.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-HTTPDownload.Tpo" "$(DEPDIR)/amule-HTTPDownload.Po"; else rm -f "$(DEPDIR)/amule-HTTPDownload.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='HTTPDownload.cpp' object='amule-HTTPDownload.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-HTTPDownload.o `test -f 'HTTPDownload.cpp' || echo '$(srcdir)/'`HTTPDownload.cpp ++ ++amule-HTTPDownload.obj: HTTPDownload.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-HTTPDownload.obj -MD -MP -MF "$(DEPDIR)/amule-HTTPDownload.Tpo" -c -o amule-HTTPDownload.obj `if test -f 'HTTPDownload.cpp'; then $(CYGPATH_W) 'HTTPDownload.cpp'; else $(CYGPATH_W) '$(srcdir)/HTTPDownload.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-HTTPDownload.Tpo" "$(DEPDIR)/amule-HTTPDownload.Po"; else rm -f "$(DEPDIR)/amule-HTTPDownload.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='HTTPDownload.cpp' object='amule-HTTPDownload.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -c -o amule-HTTPDownload.obj `if test -f 'HTTPDownload.cpp'; then $(CYGPATH_W) 'HTTPDownload.cpp'; else $(CYGPATH_W) '$(srcdir)/HTTPDownload.cpp'; fi` ++ + amule-OtherFunctions.o: OtherFunctions.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amule_CXXFLAGS) $(CXXFLAGS) -MT amule-OtherFunctions.o -MD -MP -MF "$(DEPDIR)/amule-OtherFunctions.Tpo" -c -o amule-OtherFunctions.o `test -f 'OtherFunctions.cpp' || echo '$(srcdir)/'`OtherFunctions.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amule-OtherFunctions.Tpo" "$(DEPDIR)/amule-OtherFunctions.Po"; else rm -f "$(DEPDIR)/amule-OtherFunctions.Tpo"; exit 1; fi +@@ -2954,20 +2999,6 @@ amuled-FriendList.obj: FriendList.cpp + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-FriendList.obj `if test -f 'FriendList.cpp'; then $(CYGPATH_W) 'FriendList.cpp'; else $(CYGPATH_W) '$(srcdir)/FriendList.cpp'; fi` + +-amuled-HTTPDownload.o: HTTPDownload.cpp +-@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-HTTPDownload.o -MD -MP -MF "$(DEPDIR)/amuled-HTTPDownload.Tpo" -c -o amuled-HTTPDownload.o `test -f 'HTTPDownload.cpp' || echo '$(srcdir)/'`HTTPDownload.cpp; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-HTTPDownload.Tpo" "$(DEPDIR)/amuled-HTTPDownload.Po"; else rm -f "$(DEPDIR)/amuled-HTTPDownload.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='HTTPDownload.cpp' object='amuled-HTTPDownload.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-HTTPDownload.o `test -f 'HTTPDownload.cpp' || echo '$(srcdir)/'`HTTPDownload.cpp +- +-amuled-HTTPDownload.obj: HTTPDownload.cpp +-@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-HTTPDownload.obj -MD -MP -MF "$(DEPDIR)/amuled-HTTPDownload.Tpo" -c -o amuled-HTTPDownload.obj `if test -f 'HTTPDownload.cpp'; then $(CYGPATH_W) 'HTTPDownload.cpp'; else $(CYGPATH_W) '$(srcdir)/HTTPDownload.cpp'; fi`; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-HTTPDownload.Tpo" "$(DEPDIR)/amuled-HTTPDownload.Po"; else rm -f "$(DEPDIR)/amuled-HTTPDownload.Tpo"; exit 1; fi +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='HTTPDownload.cpp' object='amuled-HTTPDownload.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-HTTPDownload.obj `if test -f 'HTTPDownload.cpp'; then $(CYGPATH_W) 'HTTPDownload.cpp'; else $(CYGPATH_W) '$(srcdir)/HTTPDownload.cpp'; fi` +- + amuled-IPFilter.o: IPFilter.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-IPFilter.o -MD -MP -MF "$(DEPDIR)/amuled-IPFilter.Tpo" -c -o amuled-IPFilter.o `test -f 'IPFilter.cpp' || echo '$(srcdir)/'`IPFilter.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-IPFilter.Tpo" "$(DEPDIR)/amuled-IPFilter.Po"; else rm -f "$(DEPDIR)/amuled-IPFilter.Tpo"; exit 1; fi +@@ -3248,6 +3279,34 @@ amuled-Contact.obj: kademlia/routing/Con + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-Contact.obj `if test -f 'kademlia/routing/Contact.cpp'; then $(CYGPATH_W) 'kademlia/routing/Contact.cpp'; else $(CYGPATH_W) '$(srcdir)/kademlia/routing/Contact.cpp'; fi` + ++amuled-AdunanzA.o: AdunanzA.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-AdunanzA.o -MD -MP -MF "$(DEPDIR)/amuled-AdunanzA.Tpo" -c -o amuled-AdunanzA.o `test -f 'AdunanzA.cpp' || echo '$(srcdir)/'`AdunanzA.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-AdunanzA.Tpo" "$(DEPDIR)/amuled-AdunanzA.Po"; else rm -f "$(DEPDIR)/amuled-AdunanzA.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AdunanzA.cpp' object='amuled-AdunanzA.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-AdunanzA.o `test -f 'AdunanzA.cpp' || echo '$(srcdir)/'`AdunanzA.cpp ++ ++amuled-AdunanzA.obj: AdunanzA.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-AdunanzA.obj -MD -MP -MF "$(DEPDIR)/amuled-AdunanzA.Tpo" -c -o amuled-AdunanzA.obj `if test -f 'AdunanzA.cpp'; then $(CYGPATH_W) 'AdunanzA.cpp'; else $(CYGPATH_W) '$(srcdir)/AdunanzA.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-AdunanzA.Tpo" "$(DEPDIR)/amuled-AdunanzA.Po"; else rm -f "$(DEPDIR)/amuled-AdunanzA.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AdunanzA.cpp' object='amuled-AdunanzA.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-AdunanzA.obj `if test -f 'AdunanzA.cpp'; then $(CYGPATH_W) 'AdunanzA.cpp'; else $(CYGPATH_W) '$(srcdir)/AdunanzA.cpp'; fi` ++ ++amuled-RemoteSettings.o: RemoteSettings.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-RemoteSettings.o -MD -MP -MF "$(DEPDIR)/amuled-RemoteSettings.Tpo" -c -o amuled-RemoteSettings.o `test -f 'RemoteSettings.cpp' || echo '$(srcdir)/'`RemoteSettings.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-RemoteSettings.Tpo" "$(DEPDIR)/amuled-RemoteSettings.Po"; else rm -f "$(DEPDIR)/amuled-RemoteSettings.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='RemoteSettings.cpp' object='amuled-RemoteSettings.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-RemoteSettings.o `test -f 'RemoteSettings.cpp' || echo '$(srcdir)/'`RemoteSettings.cpp ++ ++amuled-RemoteSettings.obj: RemoteSettings.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-RemoteSettings.obj -MD -MP -MF "$(DEPDIR)/amuled-RemoteSettings.Tpo" -c -o amuled-RemoteSettings.obj `if test -f 'RemoteSettings.cpp'; then $(CYGPATH_W) 'RemoteSettings.cpp'; else $(CYGPATH_W) '$(srcdir)/RemoteSettings.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-RemoteSettings.Tpo" "$(DEPDIR)/amuled-RemoteSettings.Po"; else rm -f "$(DEPDIR)/amuled-RemoteSettings.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='RemoteSettings.cpp' object='amuled-RemoteSettings.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-RemoteSettings.obj `if test -f 'RemoteSettings.cpp'; then $(CYGPATH_W) 'RemoteSettings.cpp'; else $(CYGPATH_W) '$(srcdir)/RemoteSettings.cpp'; fi` ++ + amuled-ClientCredits.o: ClientCredits.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-ClientCredits.o -MD -MP -MF "$(DEPDIR)/amuled-ClientCredits.Tpo" -c -o amuled-ClientCredits.o `test -f 'ClientCredits.cpp' || echo '$(srcdir)/'`ClientCredits.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-ClientCredits.Tpo" "$(DEPDIR)/amuled-ClientCredits.Po"; else rm -f "$(DEPDIR)/amuled-ClientCredits.Tpo"; exit 1; fi +@@ -3318,6 +3377,20 @@ amuled-Logger.obj: Logger.cpp + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-Logger.obj `if test -f 'Logger.cpp'; then $(CYGPATH_W) 'Logger.cpp'; else $(CYGPATH_W) '$(srcdir)/Logger.cpp'; fi` + ++amuled-Packet.o: Packet.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-Packet.o -MD -MP -MF "$(DEPDIR)/amuled-Packet.Tpo" -c -o amuled-Packet.o `test -f 'Packet.cpp' || echo '$(srcdir)/'`Packet.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-Packet.Tpo" "$(DEPDIR)/amuled-Packet.Po"; else rm -f "$(DEPDIR)/amuled-Packet.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Packet.cpp' object='amuled-Packet.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-Packet.o `test -f 'Packet.cpp' || echo '$(srcdir)/'`Packet.cpp ++ ++amuled-Packet.obj: Packet.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-Packet.obj -MD -MP -MF "$(DEPDIR)/amuled-Packet.Tpo" -c -o amuled-Packet.obj `if test -f 'Packet.cpp'; then $(CYGPATH_W) 'Packet.cpp'; else $(CYGPATH_W) '$(srcdir)/Packet.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-Packet.Tpo" "$(DEPDIR)/amuled-Packet.Po"; else rm -f "$(DEPDIR)/amuled-Packet.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Packet.cpp' object='amuled-Packet.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-Packet.obj `if test -f 'Packet.cpp'; then $(CYGPATH_W) 'Packet.cpp'; else $(CYGPATH_W) '$(srcdir)/Packet.cpp'; fi` ++ + amuled-PartFile.o: PartFile.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-PartFile.o -MD -MP -MF "$(DEPDIR)/amuled-PartFile.Tpo" -c -o amuled-PartFile.o `test -f 'PartFile.cpp' || echo '$(srcdir)/'`PartFile.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-PartFile.Tpo" "$(DEPDIR)/amuled-PartFile.Po"; else rm -f "$(DEPDIR)/amuled-PartFile.Tpo"; exit 1; fi +@@ -3416,6 +3489,20 @@ amuled-SHAHashSet.obj: SHAHashSet.cpp + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-SHAHashSet.obj `if test -f 'SHAHashSet.cpp'; then $(CYGPATH_W) 'SHAHashSet.cpp'; else $(CYGPATH_W) '$(srcdir)/SHAHashSet.cpp'; fi` + ++amuled-HTTPDownload.o: HTTPDownload.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-HTTPDownload.o -MD -MP -MF "$(DEPDIR)/amuled-HTTPDownload.Tpo" -c -o amuled-HTTPDownload.o `test -f 'HTTPDownload.cpp' || echo '$(srcdir)/'`HTTPDownload.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-HTTPDownload.Tpo" "$(DEPDIR)/amuled-HTTPDownload.Po"; else rm -f "$(DEPDIR)/amuled-HTTPDownload.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='HTTPDownload.cpp' object='amuled-HTTPDownload.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-HTTPDownload.o `test -f 'HTTPDownload.cpp' || echo '$(srcdir)/'`HTTPDownload.cpp ++ ++amuled-HTTPDownload.obj: HTTPDownload.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-HTTPDownload.obj -MD -MP -MF "$(DEPDIR)/amuled-HTTPDownload.Tpo" -c -o amuled-HTTPDownload.obj `if test -f 'HTTPDownload.cpp'; then $(CYGPATH_W) 'HTTPDownload.cpp'; else $(CYGPATH_W) '$(srcdir)/HTTPDownload.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-HTTPDownload.Tpo" "$(DEPDIR)/amuled-HTTPDownload.Po"; else rm -f "$(DEPDIR)/amuled-HTTPDownload.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='HTTPDownload.cpp' object='amuled-HTTPDownload.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -c -o amuled-HTTPDownload.obj `if test -f 'HTTPDownload.cpp'; then $(CYGPATH_W) 'HTTPDownload.cpp'; else $(CYGPATH_W) '$(srcdir)/HTTPDownload.cpp'; fi` ++ + amuled-OtherFunctions.o: OtherFunctions.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amuled_CXXFLAGS) $(CXXFLAGS) -MT amuled-OtherFunctions.o -MD -MP -MF "$(DEPDIR)/amuled-OtherFunctions.Tpo" -c -o amuled-OtherFunctions.o `test -f 'OtherFunctions.cpp' || echo '$(srcdir)/'`OtherFunctions.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amuled-OtherFunctions.Tpo" "$(DEPDIR)/amuled-OtherFunctions.Po"; else rm -f "$(DEPDIR)/amuled-OtherFunctions.Tpo"; exit 1; fi +@@ -3542,6 +3629,20 @@ amulegui-KadDlg.obj: KadDlg.cpp + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-KadDlg.obj `if test -f 'KadDlg.cpp'; then $(CYGPATH_W) 'KadDlg.cpp'; else $(CYGPATH_W) '$(srcdir)/KadDlg.cpp'; fi` + ++amulegui-MuleListCtrl.o: MuleListCtrl.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-MuleListCtrl.o -MD -MP -MF "$(DEPDIR)/amulegui-MuleListCtrl.Tpo" -c -o amulegui-MuleListCtrl.o `test -f 'MuleListCtrl.cpp' || echo '$(srcdir)/'`MuleListCtrl.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-MuleListCtrl.Tpo" "$(DEPDIR)/amulegui-MuleListCtrl.Po"; else rm -f "$(DEPDIR)/amulegui-MuleListCtrl.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MuleListCtrl.cpp' object='amulegui-MuleListCtrl.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-MuleListCtrl.o `test -f 'MuleListCtrl.cpp' || echo '$(srcdir)/'`MuleListCtrl.cpp ++ ++amulegui-MuleListCtrl.obj: MuleListCtrl.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-MuleListCtrl.obj -MD -MP -MF "$(DEPDIR)/amulegui-MuleListCtrl.Tpo" -c -o amulegui-MuleListCtrl.obj `if test -f 'MuleListCtrl.cpp'; then $(CYGPATH_W) 'MuleListCtrl.cpp'; else $(CYGPATH_W) '$(srcdir)/MuleListCtrl.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-MuleListCtrl.Tpo" "$(DEPDIR)/amulegui-MuleListCtrl.Po"; else rm -f "$(DEPDIR)/amulegui-MuleListCtrl.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='MuleListCtrl.cpp' object='amulegui-MuleListCtrl.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-MuleListCtrl.obj `if test -f 'MuleListCtrl.cpp'; then $(CYGPATH_W) 'MuleListCtrl.cpp'; else $(CYGPATH_W) '$(srcdir)/MuleListCtrl.cpp'; fi` ++ + amulegui-OScopeCtrl.o: OScopeCtrl.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-OScopeCtrl.o -MD -MP -MF "$(DEPDIR)/amulegui-OScopeCtrl.Tpo" -c -o amulegui-OScopeCtrl.o `test -f 'OScopeCtrl.cpp' || echo '$(srcdir)/'`OScopeCtrl.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-OScopeCtrl.Tpo" "$(DEPDIR)/amulegui-OScopeCtrl.Po"; else rm -f "$(DEPDIR)/amulegui-OScopeCtrl.Tpo"; exit 1; fi +@@ -3752,6 +3853,34 @@ amulegui-TransferWnd.obj: TransferWnd.cp + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-TransferWnd.obj `if test -f 'TransferWnd.cpp'; then $(CYGPATH_W) 'TransferWnd.cpp'; else $(CYGPATH_W) '$(srcdir)/TransferWnd.cpp'; fi` + ++amulegui-AdunanzA.o: AdunanzA.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-AdunanzA.o -MD -MP -MF "$(DEPDIR)/amulegui-AdunanzA.Tpo" -c -o amulegui-AdunanzA.o `test -f 'AdunanzA.cpp' || echo '$(srcdir)/'`AdunanzA.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-AdunanzA.Tpo" "$(DEPDIR)/amulegui-AdunanzA.Po"; else rm -f "$(DEPDIR)/amulegui-AdunanzA.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AdunanzA.cpp' object='amulegui-AdunanzA.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-AdunanzA.o `test -f 'AdunanzA.cpp' || echo '$(srcdir)/'`AdunanzA.cpp ++ ++amulegui-AdunanzA.obj: AdunanzA.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-AdunanzA.obj -MD -MP -MF "$(DEPDIR)/amulegui-AdunanzA.Tpo" -c -o amulegui-AdunanzA.obj `if test -f 'AdunanzA.cpp'; then $(CYGPATH_W) 'AdunanzA.cpp'; else $(CYGPATH_W) '$(srcdir)/AdunanzA.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-AdunanzA.Tpo" "$(DEPDIR)/amulegui-AdunanzA.Po"; else rm -f "$(DEPDIR)/amulegui-AdunanzA.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='AdunanzA.cpp' object='amulegui-AdunanzA.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-AdunanzA.obj `if test -f 'AdunanzA.cpp'; then $(CYGPATH_W) 'AdunanzA.cpp'; else $(CYGPATH_W) '$(srcdir)/AdunanzA.cpp'; fi` ++ ++amulegui-RemoteSettings.o: RemoteSettings.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-RemoteSettings.o -MD -MP -MF "$(DEPDIR)/amulegui-RemoteSettings.Tpo" -c -o amulegui-RemoteSettings.o `test -f 'RemoteSettings.cpp' || echo '$(srcdir)/'`RemoteSettings.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-RemoteSettings.Tpo" "$(DEPDIR)/amulegui-RemoteSettings.Po"; else rm -f "$(DEPDIR)/amulegui-RemoteSettings.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='RemoteSettings.cpp' object='amulegui-RemoteSettings.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-RemoteSettings.o `test -f 'RemoteSettings.cpp' || echo '$(srcdir)/'`RemoteSettings.cpp ++ ++amulegui-RemoteSettings.obj: RemoteSettings.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-RemoteSettings.obj -MD -MP -MF "$(DEPDIR)/amulegui-RemoteSettings.Tpo" -c -o amulegui-RemoteSettings.obj `if test -f 'RemoteSettings.cpp'; then $(CYGPATH_W) 'RemoteSettings.cpp'; else $(CYGPATH_W) '$(srcdir)/RemoteSettings.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-RemoteSettings.Tpo" "$(DEPDIR)/amulegui-RemoteSettings.Po"; else rm -f "$(DEPDIR)/amulegui-RemoteSettings.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='RemoteSettings.cpp' object='amulegui-RemoteSettings.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-RemoteSettings.obj `if test -f 'RemoteSettings.cpp'; then $(CYGPATH_W) 'RemoteSettings.cpp'; else $(CYGPATH_W) '$(srcdir)/RemoteSettings.cpp'; fi` ++ + amulegui-ClientCredits.o: ClientCredits.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-ClientCredits.o -MD -MP -MF "$(DEPDIR)/amulegui-ClientCredits.Tpo" -c -o amulegui-ClientCredits.o `test -f 'ClientCredits.cpp' || echo '$(srcdir)/'`ClientCredits.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-ClientCredits.Tpo" "$(DEPDIR)/amulegui-ClientCredits.Po"; else rm -f "$(DEPDIR)/amulegui-ClientCredits.Tpo"; exit 1; fi +@@ -3822,6 +3951,20 @@ amulegui-Logger.obj: Logger.cpp + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-Logger.obj `if test -f 'Logger.cpp'; then $(CYGPATH_W) 'Logger.cpp'; else $(CYGPATH_W) '$(srcdir)/Logger.cpp'; fi` + ++amulegui-Packet.o: Packet.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-Packet.o -MD -MP -MF "$(DEPDIR)/amulegui-Packet.Tpo" -c -o amulegui-Packet.o `test -f 'Packet.cpp' || echo '$(srcdir)/'`Packet.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-Packet.Tpo" "$(DEPDIR)/amulegui-Packet.Po"; else rm -f "$(DEPDIR)/amulegui-Packet.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Packet.cpp' object='amulegui-Packet.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-Packet.o `test -f 'Packet.cpp' || echo '$(srcdir)/'`Packet.cpp ++ ++amulegui-Packet.obj: Packet.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-Packet.obj -MD -MP -MF "$(DEPDIR)/amulegui-Packet.Tpo" -c -o amulegui-Packet.obj `if test -f 'Packet.cpp'; then $(CYGPATH_W) 'Packet.cpp'; else $(CYGPATH_W) '$(srcdir)/Packet.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-Packet.Tpo" "$(DEPDIR)/amulegui-Packet.Po"; else rm -f "$(DEPDIR)/amulegui-Packet.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Packet.cpp' object='amulegui-Packet.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-Packet.obj `if test -f 'Packet.cpp'; then $(CYGPATH_W) 'Packet.cpp'; else $(CYGPATH_W) '$(srcdir)/Packet.cpp'; fi` ++ + amulegui-PartFile.o: PartFile.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-PartFile.o -MD -MP -MF "$(DEPDIR)/amulegui-PartFile.Tpo" -c -o amulegui-PartFile.o `test -f 'PartFile.cpp' || echo '$(srcdir)/'`PartFile.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-PartFile.Tpo" "$(DEPDIR)/amulegui-PartFile.Po"; else rm -f "$(DEPDIR)/amulegui-PartFile.Tpo"; exit 1; fi +@@ -3920,6 +4063,20 @@ amulegui-SHAHashSet.obj: SHAHashSet.cpp + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-SHAHashSet.obj `if test -f 'SHAHashSet.cpp'; then $(CYGPATH_W) 'SHAHashSet.cpp'; else $(CYGPATH_W) '$(srcdir)/SHAHashSet.cpp'; fi` + ++amulegui-HTTPDownload.o: HTTPDownload.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-HTTPDownload.o -MD -MP -MF "$(DEPDIR)/amulegui-HTTPDownload.Tpo" -c -o amulegui-HTTPDownload.o `test -f 'HTTPDownload.cpp' || echo '$(srcdir)/'`HTTPDownload.cpp; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-HTTPDownload.Tpo" "$(DEPDIR)/amulegui-HTTPDownload.Po"; else rm -f "$(DEPDIR)/amulegui-HTTPDownload.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='HTTPDownload.cpp' object='amulegui-HTTPDownload.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-HTTPDownload.o `test -f 'HTTPDownload.cpp' || echo '$(srcdir)/'`HTTPDownload.cpp ++ ++amulegui-HTTPDownload.obj: HTTPDownload.cpp ++@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-HTTPDownload.obj -MD -MP -MF "$(DEPDIR)/amulegui-HTTPDownload.Tpo" -c -o amulegui-HTTPDownload.obj `if test -f 'HTTPDownload.cpp'; then $(CYGPATH_W) 'HTTPDownload.cpp'; else $(CYGPATH_W) '$(srcdir)/HTTPDownload.cpp'; fi`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-HTTPDownload.Tpo" "$(DEPDIR)/amulegui-HTTPDownload.Po"; else rm -f "$(DEPDIR)/amulegui-HTTPDownload.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='HTTPDownload.cpp' object='amulegui-HTTPDownload.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -c -o amulegui-HTTPDownload.obj `if test -f 'HTTPDownload.cpp'; then $(CYGPATH_W) 'HTTPDownload.cpp'; else $(CYGPATH_W) '$(srcdir)/HTTPDownload.cpp'; fi` ++ + amulegui-OtherFunctions.o: OtherFunctions.cpp + @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(amulegui_CXXFLAGS) $(CXXFLAGS) -MT amulegui-OtherFunctions.o -MD -MP -MF "$(DEPDIR)/amulegui-OtherFunctions.Tpo" -c -o amulegui-OtherFunctions.o `test -f 'OtherFunctions.cpp' || echo '$(srcdir)/'`OtherFunctions.cpp; \ + @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/amulegui-OtherFunctions.Tpo" "$(DEPDIR)/amulegui-OtherFunctions.Po"; else rm -f "$(DEPDIR)/amulegui-OtherFunctions.Tpo"; exit 1; fi +diff -urdpN ../aMule-2.1.3-orig/src/Makengfile ./src/Makengfile +--- ../aMule-2.1.3-orig/src/Makengfile 2005-03-16 18:27:56.000000000 +0100 ++++ ./src/Makengfile 2006-06-12 18:30:05.000000000 +0200 +@@ -7,6 +7,7 @@ $(proc add-type-options,c,o, $(CFLAGS)) + $(proc add-type-options,cpp,o, -Isrc $(CXXFLAGS)) + + SOURCES = AddFriend.cpp \ ++ AdunanzA.cpp \ + animate.cpp \ + BarShader.cpp \ + BaseClient.cpp \ +diff -urdpN ../aMule-2.1.3-orig/src/MuleListCtrl.cpp ./src/MuleListCtrl.cpp +--- ../aMule-2.1.3-orig/src/MuleListCtrl.cpp 2006-01-10 01:06:29.000000000 +0100 ++++ ./src/MuleListCtrl.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -36,6 +36,7 @@ + #include "MuleListCtrl.h" // Interface declarations + #include "OPCodes.h" // Needed for MP_LISTCOL_1 + #include "GetTickCount.h" // Needed for GetTickCount() ++#include "amule.h" + + #include // Needed for isprint() and tolower + +@@ -107,7 +108,7 @@ void CMuleListCtrl::SaveSettings() + return; + } + +- wxConfigBase* cfg = wxConfigBase::Get(); ++ wxConfigBase* cfg = theApp.acfg; + + // Save sorting, column and order + cfg->Write(wxT("/eMule/TableSorting") + m_name, (long)(m_sort_column | m_sort_order)); +@@ -131,7 +132,7 @@ void CMuleListCtrl::LoadSettings() + return; + } + +- wxConfigBase* cfg = wxConfigBase::Get(); ++ wxConfigBase* cfg = theApp.acfg; + + // Load sort order (including sort-column) + long setting = cfg->Read(wxT("/eMule/TableSorting") + m_name, 0l); +diff -urdpN ../aMule-2.1.3-orig/src/muuli_wdr.cpp ./src/muuli_wdr.cpp +--- ../aMule-2.1.3-orig/src/muuli_wdr.cpp 2006-05-02 05:28:53.000000000 +0200 ++++ ./src/muuli_wdr.cpp 2006-06-12 19:20:49.000000000 +0200 +@@ -50,6 +50,9 @@ + #include "PartFileConvert.h" + #include "KadDlg.h" + ++#include "amuleDlg.h" ++#include "AdunanzA.h" ++ + + // Implement window functions + +@@ -199,7 +202,7 @@ wxSizer *searchDlg( wxWindow *parent, bo + { + _("Local Search"), + _("Global Search"), +- _("Kad"), ++ _("KAdu"), + _("FileHash (WWW)") + }; + wxChoice *item9 = new wxChoice( parent, ID_SEARCHTYPE, wxDefaultPosition, wxDefaultSize, 4, strs9, 0 ); +@@ -1596,7 +1599,7 @@ wxSizer *PreferencesGeneralTab( wxWindow + wxStaticBox *item6 = new wxStaticBox( parent, -1, _("Nick") ); + wxStaticBoxSizer *item5 = new wxStaticBoxSizer( item6, wxVERTICAL ); + +- CMuleTextCtrl *item7 = new CMuleTextCtrl( parent, IDC_NICK, _("http://www.aMule.org - the Linux Mule"), wxDefaultPosition, wxSize(90,-1), 0 ); ++ CMuleTextCtrl *item7 = new CMuleTextCtrl( parent, IDC_NICK, _("http://www.adunanza.net"), wxDefaultPosition, wxSize(90,-1), 0 ); + item7->SetToolTip( _("This is the name that other users will see when connecting to you.") ); + item5->Add( item7, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5 ); + +@@ -1755,7 +1758,7 @@ wxSizer *PreferencesConnectionTab( wxWin + + wxBoxSizer *item16 = new wxBoxSizer( wxHORIZONTAL ); + +- wxSpinCtrl *item17 = new wxSpinCtrl( parent, IDC_SLOTALLOC, wxT("2"), wxDefaultPosition, wxSize(100,-1), 0, 1, 30, 2 ); ++ wxSpinCtrl *item17 = new wxSpinCtrl( parent, IDC_SLOTALLOC, wxT("2"), wxDefaultPosition, wxSize(100,-1), 0, 1, 500, 2 ); + item16->Add( item17, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + wxStaticText *item18 = new wxStaticText( parent, ID_TEXT, _("kB/s"), wxDefaultPosition, wxDefaultSize, 0 ); +@@ -2270,11 +2273,12 @@ wxSizer *PreferencesStatisticsTab( wxWin + _("Active downloads"), + _("Active uploads"), + _("Systray Icon Speedbar"), ++ _("Kad-nodes active"), + _("Kad-nodes current"), + _("Kad-nodes running"), + _("Kad-nodes session") + }; +- wxChoice *item14 = new wxChoice( parent, IDC_COLORSELECTOR, wxDefaultPosition, wxDefaultSize, 15, strs14, 0 ); ++ wxChoice *item14 = new wxChoice( parent, IDC_COLORSELECTOR, wxDefaultPosition, wxDefaultSize, 16, strs14, 0 ); + item13->Add( item14, 0, wxGROW|wxALIGN_CENTER_HORIZONTAL|wxRIGHT, 5 ); + + wxButton *item15 = new wxButton( parent, IDC_COLOR_BUTTON, _("Select"), wxDefaultPosition, wxDefaultSize, 0 ); +@@ -3212,7 +3216,7 @@ wxSizer *KadDlg( wxWindow *parent, bool + item5->SetName( wxT("nodesListLabel") ); + item3->Add( item5, 0, wxADJUST_MINSIZE|wxALIGN_CENTER|wxLEFT|wxRIGHT, 5 ); + +- CMuleTextCtrl *item6 = new CMuleTextCtrl( parent, IDC_NODESLISTURL, _("http://download.overnet2000.de/nodes.dat"), wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); ++ CMuleTextCtrl *item6 = new CMuleTextCtrl( parent, IDC_NODESLISTURL, _(ADU_NODES_DAT), wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); + item6->SetToolTip( _("Enter the url to a nodes.dat file here and press the button to the left to update the list of known nodes.") ); + item3->Add( item6, 1, wxADJUST_MINSIZE|wxGROW|wxALIGN_CENTER_HORIZONTAL|wxLEFT, 5 ); + +@@ -3221,7 +3225,7 @@ wxSizer *KadDlg( wxWindow *parent, bool + wxStaticBox *item8 = new wxStaticBox( parent, -1, _("Nodes stats") ); + wxStaticBoxSizer *item7 = new wxStaticBoxSizer( item8, wxVERTICAL ); + +- wxWindow *item9 = new COScopeCtrl(3,0,GRAPH_KAD,parent); ++ wxWindow *item9 = new COScopeCtrl(4,0,GRAPH_KAD,parent); + item9->SetName(wxT("kadScope")); + wxASSERT( item9 ); + item7->Add( item9, 1, wxGROW, 5 ); +@@ -3232,11 +3236,22 @@ item9->SetName(wxT("kadScope")); + + wxBoxSizer *item11 = new wxBoxSizer( wxHORIZONTAL ); + +- wxWindow *item12 = new CColorFrameCtrl(parent,IDC_C0,20,14); ++ wxWindow *item12 = new CColorFrameCtrl(parent,IDC_C1,20,14); + wxASSERT( item12 ); + item11->Add( item12, 0, wxFIXED_MINSIZE|wxALIGN_CENTER, 5 ); + +- wxStaticText *item13 = new wxStaticText( parent, ID_TEXT, _("Current"), wxDefaultPosition, wxDefaultSize, 0 ); ++ wxStaticText *item13 = new wxStaticText( parent, ID_TEXT, _("Current Active"), wxDefaultPosition, wxDefaultSize, 0 ); ++ item11->Add( item13, 0, wxADJUST_MINSIZE|wxALIGN_CENTER|wxLEFT, 5 ); ++ ++ item10->Add( item11, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); ++ ++ item11 = new wxBoxSizer( wxHORIZONTAL ); ++ ++ item12 = new CColorFrameCtrl(parent,IDC_C0,20,14); ++ wxASSERT( item12 ); ++ item11->Add( item12, 0, wxFIXED_MINSIZE|wxALIGN_CENTER, 5 ); ++ ++ item13 = new wxStaticText( parent, ID_TEXT, _("Current"), wxDefaultPosition, wxDefaultSize, 0 ); + item11->Add( item13, 0, wxADJUST_MINSIZE|wxALIGN_CENTER|wxLEFT, 5 ); + + item10->Add( item11, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); +@@ -4009,6 +4024,7 @@ void muleToolbar( wxToolBar *parent ) + parent->AddTool( ID_BUTTONSHARED, _("Shared Files"), amuleDlgImages( 23 ), wxNullBitmap, wxITEM_CHECK, _("Shared Files Window") ); + parent->AddTool( ID_BUTTONMESSAGES, _("Messages"), amuleDlgImages( 24 ), wxNullBitmap, wxITEM_CHECK, _("Messages Window") ); + parent->AddTool( ID_BUTTONSTATISTICS, _("Statistics"), amuleDlgImages( 25 ), wxNullBitmap, wxITEM_CHECK, _("Statistics Graph Window") ); ++ parent->AddTool( ID_IRC, _("Chat/Supporto"), amuleDlgImages( 930 ), wxNullBitmap, wxITEM_NORMAL, _("Informazioni e Aiuto") ); + parent->AddSeparator(); + parent->AddTool( ID_BUTTONNEWPREFERENCES, _("Preferences"), amuleDlgImages( 26 ), wxNullBitmap, wxITEM_NORMAL, _("Preferences Settings Window") ); + parent->AddTool( ID_BUTTONIMPORT, _("Import"), amuleDlgImages( 32 ), wxNullBitmap, wxITEM_NORMAL, _("The partfile importer tool") ); +@@ -5062,6 +5078,109 @@ wxBitmap clientImages( size_t index ) + wxBitmap bitmap( image ); + return bitmap; + } ++ ++ // Stefano Picerno: Aggiunte due immagini ++ if (index == Client_Adunanza_Flag) ++ { // Adunanza FLAG ++ /* XPM */ ++ static const char *xpm_data[] = { ++ /* columns rows colors chars-per-pixel */ ++ "16 16 6 1", ++ " c None", ++ "a c Black", ++ "b c #101010", ++ "c c #FF0000", ++ "e c #222222", ++ "f c #0D0D0D", ++ /* pixels */ ++ " ", ++ " ", ++ " ", ++ " ", ++ " ", ++ " ", ++ " ", ++ " aa ", ++ " acca ", ++ " acccca ", ++ " accaacca", ++ " accaacca", ++ " acccccca", ++ " accaacca", ++ " accaacca", ++ " aa aa " ++ }; ++ ++ wxBitmap bitmap( xpm_data ); ++ return bitmap; ++ } ++ if (index == Client_Fastweb_Flag) ++ { // Fastweb FLAG ++ /* XPM */ ++ static const char *xpm_data[] = { ++ /* columns rows colors chars-per-pixel */ ++ "16 16 6 1", ++ " c None", ++ "a c Black", ++ "b c #101010", ++ "c c #0000FF", ++ "e c #222222", ++ "f c #0D0D0D", ++ /* pixels */ ++ " ", ++ " ", ++ " ", ++ " ", ++ " ", ++ " ", ++ " ", ++ " aaaaa ", ++ " accccca", ++ " accccca", ++ " accaa ", ++ " acccca ", ++ " acccca ", ++ " accaa ", ++ " acca ", ++ " aa " ++ }; ++ wxBitmap bitmap( xpm_data ); ++ return bitmap; ++ } ++ if (index == Client_Fiber_Flag) ++ { // Fiber FLAG ++ /* XPM */ ++ static const char *xpm_data[] = { ++ /* columns rows colors chars-per-pixel */ ++ "16 16 6 1", ++ " c None", ++ "a c Black", ++ "b c #003070", ++ "c c #A0A0A0", ++ "e c #FFFFFF", ++ "f c #0D0D0D", ++ /* pixels */ ++ " aa ", ++ " aeea ", ++ " aaeaea ", ++ " abbaeea ", ++ " abbbbaa ", ++ "abbbbba ", ++ "abbbba ", ++ " abba ", ++ " aa ", ++ " ", ++ " ", ++ " ", ++ " ", ++ " ", ++ " ", ++ " " ++ }; ++ wxBitmap bitmap( xpm_data ); ++ return bitmap; ++ } ++ // Fine + return wxNullBitmap; + } + +@@ -5236,6 +5355,8 @@ wxBitmap dlStatusImages( size_t index ) + wxBitmap bitmap( xpm_data ); + return bitmap; + } ++ ++ + return wxNullBitmap; + } + +@@ -6624,6 +6745,8 @@ wxBitmap amuleSpecial( size_t index ) + wxBitmap bitmap( image ); + return bitmap; + } ++ ++ + return wxNullBitmap; + } + +@@ -9480,6 +9603,259 @@ wxBitmap amuleDlgImages( size_t index ) + wxBitmap bitmap( image ); + return bitmap; + } ++ ++ if (index == 930) ++ { ++ static const char *xpm_data[] = { ++"32 32 211 2", ++" c None", ++". c #043F8A", ++"+ c #1659A2", ++"@ c #3A92FF", ++"# c #77A6CD", ++"$ c #547C67", ++"% c #2479F1", ++"& c #084B9A", ++"* c #003C83", ++"= c #00397C", ++"- c #2A5865", ++"; c #727476", ++"> c #116CC9", ++", c #4A7CAD", ++"' c #1558A7", ++") c #3B95DB", ++"! c #54AFED", ++"~ c #74C2FA", ++"{ c #7EC6FB", ++"] c #83C9FB", ++"^ c #75B8EE", ++"/ c #71A6DA", ++"( c #245F9F", ++"_ c #003572", ++": c #F1F0EF", ++"< c #1960AC", ++"[ c #003F8A", ++"} c #1B65AE", ++"| c #4997D8", ++"1 c #75BCF3", ++"2 c #95CCFB", ++"3 c #9CD1FB", ++"4 c #BEE1FD", ++"5 c #B4D9F7", ++"6 c #AFD5F3", ++"7 c #9DC5EE", ++"8 c #34659B", ++"9 c #D1BDA1", ++"0 c #1A559A", ++"a c #00408B", ++"b c #2774C4", ++"c c #8EC3FD", ++"d c #B5DCFB", ++"e c #D4EBFE", ++"f c #E7F4FF", ++"g c #FDFFFF", ++"h c #EAF6FF", ++"i c #95B3D7", ++"j c #3F6EA2", ++"k c #00326C", ++"l c #0C498E", ++"m c #4B6389", ++"n c #EEF8FF", ++"o c #C3E5FF", ++"p c #23558D", ++"q c #035AB3", ++"r c #276BB8", ++"s c #F2F2F1", ++"t c #E3E5EA", ++"u c #DEE0E6", ++"v c #D4DCE6", ++"w c #CADAEA", ++"x c #C6D6E6", ++"y c #CDE2F4", ++"z c #BDDEFB", ++"A c #7B97BA", ++"B c #6485AE", ++"C c #000000", ++"D c #4182C7", ++"E c #FF8080", ++"F c #D90000", ++"G c #FFFFE0", ++"H c #D9D900", ++"I c #9ECBFC", ++"J c #5384BD", ++"K c #5BA4E1", ++"L c #B7CFE6", ++"M c #FF0504", ++"N c #B50001", ++"O c #BC0003", ++"P c #FFFF00", ++"Q c #B2B200", ++"R c #79AEE9", ++"S c #18529C", ++"T c #F3FAFF", ++"U c #FF6262", ++"V c #8ABFFB", ++"W c #CEE9FF", ++"X c #ADCAE6", ++"Y c #688DBA", ++"Z c #C1DDF4", ++"` c #ACD6FE", ++" . c #83BBF9", ++".. c #C20000", ++"+. c #8AA2C1", ++"@. c #95AFCE", ++"#. c #ACCBE9", ++"$. c #76B1F7", ++"%. c #3A85E8", ++"&. c #A6D2FE", ++"*. c #A5C6E6", ++"=. c #4D79AF", ++"-. c #B3D4F3", ++";. c #CBE7FF", ++">. c #95C6FC", ++",. c #63A4F6", ++"'. c #377FE6", ++"). c #002D62", ++"!. c #7BB4F9", ++"~. c #4E94F2", ++"{. c #256CD0", ++"]. c #6CA9F7", ++"^. c #3E89ED", ++"/. c #114D9C", ++"(. c #642909", ++"_. c #A3C5EA", ++":. c #FFFFA8", ++"<. c #A0A50B", ++"[. c #A5AA0B", ++"}. c #A9AC0B", ++"|. c #5B9DF4", ++"1. c #2F76D7", ++"2. c #D48D4E", ++"3. c #DAA16C", ++"4. c #CE8240", ++"5. c #AE6327", ++"6. c #8DBBF0", ++"7. c #C67530", ++"8. c #B4682C", ++"9. c #EBC999", ++"0. c #E4B886", ++"a. c #D38E52", ++"b. c #9B5522", ++"c. c #96BEE6", ++"d. c #9EC2E6", ++"e. c #4389F2", ++"f. c #2D70CD", ++"g. c #783910", ++"h. c #E0AE7D", ++"i. c #D69557", ++"j. c #86461A", ++"k. c #858588", ++"l. c #8E4B1B", ++"m. c #675B63", ++"n. c #8192AF", ++"o. c #A0CEFD", ++"p. c #7FBDF9", ++"q. c #4289EC", ++"r. c #914C1B", ++"s. c #BA6C2C", ++"t. c #67A9F8", ++"u. c #6DAAF8", ++"v. c #1857B1", ++"w. c #0A4083", ++"x. c #A55C25", ++"y. c #5A2D12", ++"z. c #EED2AE", ++"A. c #B67038", ++"B. c #0D51A5", ++"C. c #1462D2", ++"D. c #2171E8", ++"E. c #2F82F0", ++"F. c #3684F1", ++"G. c #4490F2", ++"H. c #77B2F9", ++"I. c #DDDBD7", ++"J. c #45312A", ++"K. c #32373E", ++"L. c #014499", ++"M. c #0657C6", ++"N. c #7E98B6", ++"O. c #6F310D", ++"P. c #CF874A", ++"Q. c #F6E7DA", ++"R. c #9A9794", ++"S. c #48494C", ++"T. c #A7602A", ++"U. c #D1B28B", ++"V. c #E5DCD2", ++"W. c #BDBDB6", ++"X. c #DCA25C", ++"Y. c #CA7B38", ++"Z. c #C27739", ++"`. c #C68338", ++" + c #686A6D", ++".+ c #171614", ++"++ c #B4B4B1", ++"@+ c #AD6228", ++"#+ c #BE7D3F", ++"$+ c #AAAAA7", ++"%+ c #A0A09E", ++"&+ c #E3E3E0", ++"*+ c #CD813F", ++"=+ c #D99A61", ++"-+ c #D4CDC2", ++";+ c #E8E8E6", ++">+ c #EFEFED", ++",+ c #054EB0", ++"'+ c #D89C47", ++")+ c #B68B67", ++"!+ c #C9C2B9", ++"~+ c #7C4D2D", ++"{+ c #CBCBC7", ++"]+ c #97511E", ++"^+ c #833F14", ++"/+ c #682B09", ++"(+ c #3F3330", ++"_+ c #6D7072", ++":+ c #C37A31", ++"<+ c #E49C3F", ++"[+ c #D48C38", ++" . . . . . . ", ++" . . + @ # $ % & * * * * * = = = = = ", ++" . - ; > @ , * * * ' ) ! ~ { ] { ^ / ( = _ _ ", ++" . $ : < > [ * } | 1 2 3 4 4 4 4 4 4 5 6 7 / 8 _ _ ", ++" . 9 0 a [ b | c d e f g g g g g g g g g h e 4 i j _ k ", ++". l m a ' ) ~ d e g g g g g g g g g g g g g g n e o i p k ", ++". q a r ) ~ d s t u v w w w x x x x w w w v v u t y z 7 j k ", ++". [ } ) { 4 s A [ [ [ [ B [ [ [ [ [ [ B [ [ [ [ [ A y z / p k ", ++"C a D ~ z g w [ E E E F [ E E E E E F [ G G G G H [ t e I J k ", ++"a r K d h n L [ E g M N [ E g M M M O [ P P P P Q [ v n d R S k ", ++"a D c z T e L [ U N N N [ E M M N N O [ P Q Q Q Q [ w T d V r k ", ++"[ K 2 z T W X [ [ [ [ [ [ E M M N [ [ [ P [ [ [ [ Y Z n ` .D k ", ++"[ ^ I z n o X [ E E E ..[ E M M N [ G P P [ +.@.i #.z f ` $.%.k ", ++"[ K &.` W 4 *.[ E g M N [ E M M N [ G P P [ [ [ [ =.-.;.>.,.'.).", ++"* J I &.4 z *.[ E M M N [ E M M N [ G P P G G G H [ #.4 !.~.{.).", ++"[ ( / &.d z *.[ E M M N [ E M M N [ G P P P P P Q [ *.&.].^./.k ", ++" * D (.(.(._.[ (.(.(.(.(.(.(.N N [ :.<.[.[.[.[.}.[ _.V |.1.). ", ++" * (.2.(.I (.(.3.2.4.4.5.(.[ [ [ =.[ [ [ [ [ [ [ J 6.|.^./.). ", ++" (.7.8.(.(.9.0.a.4.b.(.(.7 c.c.7 7 _.*.*.*.*.d.7 6.|.e.f.). ", ++" (.8.g.4.h.i.2.j.(.k.I &.&.&.&.&.&.&.d z z z ` >.~.'.f.S ). ", ++"(.(.l.4.2.4.5.(.m.n.!.c c c c c c c >.o.d d d p.|.q.r /.). ", ++" (.r.s.5.5.g.b.(.b ^.,.t.u.].u.u.u.!.V I ` .~.q.v.w.k ", ++"(.(.x.s.7.y.h.z.A.(._ B.C.D.E.F.F.G.,.H.>.V ~.'.' k k ", ++" (.s.7.7.3.g I.C l.(.J.K.K._ k k L.M.,. .,.D.' k N. ", ++"(.O.7.4.7.P.Q.R.S.T.U.V.s W.K. k L.C.|.F.' k ", ++"(.r.2.X.i.Y.P.i.Z.`.U. +.+s ++K. k M.F.M.). ", ++"(.5.2.z.h.2.Y.8.@+#+++$+%+s &+K. k M.C.k ", ++"(.r.*+=+3.2.Y.s.@+A.-+;+s g >+K. k ,+k ", ++"(.O.8.*+*+'+7.s.x.)+!+I.;+>+;+K. ).k ", ++"(.g.(.x.x.x.x.b.~+%+{+ +{+I.k.K. k ", ++"O.l.]+^+/+(.y.(+K._+R.++S.K.K. ", ++"O.r.:+<+[+@+(. K.K.K.K. "}; ++ wxBitmap bitmap( xpm_data ); ++ return bitmap; ++ } ++ ++ + return wxNullBitmap; + } + +diff -urdpN ../aMule-2.1.3-orig/src/muuli_wdr.h ./src/muuli_wdr.h +--- ../aMule-2.1.3-orig/src/muuli_wdr.h 2005-12-11 08:32:01.000000000 +0100 ++++ ./src/muuli_wdr.h 2006-06-12 18:30:05.000000000 +0200 +@@ -530,6 +530,7 @@ const int ID_BUTTONSTATISTICS = 10383; + const int ID_BUTTONNEWPREFERENCES = 10384; + const int ID_BUTTONIMPORT = 10385; + const int ID_ABOUT = 10386; ++const int ID_IRC = 99910387; + void muleToolbar( wxToolBar *parent ); + + // Declare bitmap functions +diff -urdpN ../aMule-2.1.3-orig/src/NetworkFunctions.cpp ./src/NetworkFunctions.cpp +--- ../aMule-2.1.3-orig/src/NetworkFunctions.cpp 2006-03-13 01:07:00.000000000 +0100 ++++ ./src/NetworkFunctions.cpp 2006-06-12 18:30:05.000000000 +0200 +@@ -110,7 +110,7 @@ const IPRange ranges[] = { + // Acording to RFC3330, 24.* and 14.* must be parsed as normal ips. + //{ wxT("14.0.0.0"), 8, false }, // Public-Data Networks [RFC1700, page 181] + //{ wxT("24.0.0.0"), 8, false }, // Cable Television Networks -- +-{ wxT("39.0.0.0"), 8, false }, // Reserved but subject ++//{ wxT("39.0.0.0"), 8, false }, // Reserved but subject + // to allocation [RFC1797] + { wxT("80.239.200.0"), 8, false }, + { wxT("127.0.0.0"), 8, false }, // Loopback [RFC1700, page 5] +diff -urdpN ../aMule-2.1.3-orig/src/OPCodes.h ./src/OPCodes.h +--- ../aMule-2.1.3-orig/src/OPCodes.h 2006-06-11 16:58:19.000000000 +0200 ++++ ./src/OPCodes.h 2006-06-12 18:57:50.000000000 +0200 +@@ -72,12 +72,6 @@ enum { + + //#define __CVS__ + +-#ifdef __CVS__ +- #define MOD_VERSION_LONG wxT("aMule CVS") +-#else +- #define MOD_VERSION_LONG wxT("aMule 2.1.3") +-#endif +- + #define VERSION_MJR 2 + #define VERSION_MIN 1 + #define VERSION_UPDATE 3 +@@ -117,17 +111,17 @@ enum EClientSoftware { + #define MAX_CLIENTCONNECTIONTRY 2 + #define CONNECTION_TIMEOUT 40000 // set this lower if you want less connections at once, set it higher if you have enough sockets (edonkey has its own timout too, so a very high value won't effect this) + #define FILEREASKTIME 1300000 // 1300000 <- original value *** +-#define SERVERREASKTIME 800000 // don't set this too low, it wont speed up anything, but it could kill amule or your internetconnection ++#define SERVERREASKTIME MIN2MS(8) // don't set this too low, it wont speed up anything, but it could kill amule or your internetconnection + #define UDPSERVERREASKTIME 1300000 // 1300000 <- original value *** + #define SOURCECLIENTREASKS MIN2MS(40) //40 mins + #define SOURCECLIENTREASKF MIN2MS(5) //5 mins + #define KADEMLIAASKTIME SEC2MS(1) //1 second +-#define KADEMLIATOTALFILE 7 //Total files to search sources for. +-#define KADEMLIAREASKTIME HR2MS(1) //1 hour ++#define KADEMLIATOTALFILE 15 //Total files to search sources for. ++#define KADEMLIAREASKTIME MIN2MS(3) //1 hour + #define KADEMLIAPUBLISHTIME SEC(2) //2 second + #define KADEMLIATOTALSTORENOTES 1 //Total hashes to store. +-#define KADEMLIATOTALSTORESRC 2 //Total hashes to store. +-#define KADEMLIATOTALSTOREKEY 1 //Total hashes to store. ++#define KADEMLIATOTALSTORESRC 2*6 //Total hashes to store. ++#define KADEMLIATOTALSTOREKEY 1*3 //Total hashes to store. + #define KADEMLIAREPUBLISHTIMES HR2S(5) //5 hours + #define KADEMLIAREPUBLISHTIMEN HR2S(24) //24 hours + #define KADEMLIAREPUBLISHTIMEK HR2S(24) //24 hours +@@ -138,6 +132,11 @@ enum EClientSoftware { + #define KADEMLIAMAXNOTESPERFILE 50 //Max number of notes per entry in index. + #define KADEMLIABUDDYTIMEOUT MIN2MS(10) // 10 min to receive the buddy + ++#define KADEMLIAFRESHGUESS_TOLERANCE 0.25f ++#define KADEMLIAFRESHGUESS_WEIGHT 0.4f ++#define KADEMLIAFRESHGUESS_LOWNORMSOURCES 16 ++#define KADEMLIAFRESHGUESS_NONORMSOURCES 8 ++ + #define ED2KREPUBLISHTIME MIN2MS(1) //1 min + #define MINCOMMONPENALTY 4 + #define UDPSERVERSTATTIME SEC2MS(5) //5 secs +@@ -146,14 +145,14 @@ enum EClientSoftware { + #define UDPMAXQUEUETIME SEC2MS(30) //30 Seconds + #define RSAKEYSIZE 384 //384 bits + #define MAX_SOURCES_FILE_SOFT 500 +-#define MAX_SOURCES_FILE_UDP 50 ++#define MAX_SOURCES_FILE_UDP 500 + #define SESSIONMAXTRANS (9.3*1024*1024) // 9.3 Mbytes. "Try to send complete chunks" always sends this amount of data + #define SESSIONMAXTIME HR2MS(1) //1 hour + #define MAXFILECOMMENTLEN 50 + #define MIN_UP_CLIENTS_ALLOWED 2 // min. clients allowed to download regardless UPLOAD_CLIENT_DATARATE or any other factors. Don't set this too high + // MOD Note: end + +-#define MAXCONPER5SEC 20 ++#define MAXCONPER5SEC 75 + #define MAXCON5WIN9X 10 + #define UPLOAD_CHECK_CLIENT_DR 1000 + #define UPLOAD_LOW_CLIENT_DR 2400 // uploadspeed per client in bytes - you may want to adjust +@@ -398,6 +397,34 @@ enum OP_ClientToServer { + #define FT_AICH_HASH 0x27 + #define FT_COMPLETE_SOURCES 0x30 // nr. of sources which share a complete version + //of the associated file (supported by eserver 16.46+) ++ ++#define TAG_COMPLETE_SOURCES "\x30" ++ ++#define FT_KADFIRSTPUBLISH 0x36 // ++#define TAG_KADFIRSTPUBLISH "\x36" // ++ ++#define FT_KADSOURCES 0x37 // ++#define TAG_KADSOURCES "\x37" // ++ ++#define FT_KADLASTPUBLISH 0x38 // ++#define TAG_KADLASTPUBLISH "\x38" // ++#define FT_KADREPUBLISHTIMEK 0x39 // ++#define TAG_KADREPUBLISHTIMEK "\x39" // ++ ++#define FT_ADUCONNECTION 0x40 // 0 o assente sconosciuto, 1 dsl, 2 fibra ++#define TAG_ADUCONNECTION "\x40" // ++ ++#define FT_KADCOMPLETE 0x41 // ++#define TAG_KADCOMPLETE "\x41" // ++ ++#define FT_KADCOMPLETE_SOURCES 0x42 // ++#define TAG_KADCOMPLETE_SOURCES "\x42" // ++ ++#define FT_KADCOMPLETE_FIRSTPUBLISH 0x43 // ++#define TAG_KADCOMPLETE_FIRSTPUBLISH "\x43" // ++#define FT_KADCOMPLETE_LASTPUBLISH 0x44 // ++#define TAG_KADCOMPLETE_LASTPUBLISH "\x44" // ++ + // statistic + #define FT_ATTRANSFERED 0x50 // + #define FT_ATREQUESTED 0x51 // +@@ -676,10 +703,21 @@ enum MuleTags { + #define KADEMLIA_FINDBUDDY_RES 0x5A // + + // KADEMLIA (parameter) +-#define KADEMLIA_FIND_VALUE 0x02 +-#define KADEMLIA_STORE 0x04 +-#define KADEMLIA_FIND_NODE 0x0B ++#define KADEMLIA_FIND_VALUE 0x08 ++#define KADEMLIA_STORE 0x06 ++#define KADEMLIA_FIND_NODE 0x38 + + #define DISKSPACERECHECKTIME 60000 // checkDiskspace + ++// AdunanzA Parameter ++#define ET_SUPERADU3 0x60 // Adunanza HandShaking ++#define ADU_SESSIONMAXTRANS (18.6*1024*1024) // Adunanza Expanded Chunks ++#define ADU_FILEREASKTIME MIN2MS(6) ++// End AdunanzA Parameter ++// Stefano Picerno: defines prese da emule ++#define SESSIONMAXTRANS (9.3*1024*1024) // 9.3 Mbytes. "Try to send complete chunks" always sends this amount of data ++#define SESSIONMAXTIME HR2MS(1) //1 hour ++#define HR2MS(hr) MIN2MS((hr)*60) ++// Fine ++ + #endif // OPCODES_H +diff -urdpN ../aMule-2.1.3-orig/src/OScopeCtrl.cpp ./src/OScopeCtrl.cpp +--- ../aMule-2.1.3-orig/src/OScopeCtrl.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/OScopeCtrl.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -397,12 +397,16 @@ void COScopeCtrl::OnSize(wxSizeEvent& ev + oldwidth=evt.GetSize().GetWidth(); + oldheight=evt.GetSize().GetHeight(); + wxRect myrect=GetClientRect(); ++ if (myrect.width<1) ++ myrect.width=40; ++ ++ if (myrect.height<1) ++ myrect.height=40; ++ + rectClient.left=myrect.x; + rectClient.top=myrect.y; + rectClient.right=myrect.x+myrect.width; + rectClient.bottom=myrect.y+myrect.height; +- if(myrect.width<1 || myrect.height<1) +- return; + + // set some member variables to avoid multiple function calls + nClientHeight = myrect.height; +diff -urdpN ../aMule-2.1.3-orig/src/OtherFunctions.cpp ./src/OtherFunctions.cpp +--- ../aMule-2.1.3-orig/src/OtherFunctions.cpp 2006-06-05 12:23:08.000000000 +0200 ++++ ./src/OtherFunctions.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -76,6 +76,9 @@ + wxString GetMuleVersion() + { + wxString ver(wxT(VERSION)); ++ // Stefano Picerno: Aggiungo la label "AdunanzA" nel nome del programma ++ ver += wxT(" AdunanzA"); ++ // Fine modifiche + + ver += wxT(" using "); + +diff -urdpN ../aMule-2.1.3-orig/src/Packet.cpp ./src/Packet.cpp +--- ../aMule-2.1.3-orig/src/Packet.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/Packet.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -33,6 +33,8 @@ + #include "OtherStructs.h" // Needed for Header_Struct + #include "ArchSpecific.h" // Needed for ENDIAN_* + #include "OtherFunctions.h" // Needed for md4cpy ++#include "amule.h" ++#include "RemoteSettings.h" + + // Copy constructor + CPacket::CPacket(CPacket &p) +@@ -254,9 +256,11 @@ void CPacket::PackPacket() + delete[] output; + return; + } ++ if (!theApp.rm) ++ return; + +- if (prot == OP_KADEMLIAHEADER) { +- prot = OP_KADEMLIAPACKEDPROT; ++ if (prot == theApp.rm->kadOpcode) { ++ prot = theApp.rm->kadZOpcode; + } else { + prot = OP_PACKEDPROT; + } +diff -urdpN ../aMule-2.1.3-orig/src/PartFile.cpp ./src/PartFile.cpp +--- ../aMule-2.1.3-orig/src/PartFile.cpp 2006-03-23 12:58:00.000000000 +0100 ++++ ./src/PartFile.cpp 2006-06-12 18:43:48.000000000 +0200 +@@ -66,6 +66,7 @@ + #include "Logger.h" + #include // Needed for CFormat + #include "FileFunctions.h" // Needed for GetLastModificationTime ++#include "RemoteSettings.h" + + #include + #include +@@ -73,6 +74,8 @@ + #include "kademlia/kademlia/Kademlia.h" + #include "kademlia/kademlia/Search.h" + ++#include "AdunanzA.h" ++ + #ifndef CLIENT_GUI + #include "InternalEvents.h" // Needed for CMuleInternalEvent + +@@ -470,7 +473,7 @@ uint8 CPartFile::LoadPartFile(const wxSt + } + case FT_KADLASTPUBLISHSRC:{ + SetLastPublishTimeKadSrc(newtag.GetInt(), 0); +- if(GetLastPublishTimeKadSrc() > (uint32)time(NULL)+KADEMLIAREPUBLISHTIMES) { ++ if(GetLastPublishTimeKadSrc() > (uint32)time(NULL)+theApp.rm->kadRepublishTimeS) { + //There may be a posibility of an older client that saved a random number here.. This will check for that.. + SetLastPublishTimeKadSrc(0,0); + } +@@ -1519,15 +1522,37 @@ uint32 CPartFile::Process(uint32 reduced + case DS_NONE: + case DS_WAITCALLBACK: + case DS_WAITCALLBACKKAD: { ++ /* Kaiser 10/04/2004 -- 15.19 ++ Cerchiamo di distinguere tra file request agli aduner ed agli esterni. ++ Gli aduner avranno un file request quando viene superato il tempo ADU_FILEREASKTIME mentre ++ gli esterni riceveranno richieste regolarmente, ovvero secondo tempo FILEREASKTIME */ ++ uint32 dwFileReaskTime = FILEREASKTIME; ++ if ( cur_src->IsAduClient() ) ++ dwFileReaskTime = ADU_FILEREASKTIME; ++ + if ( theApp.IsConnected() && + ( (!cur_src->GetLastAskedTime()) || +- (dwCurTick - cur_src->GetLastAskedTime()) > FILEREASKTIME)) { ++ (dwCurTick - cur_src->GetLastAskedTime()) > dwFileReaskTime )) { + if (!cur_src->AskForDownload()) { + // I left this break here just as a reminder + // just in case re rearange things.. + break; + } + } ++ else ++ { ++ // Gestisco il client NON ADU ++ if ( theApp.serverconnect->IsConnected() && ++ ( (!cur_src->GetLastAskedTime()) || ++ (dwCurTick - cur_src->GetLastAskedTime()) > FILEREASKTIME)) { ++ if (!cur_src->AskForDownload()) { ++ // I left this break here just as a reminder ++ // just in case re rearange things.. ++ break; ++ } ++ } ++ } ++ // Fine Mod Adu + break; + } + } +@@ -1568,9 +1593,9 @@ uint32 CPartFile::Process(uint32 reduced + } + + // Kad source search +- if( GetMaxSourcePerFileUDP() > GetSourceCount()){ ++ if( GetMaxSourcePerFileUDP() > GetAduSourceCount()){ + //Once we can handle lowID users in Kad, we remove the second IsConnected +- if (theApp.downloadqueue->DoKademliaFileRequest() && (Kademlia::CKademlia::getTotalFile() < KADEMLIATOTALFILE) && (dwCurTick > m_LastSearchTimeKad) && Kademlia::CKademlia::isConnected() && theApp.IsConnected() && !IsStopped()){ ++ if (theApp.downloadqueue->DoKademliaFileRequest() && (Kademlia::CKademlia::getTotalFile() < theApp.rm->kadTotalSearchFile) && (dwCurTick > m_LastSearchTimeKad) && Kademlia::CKademlia::isConnected() && theApp.IsConnected() && !IsStopped()){ + //Kademlia + theApp.downloadqueue->SetLastKademliaFileRequest(); + +@@ -1585,10 +1610,10 @@ uint32 CPartFile::Process(uint32 reduced + AddDebugLogLineM(false, logKadSearch, wxT("Preparing a Kad Search for ") + GetFileName()); + if (pSearch) { + AddDebugLogLineM(false, logKadSearch, wxT("Kad lookup started for ") + GetFileName()); +- if(m_TotalSearchesKad < 7) { ++ if(m_TotalSearchesKad < theApp.rm->kadReaskIncs) { + m_TotalSearchesKad++; + } +- m_LastSearchTimeKad = dwCurTick + (KADEMLIAREASKTIME*m_TotalSearchesKad); ++ m_LastSearchTimeKad = dwCurTick + (theApp.rm->kadReaskTime*m_TotalSearchesKad); + SetKadFileSearchID(pSearch->getSearchID()); + } + } +@@ -1767,10 +1792,10 @@ void CPartFile::UpdatePartsInfo() + if ( flag ) { + ArrayOfUInts16 count; + +- count.Alloc(GetSourceCount()); ++ //count.Alloc(GetSourceCount()); + + for ( SourceSet::iterator it = m_SrcList.begin(); it != m_SrcList.end(); ++it ) { +- if ( !(*it)->GetUpPartStatus().empty() && (*it)->GetUpPartCount() == partcount ) { ++ if ( !(*it)->GetUpPartStatus().empty() && (*it)->GetUpPartCount() == partcount && (*it)->IsAduClient() ) { + count.Add( (*it)->GetUpCompleteSourcesCount() ); + } + } +@@ -2409,6 +2434,10 @@ void CPartFile::RemoveAllSources(bool b + } + A4AFsrclist.clear(); + } ++ ++ if(!m_AduSrcList.empty()) { ++ m_AduSrcList.clear(); ++ } + /* eMule 0.30c implementation, i give it a try (Creteil) END ... */ + UpdateFileRatingCommentAvail(); + } +@@ -3597,8 +3626,11 @@ void CPartFile::AICHRecoveryDataAvailabl + } + + +-void CPartFile::ClientStateChanged( int oldState, int newState ) ++void CPartFile::ClientStateChanged( int oldState, int newState, CUpDownClient* client ) + { ++ if (client->IsAduClient()) ++ m_AduSrcList.insert( client ); ++ + if ( oldState == newState ) + return; + +@@ -3634,6 +3666,9 @@ void CPartFile::ClientStateChanged( int + + bool CPartFile::AddSource( CUpDownClient* client ) + { ++ if (client->IsAduClient()) ++ m_AduSrcList.insert( client ); ++ + if (m_SrcList.insert( client ).second) { + theStats::AddFoundSource(); + theStats::AddSourceOrigin(client->GetSourceFrom()); +@@ -3646,6 +3681,8 @@ bool CPartFile::AddSource( CUpDownClient + + bool CPartFile::DelSource( CUpDownClient* client ) + { ++ m_AduSrcList.erase( client ); ++ + if (m_SrcList.erase( client )) { + theStats::RemoveSourceOrigin(client->GetSourceFrom()); + theStats::RemoveFoundSource(); +@@ -3658,6 +3695,9 @@ bool CPartFile::DelSource( CUpDownClient + + void CPartFile::UpdatePartsFrequency( CUpDownClient* client, bool increment ) + { ++ if (!client->IsAduClient()) ++ return; ++ + const BitVector& freq = client->GetPartStatus(); + + if ( m_SrcpartFrequency.GetCount() != GetPartCount() ) { +@@ -3712,6 +3752,7 @@ void CPartFile::GetRatingAndComments(Fil + } + } + ++ + #else // CLIENT_GUI + + CPartFile::CPartFile(CEC_PartFile_Tag *tag) +@@ -4077,8 +4118,8 @@ uint16 CPartFile::GetMaxSources() const + uint16 CPartFile::GetMaxSourcePerFileSoft() const + { + unsigned int temp = ((unsigned int)GetMaxSources() * 9L) / 10; +- if (temp > MAX_SOURCES_FILE_SOFT) { +- return MAX_SOURCES_FILE_SOFT; ++ if (temp > theApp.rm->maxSrc) { ++ return theApp.rm->maxSrc; + } + return temp; + } +@@ -4086,10 +4127,42 @@ uint16 CPartFile::GetMaxSourcePerFileSof + uint16 CPartFile::GetMaxSourcePerFileUDP() const + { + unsigned int temp = ((unsigned int)GetMaxSources() * 3L) / 4; +- if (temp > MAX_SOURCES_FILE_UDP) { +- return MAX_SOURCES_FILE_UDP; ++ if (temp > theApp.rm->maxSrcUdp) { ++ return theApp.rm->maxSrcUdp; + } + return temp; + } + + #endif ++ ++#ifndef CLIENT_GUI ++// lupz port del faster endgame ++ ++// dazzle: This function is used to increase endgame speed. Called whenever no blocks are available to download for a speedy source. ++// this function drops the slowest source so the speedy source can download his blocks. ++bool CPartFile::DropSlowestSource(CUpDownClient* calling_source) { ++ uint32 lowestspeed = 0xffffffff; ++ CUpDownClient* slowest_source= NULL; ++ ++ std::list::iterator it = m_downloadingSourcesList.begin(); ++ for( ; it != m_downloadingSourcesList.end(); ++it) { ++ CUpDownClient *cur_src = *it; ++ if (cur_src->GetKBpsDown() < lowestspeed) { ++ lowestspeed = (unsigned int)cur_src->GetKBpsDown(); ++ slowest_source = cur_src; ++ } ++ } ++ ++ if (m_downloadingSourcesList.size() > 1 && slowest_source && slowest_source!=calling_source ) { // only remove source if it isn't the last one ++ ++ slowest_source->SendCancelTransfer(); ++ ++ slowest_source->SetDownloadState( DS_ONQUEUE ); ++ ++ RemoveDownloadingSource( slowest_source ); ++ ++ return true; ++ } else return false; ++} ++//end dazzle ++#endif +diff -urdpN ../aMule-2.1.3-orig/src/PartFile.h ./src/PartFile.h +--- ../aMule-2.1.3-orig/src/PartFile.h 2006-03-23 12:58:00.000000000 +0100 ++++ ./src/PartFile.h 2006-06-12 18:30:14.000000000 +0200 +@@ -140,16 +140,20 @@ public: + + #ifndef CLIENT_GUI + uint16 GetSourceCount() const { return m_SrcList.size(); } ++ uint16 GetAduSourceCount() const { return m_AduSrcList.size(); } + uint16 GetSrcA4AFCount() const { return A4AFsrclist.size(); } + #else + uint16 m_source_count, m_a4af_source_count; + uint16 GetSourceCount() const { return m_source_count; } + uint16 GetSrcA4AFCount() const { return m_a4af_source_count; } ++ uint16 m_adu_source_count; ++ uint16 GetAduSourceCount() const { return m_adu_source_count; } + #endif + uint16 GetTransferingSrcCount() const { return transferingsrc; } + uint32 GetNotCurrentSourcesCount() const { return m_notCurrentSources; }; + uint32 GetValidSourcesCount() const { return m_validSources; }; + ++ bool DropSlowestSource(CUpDownClient* calling_source); + uint32 GetNeededSpace(); + + wxString getPartfileStatus() const; //<<--9/21/02 +@@ -225,7 +229,7 @@ public: + * AddSource and DelSource takes care of calling this function when a source is + * removed, so there's no need to call this function when calling either of those. + */ +- void ClientStateChanged( int oldState, int newState ); ++ void ClientStateChanged( int oldState, int newState, CUpDownClient* client ); + + bool AddSource( CUpDownClient* client ); + bool DelSource( CUpDownClient* client ); +@@ -346,6 +350,7 @@ private: + + public: + SourceSet m_SrcList; ++ SourceSet m_AduSrcList; + SourceSet A4AFsrclist; + + bool hashsetneeded; +diff -urdpN ../aMule-2.1.3-orig/src/Preferences.cpp ./src/Preferences.cpp +--- ../aMule-2.1.3-orig/src/Preferences.cpp 2006-06-11 16:15:21.000000000 +0200 ++++ ./src/Preferences.cpp 2006-06-12 19:19:57.000000000 +0200 +@@ -64,6 +64,22 @@ + #include // Needed for std::sort + #endif + ++#include "AdunanzA.h" ++ ++// Modifiche AdunanzA ++uint32 CPreferences::m_AduMaxUpSlots = 10; ++//uint32 CPreferences::m_AduPercentageBandwidth = 50; ++uint32 CPreferences::m_AduAutoConnect = 0; ++uint32 CPreferences::m_AduForceExt11 = 1; ++uint64 CPreferences::s_totalAduDownloadedBytes; ++uint64 CPreferences::s_totalAduFDownloadedBytes; ++uint64 CPreferences::s_totalAduDDownloadedBytes; ++uint64 CPreferences::s_totalAduUploadedBytes; ++uint64 CPreferences::s_totalAduFUploadedBytes; ++uint64 CPreferences::s_totalAduDUploadedBytes; ++uint64 CPreferences::s_totalExtDownloadedBytes; ++uint64 CPreferences::s_totalExtUploadedBytes; ++// fine mod Adu + + #define DEFAULT_TCP_PORT 4662 + +@@ -763,7 +779,7 @@ void CPreferences::BuildItemList( const + /** + * User settings + **/ +- NewCfgItem(IDC_NICK, (new Cfg_Str( wxT("/eMule/Nick"), s_nick, wxT("http://www.aMule.org") ))); ++ NewCfgItem(IDC_NICK, (new Cfg_Str( wxT("/eMule/Nick"), s_nick, wxT("http://www.adunanza.net") ))); + #ifndef AMULE_DAEMON + NewCfgItem(IDC_LANGUAGE, (new Cfg_Lang())); + #endif +@@ -989,6 +1005,18 @@ void CPreferences::BuildItemList( const + s_MiscList.push_back( new Cfg_Str( wxT("/eMule/Language"), s_languageID ) ); + s_MiscList.push_back( new Cfg_Counter( wxT("/Statistics/TotalDownloadedBytes"), s_totalDownloadedBytes ) ); + s_MiscList.push_back( new Cfg_Counter( wxT("/Statistics/TotalUploadedBytes"), s_totalUploadedBytes ) ); ++ ++ ++ // Mod Adu ++ s_MiscList.push_back( new Cfg_Counter( wxT("/Statistics/TotalAduDownloadedBytes"), s_totalAduDownloadedBytes ) ); ++ s_MiscList.push_back( new Cfg_Counter( wxT("/Statistics/TotalAduFDownloadedBytes"), s_totalAduFDownloadedBytes ) ); ++ s_MiscList.push_back( new Cfg_Counter( wxT("/Statistics/TotalAduDDownloadedBytes"), s_totalAduDDownloadedBytes ) ); ++ s_MiscList.push_back( new Cfg_Counter( wxT("/Statistics/TotalExtDownloadedBytes"), s_totalExtDownloadedBytes ) ); ++ s_MiscList.push_back( new Cfg_Counter( wxT("/Statistics/TotalAduUploadedBytes"), s_totalAduUploadedBytes ) ); ++ s_MiscList.push_back( new Cfg_Counter( wxT("/Statistics/TotalAduFUploadedBytes"), s_totalAduFUploadedBytes ) ); ++ s_MiscList.push_back( new Cfg_Counter( wxT("/Statistics/TotalAduDUploadedBytes"), s_totalAduDUploadedBytes ) ); ++ s_MiscList.push_back( new Cfg_Counter( wxT("/Statistics/TotalExtUploadedBytes"), s_totalExtUploadedBytes ) ); ++ + s_MiscList.push_back( MkCfg_Int( wxT("/eMule/SplitterbarPosition"), s_splitterbarPosition, 75 ) ); + s_MiscList.push_back( new Cfg_Str( wxT("/eMule/YourHostname"), s_yourHostname, wxEmptyString ) ); + s_MiscList.push_back( new Cfg_Str( wxT("/eMule/DateTimeFormat"), s_datetimeformat, wxT("%A, %x, %X") ) ); +@@ -1257,7 +1285,7 @@ int32 CPreferences::GetRecommendedMaxCon + + void CPreferences::SavePreferences() + { +- wxConfigBase* cfg = wxConfigBase::Get(); ++ wxConfigBase* cfg = theApp.acfg; + + cfg->Write( wxT("/eMule/AppVersion"), wxT(PACKAGE_STRING) ); + +@@ -1272,7 +1300,7 @@ void CPreferences::SavePreferences() + void CPreferences::SaveCats() + { + if ( GetCatCount() ) { +- wxConfigBase* cfg = wxConfigBase::Get(); ++ wxConfigBase* cfg = theApp.acfg; + + // Save the main cat. + cfg->Write( wxT("/eMule/AllcatType"), (int)s_allcatType); +@@ -1298,6 +1326,22 @@ void CPreferences::SaveCats() + + void CPreferences::LoadPreferences() + { ++ // modifica AdunanzA ++#warning todo: Store/retrieve AdunanzA prefs somewhere ++ m_AduMaxUpSlots = ADUNANZA_DEF_UPSL; ++ //m_AduPercentageBandwidth = ADUNANZA_BAND_PERC; ++ m_AduAutoConnect = ADUNANZA_AUTO_CONN; ++ m_AduForceExt11 = ADUNANZA_AUTO_EXT11; ++ ++ // Stefano Picerno: forzo s_filterLanIP a false ++ AddLogLineM(false, _("AdnzA mod requires Always Filter LAN IPs set to . ") ); ++ SetFilterLanIPs( false ); ++ ++ AddLogLineM(false, _("AdnzA mod requires Transfer Full Chunks set to . ") ); ++ SetTransferFullChunks( true ); ++ // Fine Modifica ++ ++ // fine mod Adu + LoadCats(); + } + +@@ -1311,7 +1355,7 @@ void CPreferences::LoadCats() + + AddCat( defaultcat ); + +- wxConfigBase* cfg = wxConfigBase::Get(); ++ wxConfigBase* cfg = theApp.acfg; + + long max = cfg->Read( wxT("/General/Count"), 0l ); + +diff -urdpN ../aMule-2.1.3-orig/src/Preferences.h ./src/Preferences.h +--- ../aMule-2.1.3-orig/src/Preferences.h 2006-02-26 03:21:44.000000000 +0100 ++++ ./src/Preferences.h 2006-06-12 18:30:14.000000000 +0200 +@@ -35,6 +35,7 @@ + + #include + #include ++#include "AdunanzA.h" + + #include "Proxy.h" + +@@ -167,7 +168,7 @@ private: + + + +-const int cntStatColors = 15; ++const int cntStatColors = 16; + + + //! This typedef is a shortcut similar to the theApp shortcut, but uses :: instead of . +@@ -236,8 +237,31 @@ public: + static void Add2TotalUploaded(uint64 in) { s_totalUploadedBytes += in; } + static uint64 GetTotalDownloaded() { return s_totalDownloadedBytes; } + static uint64 GetTotalUploaded() { return s_totalUploadedBytes; } ++// Mod adu ++ static void Add2TotalAduDownloaded(uint64 in) { s_totalAduDownloadedBytes += in; } ++ static void Add2TotalAduFDownloaded(uint64 in) { s_totalAduFDownloadedBytes += in; } ++ static void Add2TotalAduDDownloaded(uint64 in) { s_totalAduDDownloadedBytes += in; } ++ static void Add2TotalAduUploaded(uint64 in) { s_totalAduUploadedBytes += in; } ++ static void Add2TotalAduFUploaded(uint64 in) { s_totalAduFUploadedBytes += in; } ++ static void Add2TotalAduDUploaded(uint64 in) { s_totalAduDUploadedBytes += in; } ++ static uint64 GetTotalAduDownloaded() { return s_totalAduDownloadedBytes; } ++ static uint64 GetTotalAduFDownloaded() { return s_totalAduFDownloadedBytes; } ++ static uint64 GetTotalAduDDownloaded() { return s_totalAduDDownloadedBytes; } ++ static uint64 GetTotalAduUploaded() { return s_totalAduUploadedBytes; } ++ static uint64 GetTotalAduFUploaded() { return s_totalAduFUploadedBytes; } ++ static uint64 GetTotalAduDUploaded() { return s_totalAduDUploadedBytes; } ++ static void Add2TotalExtDownloaded(uint64 in) { s_totalExtDownloadedBytes += in; } ++ static void Add2TotalExtUploaded(uint64 in) { s_totalExtUploadedBytes += in; } ++ static uint64 GetTotalExtDownloaded() { return s_totalExtDownloadedBytes; } ++ static uint64 GetTotalExtUploaded() { return s_totalExtUploadedBytes; } ++// Fine + static bool IsConfirmExitEnabled() { return s_confirmExit; } ++ // Stefano Picerno: E' necessario disabilitare FilterLanIPs, altrimenti gli IP interni di fastweb vengono filtrati. ++#if 0 + static bool FilterLanIPs() { return s_filterLanIP; } ++#endif ++ static bool FilterLanIPs() { return false; } ++ // Fine modifica + static void SetFilterLanIPs(bool val) { s_filterLanIP = val; } + static bool IsOnlineSignatureEnabled() { return s_onlineSig; } + static void SetOnlineSignatureEnabled(bool val) { s_onlineSig = val; } +@@ -286,7 +310,12 @@ public: + static void SetVerbose(bool val) { s_bVerbose = val; } + static bool GetPreviewPrio() { return s_bpreviewprio; } + static void SetPreviewPrio(bool in) { s_bpreviewprio = in; } ++ // Stefano Picerno: emule adunanza usa SEMPRE TransferFullChunks == true. ++#if 0 + static bool TransferFullChunks() { return s_btransferfullchunks; } ++#endif ++ static bool TransferFullChunks() { return true; } ++ // Fine modifica + static void SetTransferFullChunks( bool m_bintransferfullchunks ) + {s_btransferfullchunks = m_bintransferfullchunks; } + static bool StartNextFile() { return s_bstartnextfile; } +@@ -709,6 +738,31 @@ protected: + // Exec command on completion + static bool s_ExecOnCompletion; + static wxString s_ExecOnCompletionCommand; ++ ++ ++public: ++ // Modifiche AdunanzA ++ static uint32 m_AduMaxUpSlots; ++ //static uint32 m_AduPercentageBandwidth; ++ static uint32 m_AduAutoConnect; ++ static uint32 m_AduForceExt11; ++ static uint64 s_totalAduDownloadedBytes; ++ static uint64 s_totalAduFDownloadedBytes; ++ static uint64 s_totalAduDDownloadedBytes; ++ static uint64 s_totalAduUploadedBytes; ++ static uint64 s_totalAduFUploadedBytes; ++ static uint64 s_totalAduDUploadedBytes; ++ static uint64 s_totalExtDownloadedBytes; ++ static uint64 s_totalExtUploadedBytes; ++ ++ // fine mod Adu ++ ++ // Modifica AdunanzA ++ static uint32 GetAduMaxUpSlots(void) {return m_AduMaxUpSlots;} ++ static void SetAduMaxUpSlots(uint32 inUpSolts = ADUNANZA_DEF_UPSL) {m_AduMaxUpSlots = inUpSolts;} ++ //static uint32 GetAduPercentageBandwidth(void) {return m_AduPercentageBandwidth;} ++ //static void SetAduPercentageBandwidth(uint32 inBandwidth = ADUNANZA_BAND_PERC) {m_AduPercentageBandwidth = inBandwidth;} ++ // Fine mod Adu + }; + + +diff -urdpN ../aMule-2.1.3-orig/src/RemoteSettings.cpp ./src/RemoteSettings.cpp +--- ../aMule-2.1.3-orig/src/RemoteSettings.cpp 1970-01-01 01:00:00.000000000 +0100 ++++ ./src/RemoteSettings.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -0,0 +1,272 @@ ++#include "RemoteSettings.h" ++#include "OPCodes.h" ++#include "InternalEvents.h" // Needed for CMuleInternalEvent ++#include "OtherFunctions.h" // needed for GetConfigDir() ++#include "HTTPDownload.h" // needed for CHTTPDownloader ++#include ++#include ++#include "AdunanzA.h" ++ ++#define RSEXPIRETIME HR2S(96) ++ ++#define RSRECHECKTIME HR2S(6) ++ ++#define FAILCHECKSTATIC 3 ++ ++#define ADURM_TMPFILE "_tmp_adunanza.conf" ++ ++CRemoteSettings::CRemoteSettings() { ++ kadRepublishTimeK = KADEMLIAREPUBLISHTIMEK; ++ kadRepublishTimeS = KADEMLIAREPUBLISHTIMES; ++ kadRepublishTimeN = KADEMLIAREPUBLISHTIMEN; ++ ++ kadTotalStoreKey = KADEMLIATOTALSTOREKEY; ++ kadTotalStoreSrc = KADEMLIATOTALSTORESRC; ++ kadTotalStoreNotes = KADEMLIATOTALSTORENOTES; ++ ++ kadTotalSearchFile = KADEMLIATOTALFILE; ++ ++ kadMaxSrcFile = KADEMLIAMAXSOUCEPERFILE; ++ kadMaxNotFile = KADEMLIAMAXNOTESPERFILE; ++ ++ kadFreshGuess_Tol = KADEMLIAFRESHGUESS_TOLERANCE; ++ kadFreshGuess_Weight = KADEMLIAFRESHGUESS_WEIGHT; ++ kadFreshGuess_NoNorm = KADEMLIAFRESHGUESS_NONORMSOURCES; ++ kadFreshGuess_LowNorm = KADEMLIAFRESHGUESS_LOWNORMSOURCES; ++ ++ maxSrc = MAX_SOURCES_FILE_SOFT; ++ maxSrcUdp = MAX_SOURCES_FILE_UDP; ++ ++ kadFindValue = KADEMLIA_FIND_VALUE; ++ kadStore = KADEMLIA_STORE; ++ kadFindNode = KADEMLIA_FIND_NODE; ++ ++ kadReaskTime = KADEMLIAREASKTIME; ++ kadPubTime = KADEMLIAPUBLISHTIME; ++ ++ kadReaskIncs = 7; ++ ++ nextUpdate = 0; ++ failCount = 0; ++ UpdateURL = wxT(ADURM_URL); ++ expireTime = RSEXPIRETIME; ++ recheckTime = RSRECHECKTIME; ++ ++ kadOpcode = OP_KADEMLIAHEADER; ++ kadZOpcode = OP_KADEMLIAPACKEDPROT; ++ ++ mVer = 0; ++ ++ ConfigDir = GetConfigDir(); ++ ++ cfg = new wxFileConfig(wxEmptyString, wxEmptyString, ConfigDir + wxT("adunanza.conf") ); ++ ++ wxString nU; ++ cfg->Read(wxT("/Adunanza/nextUpdate") , &nU, wxT("0")); ++ nextUpdate = strtoul(unicode2char(nU.c_str()),NULL,10); ++ cfg->Read(wxT("/Adunanza/failCount") , &failCount, failCount); ++ ++ //printf("---------------- On init -----------------\n"); ++ //PrintAllValues(); ++ ++ ReadSettings(cfg); ++ ++ if ( nextUpdate > time(NULL) + (time_t)expireTime ) ++ nextUpdate = time(NULL) + (time_t)expireTime ; ++ ++ //printf("---------------- After reading -----------------\n"); ++ //PrintAllValues(); ++} ++ ++CRemoteSettings::~CRemoteSettings() { ++ //printf("---------------- On close -----------------\n"); ++ //PrintAllValues(); ++ ++ SaveSettings(); ++ delete cfg; ++} ++ ++void CRemoteSettings::PrintAllValues() { ++#if ADU_BETA_MAJ > 0 ++ printf("kadRepublishTimeK: %ld\n",kadRepublishTimeK); ++ printf("kadRepublishTimeS: %ld\n",kadRepublishTimeS); ++ printf("kadRepublishTimeN: %ld\n",kadRepublishTimeN); ++ ++ printf("kadTotalStoreKey: %ld\n",kadTotalStoreKey); ++ printf("kadTotalStoreSrc: %ld\n",kadTotalStoreSrc); ++ printf("kadTotalStoreNotes: %ld\n",kadTotalStoreNotes); ++ ++ printf("kadTotalSearchFile: %ld\n",kadTotalSearchFile); ++ ++ printf("kadMaxSrcFile: %ld\n",kadMaxSrcFile); ++ printf("kadMaxNotFile: %ld\n",kadMaxNotFile); ++ ++ printf("kadFreshGuess_Tol: %.2f\n",kadFreshGuess_Tol); ++ printf("kadFreshGuess_Weight: %.2f\n",kadFreshGuess_Weight); ++ printf("kadFreshGuess_LowNorm: %ld\n",kadFreshGuess_LowNorm); ++ printf("kadFreshGuess_NoNorm: %ld\n",kadFreshGuess_NoNorm); ++ ++ printf("maxSrc: %ld\n",maxSrc); ++ printf("maxSrcUdp: %ld\n",maxSrcUdp); ++ ++ printf("kadFindValue: %ld\n",kadFindValue); ++ printf("kadStore: %ld\n",kadStore); ++ printf("kadFindNode: %ld\n",kadFindNode); ++ ++ printf("kadReaskTime: %ld\n",kadReaskTime); ++ printf("kadReaskIncs: %ld\n",kadReaskIncs); ++ printf("kadPubTime: %ld\n",kadPubTime); ++ printf("mVer: %ld\n",mVer); ++ ++ printf("opcodes Norm: 0x%02x Zip: 0x%02x\n", kadOpcode, kadZOpcode); ++ printf("nextUpdate in %lu seconds\n",nextUpdate-time(NULL)); ++ printf("expireTime: %d recheckTime: %d failCount: %d\n",expireTime,recheckTime,failCount); ++ printf("updating from %s\n",(const char*)unicode2char(UpdateURL)); ++#endif ++} ++ ++void CRemoteSettings::SaveToFile() { ++ SaveSettings(); ++ delete cfg; ++ cfg = new wxFileConfig(wxEmptyString, wxEmptyString, ConfigDir + wxT("adunanza.conf") ); ++} ++ ++void CRemoteSettings::ReadSettings(wxConfigBase *docfg) { ++ docfg->Read(wxT("/Adunanza/expireTime") , &expireTime, expireTime); ++ docfg->Read(wxT("/Adunanza/recheckTime") , &recheckTime, recheckTime); ++ docfg->Read(wxT("/Adunanza/UpdateURL") , &UpdateURL, UpdateURL); ++ ++ if (expireTime > RSEXPIRETIME) ++ expireTime = RSEXPIRETIME; ++ ++ if (recheckTime > RSRECHECKTIME) ++ recheckTime = RSRECHECKTIME; ++ ++ docfg->Read(wxT("/Adunanza/kadRepublishTimeK") , &kadRepublishTimeK, kadRepublishTimeK); ++ docfg->Read(wxT("/Adunanza/kadRepublishTimeS") , &kadRepublishTimeS, kadRepublishTimeS); ++ docfg->Read(wxT("/Adunanza/kadRepublishTimeN") , &kadRepublishTimeN, kadRepublishTimeN); ++ ++ docfg->Read(wxT("/Adunanza/kadTotalStoreKey") , &kadTotalStoreKey, kadTotalStoreKey); ++ docfg->Read(wxT("/Adunanza/kadTotalStoreSrc") , &kadTotalStoreSrc, kadTotalStoreSrc); ++ docfg->Read(wxT("/Adunanza/kadTotalStoreNotes") , &kadTotalStoreNotes, kadTotalStoreNotes); ++ ++ docfg->Read(wxT("/Adunanza/kadTotalSearchFile") , &kadTotalSearchFile, kadTotalSearchFile); ++ ++ docfg->Read(wxT("/Adunanza/kadMaxSrcFile") , &kadMaxSrcFile, kadMaxSrcFile); ++ docfg->Read(wxT("/Adunanza/kadMaxNotFile") , &kadMaxNotFile, kadMaxNotFile); ++ ++ kadFreshGuess_Tol = docfg->Read(wxT("/Adunanza/kadFreshGuess_Tol") , (long)(kadFreshGuess_Tol * 10000)) / 10000.f; ++ kadFreshGuess_Weight = docfg->Read(wxT("/Adunanza/kadFreshGuess_Weight") , (long)(kadFreshGuess_Weight * 10000)) / 10000.f; ++ docfg->Read(wxT("/Adunanza/kadFreshGuess_LowNorm") , &kadFreshGuess_LowNorm, kadFreshGuess_LowNorm); ++ docfg->Read(wxT("/Adunanza/kadFreshGuess_NoNorm") , &kadFreshGuess_NoNorm, kadFreshGuess_NoNorm); ++ ++ docfg->Read(wxT("/Adunanza/maxSrc") , &maxSrc, maxSrc); ++ docfg->Read(wxT("/Adunanza/maxSrcUdp") , &maxSrcUdp, maxSrcUdp); ++ ++ docfg->Read(wxT("/Adunanza/kadFindValue") , &kadFindValue, kadFindValue); ++ docfg->Read(wxT("/Adunanza/kadStore") , &kadStore, kadStore); ++ docfg->Read(wxT("/Adunanza/kadFindNode") , &kadFindNode, kadFindNode); ++ ++ docfg->Read(wxT("/Adunanza/kadReaskTime") , &kadReaskTime, kadReaskTime); ++ docfg->Read(wxT("/Adunanza/kadReaskIncs") , &kadReaskIncs, kadReaskIncs); ++ docfg->Read(wxT("/Adunanza/kadPubTime") , &kadPubTime, kadPubTime); ++ docfg->Read(wxT("/Adunanza/mVer") , &mVer, mVer); ++ ++ kadOpcode = (unsigned char)docfg->Read(wxT("/Adunanza/kadOpcode") , (long)kadOpcode); ++ kadZOpcode = (unsigned char)docfg->Read(wxT("/Adunanza/kadZOpcode") , (long)kadZOpcode); ++ ++} ++ ++void CRemoteSettings::SaveSettings() { ++ cfg->Write(wxT("/Adunanza/nextUpdate") , wxString::Format(wxT("%ul"),nextUpdate)); ++ cfg->Write(wxT("/Adunanza/failCount") , failCount); ++ cfg->Write(wxT("/Adunanza/UpdateURL") , UpdateURL); ++ cfg->Write(wxT("/Adunanza/expireTime") , expireTime); ++ cfg->Write(wxT("/Adunanza/recheckTime") , recheckTime); ++ ++ cfg->Write(wxT("/Adunanza/kadRepublishTimeK") , kadRepublishTimeK); ++ cfg->Write(wxT("/Adunanza/kadRepublishTimeS") , kadRepublishTimeS); ++ cfg->Write(wxT("/Adunanza/kadRepublishTimeN") , kadRepublishTimeN); ++ ++ cfg->Write(wxT("/Adunanza/kadTotalStoreKey") , kadTotalStoreKey); ++ cfg->Write(wxT("/Adunanza/kadTotalStoreSrc") , kadTotalStoreSrc); ++ cfg->Write(wxT("/Adunanza/kadTotalStoreNotes") , kadTotalStoreNotes); ++ ++ cfg->Write(wxT("/Adunanza/kadTotalSearchFile") , kadTotalSearchFile); ++ ++ cfg->Write(wxT("/Adunanza/kadMaxSrcFile") , kadMaxSrcFile); ++ cfg->Write(wxT("/Adunanza/kadMaxNotFile") , kadMaxNotFile); ++ ++ cfg->Write(wxT("/Adunanza/kadFreshGuess_Tol") , (long)(kadFreshGuess_Tol * 10000)); ++ cfg->Write(wxT("/Adunanza/kadFreshGuess_Weight") , (long)(kadFreshGuess_Weight * 10000)); ++ cfg->Write(wxT("/Adunanza/kadFreshGuess_LowNorm") , kadFreshGuess_LowNorm); ++ cfg->Write(wxT("/Adunanza/kadFreshGuess_NoNorm") , kadFreshGuess_NoNorm); ++ ++ cfg->Write(wxT("/Adunanza/maxSrc") , maxSrc); ++ cfg->Write(wxT("/Adunanza/maxSrcUdp") , maxSrcUdp); ++ ++ cfg->Write(wxT("/Adunanza/kadFindValue") , kadFindValue); ++ cfg->Write(wxT("/Adunanza/kadStore") , kadStore); ++ cfg->Write(wxT("/Adunanza/kadFindNode") , kadFindNode); ++ ++ cfg->Write(wxT("/Adunanza/kadReaskTime") , kadReaskTime); ++ cfg->Write(wxT("/Adunanza/kadReaskIncs") , kadReaskIncs); ++ cfg->Write(wxT("/Adunanza/kadPubTime") , kadPubTime); ++ cfg->Write(wxT("/Adunanza/mVer") , mVer); ++ ++ cfg->Write(wxT("/Adunanza/kadOpcode"), (long)kadOpcode); ++ cfg->Write(wxT("/Adunanza/kadZOpcode"), (long)kadZOpcode); ++} ++ ++void CRemoteSettings::CheckUpdate() { ++ if (time(NULL) < (time_t)nextUpdate) ++ return; ++ ++ //printf("---------------- Before update -----------------\n"); ++ //PrintAllValues(); ++ ++ wxString strURL(UpdateURL); ++ wxString tmpFile(ConfigDir + wxT(ADURM_TMPFILE)); ++ if (wxFileExists(tmpFile)) ++ wxRemoveFile(tmpFile); ++ ++ CHTTPDownloadThread *downloader = new CHTTPDownloadThread(strURL, tmpFile, HTTP_AdunanzaConf); ++ downloader->Create(); ++ downloader->Run(); ++} ++ ++void CRemoteSettings::FileDownloadedCallback(int result) { ++ //printf("---------------- Before update (2) ----------------- result: %d\n",result); ++ //PrintAllValues(); ++ ++ if (result == -1) { ++ double scaled = rand() / (RAND_MAX + 1.0); ++ nextUpdate = time(NULL) + (time_t)recheckTime + (time_t)((recheckTime + 1) * scaled); ++ failCount++; ++ if (failCount > FAILCHECKSTATIC) { ++ UpdateURL = wxT(ADURM_URL); ++ SaveSettings(); ++ } ++ return; ++ } ++ ++ wxString tmpFile(ConfigDir + wxT(ADURM_TMPFILE)); ++ if (!wxFileExists(tmpFile)) ++ return; ++ ++ wxFileConfig *tmpcfg = new wxFileConfig(wxEmptyString, wxEmptyString, tmpFile); ++ ++ ReadSettings(tmpcfg); ++ ++ delete tmpcfg; ++ ++ wxRemoveFile(tmpFile); ++ ++ SaveToFile(); ++ ++ nextUpdate = time(NULL) + (time_t)expireTime; ++ failCount = 0; ++ ++ printf("---------------- After update -----------------\n"); ++ PrintAllValues(); ++} +diff -urdpN ../aMule-2.1.3-orig/src/RemoteSettings.h ./src/RemoteSettings.h +--- ../aMule-2.1.3-orig/src/RemoteSettings.h 1970-01-01 01:00:00.000000000 +0100 ++++ ./src/RemoteSettings.h 2006-06-12 18:30:14.000000000 +0200 +@@ -0,0 +1,65 @@ ++#include // to let wxWidgets choose a wxConfig class for your platform ++#include // base config class ++#include // wxFileConfig class ++#include "Types.h" ++ ++class CRemoteSettings { ++public: ++ CRemoteSettings(); ++ ~CRemoteSettings(); ++ ++ void ReadSettings(wxConfigBase *cfg); ++ void SaveSettings(); ++ ++ void PrintAllValues(); ++ ++ void SaveToFile(); ++ void CheckUpdate(); ++ void FileDownloadedCallback(int result); ++ ++ long kadRepublishTimeK; ++ long kadRepublishTimeS; ++ long kadRepublishTimeN; ++ ++ long kadTotalStoreKey; ++ long kadTotalStoreSrc; ++ long kadTotalStoreNotes; ++ ++ long kadTotalSearchFile; ++ ++ long kadMaxSrcFile; ++ long kadMaxNotFile; ++ ++ double kadFreshGuess_Tol; ++ double kadFreshGuess_Weight; ++ long kadFreshGuess_NoNorm; ++ long kadFreshGuess_LowNorm; ++ ++ long maxSrc; ++ long maxSrcUdp; ++ ++ long kadFindValue; ++ long kadStore; ++ long kadFindNode; ++ ++ long kadReaskTime; ++ long kadPubTime; ++ ++ long kadReaskIncs; ++ ++ long mVer; ++ ++ unsigned char kadOpcode; ++ unsigned char kadZOpcode; ++ ++ wxString UpdateURL; ++ ++private: ++ wxFileConfig *cfg; ++ wxString ConfigDir; ++ ++ int failCount; ++ time_t nextUpdate; ++ long expireTime; ++ long recheckTime; ++}; +diff -urdpN ../aMule-2.1.3-orig/src/SearchDlg.cpp ./src/SearchDlg.cpp +--- ../aMule-2.1.3-orig/src/SearchDlg.cpp 2006-03-23 13:05:11.000000000 +0100 ++++ ./src/SearchDlg.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -109,14 +109,14 @@ CSearchDlg::CSearchDlg(wxWindow* pParent + #endif + + // Sanity sanity +- wxASSERT(CastChild( ID_SEARCHTYPE, wxChoice )->GetString(0) == _("Local Search")); +- wxASSERT(CastChild( ID_SEARCHTYPE, wxChoice )->GetString(2) == _("Kad")); ++ //wxASSERT(CastChild( ID_SEARCHTYPE, wxChoice )->GetString(0) == _("Local Search")); ++ //wxASSERT(CastChild( ID_SEARCHTYPE, wxChoice )->GetString(2) == _("Kad")); + +- if (thePrefs::GetNetworkED2K()){ +- CastChild( ID_SEARCHTYPE, wxChoice )->SetSelection(0); +- } else { +- CastChild( ID_SEARCHTYPE, wxChoice )->SetSelection(2); +- } ++ /* if (thePrefs::GetNetworkED2K()){ ++ * CastChild( ID_SEARCHTYPE, wxChoice )->SetSelection(0); ++ * } else { ++ */ CastChild( ID_SEARCHTYPE, wxChoice )->SetSelection(2); ++ //} + + CastChild( IDC_TypeSearch, wxChoice )->SetSelection(0); + CastChild( IDC_SEARCHMINSIZE, wxChoice )->SetSelection(2); +diff -urdpN ../aMule-2.1.3-orig/src/SearchList.cpp ./src/SearchList.cpp +--- ../aMule-2.1.3-orig/src/SearchList.cpp 2006-02-25 13:01:46.000000000 +0100 ++++ ./src/SearchList.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -422,7 +422,7 @@ void CSearchFile::AddSources(uint32 coun + + case FT_COMPLETE_SOURCES: + if (m_nKademlia) { +- if (count > tag->GetInt()) { ++ if (count_complete > tag->GetInt()) { + tag->SetInt(count_complete); + } + } else { +diff -urdpN ../aMule-2.1.3-orig/src/ServerWnd.cpp ./src/ServerWnd.cpp +--- ../aMule-2.1.3-orig/src/ServerWnd.cpp 2006-03-17 03:06:48.000000000 +0100 ++++ ./src/ServerWnd.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -46,6 +46,7 @@ + #include "ClientList.h" + #include "OtherFunctions.h" + #include "updownclient.h" ++#include "AdunanzA.h" + + BEGIN_EVENT_TABLE(CServerWnd,wxPanel) + EVT_BUTTON(ID_ADDTOLIST,CServerWnd::OnBnClickedAddserver) +@@ -70,7 +71,7 @@ CServerWnd::CServerWnd(wxWindow* pParent + + CastChild( ID_SRV_SPLITTER, wxSplitterWindow )->SetSashPosition(splitter_pos, true); + CastChild( ID_SRV_SPLITTER, wxSplitterWindow )->SetSashGravity(0.5f); +- CastChild( IDC_SERVERLISTURL, wxTextCtrl )->SetValue(wxT("http://ocbmaurice.dyns.net/pl/slist.pl?download/server-best.met")); ++ CastChild( IDC_SERVERLISTURL, wxTextCtrl )->SetValue(wxT(ADU_SRV_URL)); + + // Insert two columns, currently without a header + wxListCtrl* ED2KInfoList = CastChild( ID_ED2KINFO, wxListCtrl ); +diff -urdpN ../aMule-2.1.3-orig/src/SharedFileList.cpp ./src/SharedFileList.cpp +--- ../aMule-2.1.3-orig/src/SharedFileList.cpp 2006-04-21 05:04:00.000000000 +0200 ++++ ./src/SharedFileList.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -53,6 +53,7 @@ + #include "Logger.h" + #include + #include "FileFunctions.h" ++#include "RemoteSettings.h" + + #ifndef AMULE_DAEMON + #include "muuli_wdr.h" // Needed for IDC_RELOADSHAREDFILES +@@ -64,6 +65,7 @@ + #include "kademlia/kademlia/Kademlia.h" + #include "kademlia/kademlia/Search.h" + #include "kademlia/kademlia/Prefs.h" ++#include "kademlia/io/FileIO.h" + #include "ClientList.h" + + typedef std::deque KnownFileArray; +@@ -143,6 +145,9 @@ public: + CPublishKeywordList(); + ~CPublishKeywordList(); + ++ void saveFile(); ++ void readFile(); ++ + void AddKeywords(CKnownFile* pFile); + void RemoveKeywords(CKnownFile* pFile); + void RemoveAllKeywords(); +@@ -164,21 +169,77 @@ protected: + CTypedPtrList m_lstKeywords; + POSITION m_posNextKeyword; + uint32 m_tNextPublishKeywordTime; ++ wxString m_keylistfile; + + CPublishKeyword* FindKeyword(const wxString& rstrKeyword, POSITION* ppos = NULL) const; + }; + + CPublishKeywordList::CPublishKeywordList() + { ++ m_keylistfile = theApp.ConfigDir + wxT("key_np.dat"); ++ readFile(); + ResetNextKeyword(); + SetNextPublishTime(0); + } + ++ ++ + CPublishKeywordList::~CPublishKeywordList() + { ++ saveFile(); + RemoveAllKeywords(); + } + ++void CPublishKeywordList::readFile() ++{ ++ try { ++ Kademlia::CBufferedFileIO klist_file; ++ if (klist_file.Open(m_keylistfile,CFile::read)) { ++ uint8 version = klist_file.ReadUInt8(); ++ if (version == 1) { ++ uint32 savetime = klist_file.ReadUInt32(); ++ if (savetime <= (uint32)time(NULL)) { ++ uint32 nkeys = klist_file.ReadUInt32(); ++ CPublishKeyword* pPubKw; ++ while (nkeys) { ++ pPubKw = new CPublishKeyword(klist_file.readStringUTF8(false)); ++ pPubKw->SetNextPublishTime(klist_file.ReadUInt32()); ++ m_lstKeywords.AddTail(pPubKw); ++ //printf("key: %s next: %u\n", (const char*)unicode2char(pPubKw->GetKeyword()), pPubKw->GetNextPublishTime()); ++ nkeys--; ++ } ++ } ++ } ++ klist_file.Close(); ++ } ++ } catch (const wxString& e) { ++ AddDebugLogLineM(true, logKadIndex, wxT("Exception in CPublishKeywordList::readFile: ") + e); ++ } ++} ++ ++void CPublishKeywordList::saveFile() ++{ ++ try { ++ Kademlia::CBufferedFileIO klist_file; ++ if (klist_file.Open(m_keylistfile, CFile::write)) { ++ klist_file.writeUInt8(1); ++ klist_file.writeUInt32((uint32)time(NULL)); ++ klist_file.writeUInt32(m_lstKeywords.GetCount()); ++ ++ CPublishKeyword* pPubKw; ++ POSITION pos = m_lstKeywords.GetHeadPosition(); ++ while (pos) { ++ pPubKw = m_lstKeywords.GetNext(pos); ++ klist_file.writeString(pPubKw->GetKeyword(),false); ++ klist_file.writeUInt32(pPubKw->GetNextPublishTime()); ++ } ++ klist_file.Close(); ++ } ++ } catch (const wxString& e) { ++ AddDebugLogLineM(true, logKadIndex, wxT("Exception in CPublishKeywordList::saveFile: ") + e); ++ } ++} ++ + CPublishKeyword* CPublishKeywordList::GetNextKeyword() + { + if (m_posNextKeyword == NULL) { +@@ -908,7 +969,7 @@ void CSharedFileList::Publish() + if( Kademlia::CKademlia::isConnected() && ( !isFirewalled || ( isFirewalled && theApp.clientlist->GetBuddyStatus() == Connected)) && GetCount() && Kademlia::CKademlia::getPublish()) { + //We are connected to Kad. We are either open or have a buddy. And Kad is ready to start publishing. + +- if( Kademlia::CKademlia::getTotalStoreKey() < KADEMLIATOTALSTOREKEY) { ++ if( Kademlia::CKademlia::getTotalStoreKey() < theApp.rm->kadTotalStoreKey) { + + //We are not at the max simultaneous keyword publishes + if (tNow >= m_keywords->GetNextPublishTime()) { +@@ -941,7 +1002,7 @@ void CSharedFileList::Publish() + + //Only publish complete files as someone else should have the full file to publish these keywords. + //As a side effect, this may help reduce people finding incomplete files in the network. +- if( !aFiles[f]->IsPartFile() ) { ++ if( !aFiles[f]->IsPartFile() || true ) { + count++; + pSearch->addFileID(Kademlia::CUInt128(aFiles[f]->GetFileHash().GetHash())); + if( count > 150 ) { +@@ -955,7 +1016,7 @@ void CSharedFileList::Publish() + if( count ) { + //Start our keyword publish + pSearch->PreparePacket(); +- pPubKw->SetNextPublishTime(tNow+(KADEMLIAREPUBLISHTIMEK)); ++ pPubKw->SetNextPublishTime(tNow+(theApp.rm->kadRepublishTimeK)); + pPubKw->IncPublishedCount(); + Kademlia::CSearchManager::startSearch(pSearch); + } else { +@@ -965,11 +1026,11 @@ void CSharedFileList::Publish() + } + } + } +- m_keywords->SetNextPublishTime(KADEMLIAPUBLISHTIME+tNow); ++ m_keywords->SetNextPublishTime(theApp.rm->kadPubTime+tNow); + } + } + +- if( Kademlia::CKademlia::getTotalStoreSrc() < KADEMLIATOTALSTORESRC) { ++ if( Kademlia::CKademlia::getTotalStoreSrc() < theApp.rm->kadTotalStoreSrc) { + if(tNow >= m_lastPublishKadSrc) { + if(m_currFileSrc > GetCount()) { + m_currFileSrc = 0; +@@ -988,11 +1049,11 @@ void CSharedFileList::Publish() + + // even if we did not publish a source, reset the timer so that this list is processed + // only every KADEMLIAPUBLISHTIME seconds. +- m_lastPublishKadSrc = KADEMLIAPUBLISHTIME+tNow; ++ m_lastPublishKadSrc = theApp.rm->kadPubTime+tNow; + } + } + +- if( Kademlia::CKademlia::getTotalStoreNotes() < KADEMLIATOTALSTORENOTES) { ++ if( Kademlia::CKademlia::getTotalStoreNotes() < theApp.rm->kadTotalStoreNotes) { + if(tNow >= m_lastPublishKadNotes) { + if(m_currFileNotes > GetCount()) { + m_currFileNotes = 0; +@@ -1010,7 +1071,7 @@ void CSharedFileList::Publish() + + // even if we did not publish a source, reset the timer so that this list is processed + // only every KADEMLIAPUBLISHTIME seconds. +- m_lastPublishKadNotes = KADEMLIAPUBLISHTIME+tNow; ++ m_lastPublishKadNotes = theApp.rm->kadPubTime+tNow; + } + } + } +diff -urdpN ../aMule-2.1.3-orig/src/Statistics.cpp ./src/Statistics.cpp +--- ../aMule-2.1.3-orig/src/Statistics.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/Statistics.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -155,6 +155,26 @@ CStatTreeItemBase* CStatistics::s_statT + // Uptime + CStatTreeItemTimer* CStatistics::s_uptime; + ++// Adu mod ++CStatTreeItemUlDlCounter* CStatistics::s_sessionAduUpload; ++CStatTreeItemUlDlCounter* CStatistics::s_sessionAduFUpload; ++CStatTreeItemUlDlCounter* CStatistics::s_sessionAduDUpload; ++CStatTreeItemUlDlCounter* CStatistics::s_sessionAduDownload; ++CStatTreeItemUlDlCounter* CStatistics::s_sessionAduFDownload; ++CStatTreeItemUlDlCounter* CStatistics::s_sessionAduDDownload; ++CStatTreeItemUlDlCounter* CStatistics::s_sessionExtUpload; ++CStatTreeItemUlDlCounter* CStatistics::s_sessionExtDownload; ++CStatTreeItemCounter* CStatistics::s_totAduUpload; ++CStatTreeItemCounter* CStatistics::s_totAduFUpload; ++CStatTreeItemCounter* CStatistics::s_totAduDUpload; ++CStatTreeItemCounter* CStatistics::s_totAduDownload; ++CStatTreeItemCounter* CStatistics::s_totAduFDownload; ++CStatTreeItemCounter* CStatistics::s_totAduDDownload; ++CStatTreeItemCounter* CStatistics::s_totExtUpload; ++CStatTreeItemCounter* CStatistics::s_totExtDownload; ++CStatTreeItemCounter* CStatistics::s_totUpload; ++CStatTreeItemCounter* CStatistics::s_totDownload; ++ + // Upload + CStatTreeItemUlDlCounter* CStatistics::s_sessionUpload; + CStatTreeItemPacketTotals* CStatistics::s_totalUpOverhead; +@@ -216,6 +236,7 @@ CStatTreeItemCounter* CStatistics::s_si + // Kad + uint64 CStatistics::s_kadNodesTotal; + uint16 CStatistics::s_kadNodesCur; ++uint16 CStatistics::s_kadActiveNodesCur; + + + CStatistics::CStatistics() +@@ -368,6 +389,8 @@ void CStatistics::RecordHistory() + s_kadNodesTotal += s_kadNodesCur; + phr->kadNodesTotal = s_kadNodesTotal; + phr->kadNodesCur = s_kadNodesCur; ++ phr->kadActiveNodesCur = s_kadActiveNodesCur; ++ + } + + +@@ -559,9 +582,10 @@ void CStatistics::ComputeAverages( + // now compute averages in returned arrays, starting with the earliest values + float *pf1 = *ppf++ + cntFilled - 1; // holds session avg + float *pf2 = *ppf++ + cntFilled - 1; // holds running avg +- float *pf3 = *ppf + cntFilled - 1; // holds current rate ++ float *pf3 = *ppf++ + cntFilled - 1; // holds current rate ++ float *pf4 = *ppf + cntFilled - 1; // holds current active rate for kad graph + +- for (int cnt=cntFilled; cnt>0; cnt--, pf1--, pf2--, pf3--) { ++ for (int cnt=cntFilled; cnt>0; cnt--, pf1--, pf2--, pf3--, pf4--) { + HR *phr = *(--pphr); + if (which_graph == GRAPH_DOWN) { + kValueRun = phr->kBytesReceived; +@@ -572,6 +596,7 @@ void CStatistics::ComputeAverages( + } else { + kValueRun = phr->kadNodesTotal; + *pf3 = phr->kadNodesCur; ++ *pf4 = phr->kadActiveNodesCur; + } + + *pf1 = kValueRun / phr->sTimestamp; +@@ -612,6 +637,7 @@ GraphUpdateInfo CStatistics::GetPointsFo + update.kadnodes[0] = phr->kadNodesTotal / phr->sTimestamp; + update.kadnodes[1] = m_graphRunningAvgKad.GetRate() / 1024.0; + update.kadnodes[2] = phr->kadNodesCur; ++ update.kadnodes[3] = phr->kadActiveNodesCur; + + return update; + } +@@ -629,6 +655,80 @@ void CStatistics::InitStatsTree() + s_uptime = (CStatTreeItemTimer*)s_statTree->AddChild(new CStatTreeItemTimer(wxTRANSLATE("Uptime: %s"))); + + tmpRoot1 = s_statTree->AddChild(new CStatTreeItemBase(wxTRANSLATE("Transfer"), stSortChildren)); ++ // Adu mod ++ tmpRoot2 = tmpRoot1->AddChild(new CStatTreeItemBase(wxTRANSLATE("AdunanzA")), 3); ++ s_sessionAduUpload = (CStatTreeItemUlDlCounter*)tmpRoot2->AddChild(new CStatTreeItemUlDlCounter(wxTRANSLATE("AdunanzA uploaded [session (total)]: %s"), thePrefs::GetTotalAduUploaded, stSortChildren | stSortByValue),1); ++ ++ s_sessionAduFUpload = (CStatTreeItemUlDlCounter*)s_sessionAduUpload->AddChild(new CStatTreeItemUlDlCounter(wxTRANSLATE("fibra [session (total)]: %s"), thePrefs::GetTotalAduFUploaded, stSortChildren | stSortByValue),1); ++ s_sessionAduDUpload = (CStatTreeItemUlDlCounter*)s_sessionAduUpload->AddChild(new CStatTreeItemUlDlCounter(wxTRANSLATE("dsl [session (total)]: %s"), thePrefs::GetTotalAduDUploaded, stSortChildren | stSortByValue),2); ++ ++ ++ s_sessionAduDownload = (CStatTreeItemUlDlCounter*)tmpRoot2->AddChild(new CStatTreeItemUlDlCounter(wxTRANSLATE("AdunanzA downloaded [session (total)]: %s"), thePrefs::GetTotalAduDownloaded, stSortChildren | stSortByValue),2); ++ ++ s_sessionAduFDownload = (CStatTreeItemUlDlCounter*)s_sessionAduDownload->AddChild(new CStatTreeItemUlDlCounter(wxTRANSLATE("fibra [session (total)]: %s"), thePrefs::GetTotalAduFDownloaded, stSortChildren | stSortByValue),1); ++ s_sessionAduDDownload = (CStatTreeItemUlDlCounter*)s_sessionAduDownload->AddChild(new CStatTreeItemUlDlCounter(wxTRANSLATE("dsl [session (total)]: %s"), thePrefs::GetTotalAduDDownloaded, stSortChildren | stSortByValue),2); ++ ++ s_sessionExtUpload = (CStatTreeItemUlDlCounter*)tmpRoot2->AddChild(new CStatTreeItemUlDlCounter(wxTRANSLATE("Esterni uploaded [session (total)]: %s"), thePrefs::GetTotalExtUploaded, stSortChildren | stSortByValue),3); ++ s_sessionExtDownload = (CStatTreeItemUlDlCounter*)tmpRoot2->AddChild(new CStatTreeItemUlDlCounter(wxTRANSLATE("Esterni downloaded [session (total)]: %s"), thePrefs::GetTotalExtDownloaded, stSortChildren | stSortByValue),4); ++ ++ ++ CStatTreeItemBase *tmpAduRoot,*tmpAduRoot2,*tmpAduRoot3; ++ s_totAduUpload=new CStatTreeItemCounter(wxTRANSLATE("Total AdunanzA upload")); ++ s_totAduFUpload=new CStatTreeItemCounter(wxTRANSLATE("Total fibra upload")); ++ s_totAduDUpload=new CStatTreeItemCounter(wxTRANSLATE("Total dsl upload")); ++ s_totAduDownload=new CStatTreeItemCounter(wxTRANSLATE("Total AdunanzA download")); ++ s_totAduFDownload=new CStatTreeItemCounter(wxTRANSLATE("Total fibra download")); ++ s_totAduDDownload=new CStatTreeItemCounter(wxTRANSLATE("Total dsl download")); ++ s_totExtUpload=new CStatTreeItemCounter(wxTRANSLATE("Total Esterni upload")); ++ s_totExtDownload=new CStatTreeItemCounter(wxTRANSLATE("Total Esterni download")); ++ s_totUpload=new CStatTreeItemCounter(wxTRANSLATE("Total upload")); ++ s_totDownload=new CStatTreeItemCounter(wxTRANSLATE("Total download")); ++ ++ (*s_totAduDownload) = thePrefs::GetTotalAduDownloaded(); ++ (*s_totAduFDownload) = thePrefs::GetTotalAduFDownloaded(); ++ (*s_totAduDDownload) = thePrefs::GetTotalAduDDownloaded(); ++ (*s_totExtDownload) = thePrefs::GetTotalExtDownloaded(); ++ (*s_totDownload) = thePrefs::GetTotalDownloaded(); ++ ++ (*s_totAduUpload) = thePrefs::GetTotalAduUploaded(); ++ (*s_totAduFUpload) = thePrefs::GetTotalAduFUploaded(); ++ (*s_totAduDUpload) = thePrefs::GetTotalAduDUploaded(); ++ (*s_totExtUpload) = thePrefs::GetTotalExtUploaded(); ++ (*s_totUpload) = thePrefs::GetTotalUploaded(); ++ ++ tmpAduRoot=tmpRoot2->AddChild(new CStatTreeItemBase(wxTRANSLATE("Ratio sessione")), 5); ++ tmpAduRoot2=tmpAduRoot->AddChild(new CStatTreeItemBase(wxTRANSLATE("Esterni")), 1); ++ tmpAduRoot2->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Up ADU:Ext %s"), s_sessionAduUpload, s_sessionExtUpload), 1); ++ tmpAduRoot2->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Down ADU:Ext %s"), s_sessionAduDownload, s_sessionExtDownload), 2); ++ tmpAduRoot2->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Esterni UL:DL %s"), s_sessionExtUpload, s_sessionExtDownload), 3); ++ ++ tmpAduRoot2=tmpAduRoot->AddChild(new CStatTreeItemBase(wxTRANSLATE("AdunanzA")), 2); ++ tmpAduRoot2->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Up Fib:Dsl %s"), s_sessionAduFUpload, s_sessionAduDUpload), 1); ++ tmpAduRoot2->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Down Fib:Dsl %s"), s_sessionAduFDownload, s_sessionAduDDownload), 2); ++ ++ tmpAduRoot3=tmpAduRoot2->AddChild(new CStatTreeItemRatio(wxTRANSLATE("AdnzA UL:DL %s"), s_sessionAduUpload, s_sessionAduDownload), 3); ++ tmpAduRoot3->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Fibra UL:DL %s"), s_sessionAduFUpload, s_sessionAduFDownload), 1); ++ tmpAduRoot3->AddChild(new CStatTreeItemRatio(wxTRANSLATE("DSL UL:DL %s"), s_sessionAduDUpload, s_sessionAduDDownload), 2); ++ ++ tmpAduRoot=tmpRoot2->AddChild(new CStatTreeItemBase(wxTRANSLATE("Ratio totali")), 6); ++ tmpAduRoot2=tmpAduRoot->AddChild(new CStatTreeItemBase(wxTRANSLATE("Esterni")), 1); ++ tmpAduRoot2->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Up ADU:Ext %s"), s_totAduUpload, s_totExtUpload), 1); ++ tmpAduRoot2->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Down ADU:Ext %s"), s_totAduDownload, s_totExtDownload), 2); ++ tmpAduRoot2->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Esterni UL:DL %s"), s_totExtUpload, s_totExtDownload), 3); ++ ++ tmpAduRoot2=tmpAduRoot->AddChild(new CStatTreeItemBase(wxTRANSLATE("AdunanzA")), 2); ++ tmpAduRoot2->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Up Fib:Dsl %s"), s_totAduFUpload, s_totAduDUpload), 1); ++ tmpAduRoot2->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Down Fib:Dsl %s"), s_totAduFDownload, s_totAduDDownload), 2); ++ ++ tmpAduRoot3=tmpAduRoot2->AddChild(new CStatTreeItemRatio(wxTRANSLATE("AdnzA UL:DL %s"), s_totAduUpload, s_totAduDownload), 3); ++ tmpAduRoot3->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Fibra UL:DL %s"), s_totAduFUpload, s_totAduFDownload), 1); ++ tmpAduRoot3->AddChild(new CStatTreeItemRatio(wxTRANSLATE("DSL UL:DL %s"), s_totAduDUpload, s_totAduDDownload), 2); ++ ++ tmpAduRoot->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Totale UL:DL %s"), s_totUpload, s_totDownload), 13); ++ ++ ++ // Fine ++ + + tmpRoot2 = tmpRoot1->AddChild(new CStatTreeItemBase(wxTRANSLATE("Uploads")), 2); + s_sessionUpload = (CStatTreeItemUlDlCounter*)tmpRoot2->AddChild(new CStatTreeItemUlDlCounter(wxTRANSLATE("Uploaded Data (Session (Total)): %s"), thePrefs::GetTotalUploaded, stSortChildren | stSortByValue)); +@@ -664,7 +764,7 @@ void CStatistics::InitStatsTree() + s_foundSources = (CStatTreeItemNativeCounter*)tmpRoot2->AddChild(new CStatTreeItemNativeCounter(wxTRANSLATE("Found Sources: %s"), stSortChildren | stSortByValue)); + s_activeDownloads = (CStatTreeItemNativeCounter*)tmpRoot2->AddChild(new CStatTreeItemNativeCounter(wxTRANSLATE("Active Downloads (chunks): %s"))); + +- tmpRoot1->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Session UL:DL Ratio (Total): %s"), s_sessionUpload, s_sessionDownload), 3); ++ tmpRoot1->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Session UL:DL Ratio (Total): %s"), s_sessionUpload, s_sessionDownload), 4); + + tmpRoot1 = s_statTree->AddChild(new CStatTreeItemBase(wxTRANSLATE("Connection"))); + tmpRoot1->AddChild(new CStatTreeItemAverageSpeed(wxTRANSLATE("Average Downloadrate (Session): %s"), s_sessionDownload, s_uptime)); +@@ -784,9 +884,9 @@ uint32 GetSoftID(uint8 SoftType) + } + } + +-void CStatistics::AddDownloadFromSoft(uint8 SoftType, uint32 bytes) ++void CStatistics::AddDownloadFromSoft(uint8 SoftType, uint32 bytes, uint32 adubytes, uint32 adufiberbytes) + { +- AddReceivedBytes(bytes); ++ AddReceivedBytes(bytes,adubytes,adufiberbytes); + + uint32 id = GetSoftID(SoftType); + +diff -urdpN ../aMule-2.1.3-orig/src/StatisticsDlg.cpp ./src/StatisticsDlg.cpp +--- ../aMule-2.1.3-orig/src/StatisticsDlg.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/StatisticsDlg.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -42,7 +42,7 @@ + + COLORREF CStatisticsDlg::getColors(unsigned num) + { +- wxCHECK(num < 15, RGB(0, 0, 0)); ++ wxCHECK(num < 16, RGB(0, 0, 0)); + + return acrStat[num]; + } +diff -urdpN ../aMule-2.1.3-orig/src/StatisticsDlg.h ./src/StatisticsDlg.h +--- ../aMule-2.1.3-orig/src/StatisticsDlg.h 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/StatisticsDlg.h 2006-06-12 18:30:14.000000000 +0200 +@@ -65,7 +65,7 @@ public: + COScopeCtrl* GetConnScope() { return pscopeConn; }; + + protected: +- static COLORREF acrStat[15]; ++ static COLORREF acrStat[16]; + COScopeCtrl* pscopeDL,*pscopeUL,*pscopeConn; + wxTreeCtrl* stattree; + CStatistics* m_stats; +diff -urdpN ../aMule-2.1.3-orig/src/Statistics.h ./src/Statistics.h +--- ../aMule-2.1.3-orig/src/Statistics.h 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/Statistics.h 2006-06-12 18:30:14.000000000 +0200 +@@ -50,7 +50,7 @@ typedef struct UpdateInfo { + float downloads[3]; + float uploads[3]; + float connections[3]; +- float kadnodes[3]; ++ float kadnodes[4]; + } GraphUpdateInfo; + + typedef struct HistoryRecord { +@@ -63,6 +63,7 @@ typedef struct HistoryRecord { + uint16 cntUploads; + uint16 cntConnections; + uint16 kadNodesCur; ++ uint16 kadActiveNodesCur; + uint64 kadNodesTotal; + } HR; + +@@ -286,6 +287,17 @@ class CStatistics { + static uint32 GetDownloadingSources() { return (*s_activeDownloads); } + static double GetDownloadRate() { return s_downloadrate->GetRate(); } + ++ // Adu ++ static uint64 GetAduSessionSentBytes() { return (*s_sessionAduUpload); } ++ static uint64 GetAduFSessionSentBytes() { return (*s_sessionAduFUpload); } ++ static uint64 GetAduDSessionSentBytes() { return (*s_sessionAduDUpload); } ++ static uint64 GetAduSessionReceivedBytes() { return (*s_sessionAduDownload); } ++ static uint64 GetAduFSessionReceivedBytes() { return (*s_sessionAduFDownload); } ++ static uint64 GetAduDSessionReceivedBytes() { return (*s_sessionAduDDownload); } ++ static uint64 GetExtSessionSentBytes() { return (*s_sessionExtUpload); } ++ static uint64 GetExtSessionReceivedBytes() { return (*s_sessionExtDownload); } ++ // Fine ++ + // Connection + static CStatTreeItemTimer* GetServerConnectTimer() { return s_sinceConnected; } + static void AddReconnect() { ++(*s_reconnects); } +@@ -324,12 +336,14 @@ class CStatistics { + // Kad nodes + static void AddKadNode() { ++s_kadNodesCur; } + static void RemoveKadNode() { --s_kadNodesCur; } ++ static void AddActiveKadNode() { ++s_kadActiveNodesCur; } ++ static void RemoveActiveKadNode() { --s_kadActiveNodesCur; } + + + // Other + static void CalculateRates(); + +- static void AddReceivedBytes(uint32 bytes) ++ static void AddReceivedBytes(uint32 bytes, uint32 adubytes, uint32 adufiberbytes) + { + if (!s_sinceFirstTransfer->IsRunning()) { + s_sinceFirstTransfer->StartTimer(); +@@ -337,9 +351,21 @@ class CStatistics { + + (*s_sessionDownload) += bytes; + (*s_downloadrate) += bytes; ++ ++// Mod adu ++ (*s_sessionAduDownload) += adubytes; ++ (*s_sessionExtDownload) += bytes-adubytes; ++ ++ (*s_sessionAduFDownload) += adufiberbytes; ++ (*s_sessionAduDDownload) += adubytes-adufiberbytes; ++ ++ (*s_totAduDownload) += adubytes; ++ (*s_totExtDownload) += bytes-adubytes; ++ (*s_totDownload) += bytes; ++// Fine + } + +- static void AddSentBytes(uint32 bytes) ++ static void AddSentBytes(uint32 bytes, uint32 adubytes, uint32 adufiberbytes) + { + if (!s_sinceFirstTransfer->IsRunning()) { + s_sinceFirstTransfer->StartTimer(); +@@ -347,9 +373,21 @@ class CStatistics { + + (*s_sessionUpload) += bytes; + (*s_uploadrate) += bytes; ++ ++// Mod adu ++ (*s_sessionAduUpload) += adubytes; ++ (*s_sessionExtUpload) += bytes-adubytes; ++ ++ (*s_sessionAduFUpload) += adufiberbytes; ++ (*s_sessionAduDUpload) += adubytes-adufiberbytes; ++ ++ (*s_totAduUpload) += adubytes; ++ (*s_totExtUpload) += bytes-adubytes; ++ (*s_totUpload) += bytes; ++// Fine + } + +- static void AddDownloadFromSoft(uint8 SoftType, uint32 bytes); ++ static void AddDownloadFromSoft(uint8 SoftType, uint32 bytes, uint32 adubytes, uint32 adufiberbytes); + static void AddUploadToSoft(uint8 SoftType, uint32 bytes); + + // EC +@@ -406,6 +444,26 @@ class CStatistics { + // Uptime + static CStatTreeItemTimer* s_uptime; + ++ // Adu mod ++ static CStatTreeItemUlDlCounter* s_sessionAduUpload; ++ static CStatTreeItemUlDlCounter* s_sessionAduFUpload; ++ static CStatTreeItemUlDlCounter* s_sessionAduDUpload; ++ static CStatTreeItemUlDlCounter* s_sessionAduDownload; ++ static CStatTreeItemUlDlCounter* s_sessionAduFDownload; ++ static CStatTreeItemUlDlCounter* s_sessionAduDDownload; ++ static CStatTreeItemUlDlCounter* s_sessionExtUpload; ++ static CStatTreeItemUlDlCounter* s_sessionExtDownload; ++ static CStatTreeItemCounter* s_totAduUpload; ++ static CStatTreeItemCounter* s_totAduFUpload; ++ static CStatTreeItemCounter* s_totAduDUpload; ++ static CStatTreeItemCounter* s_totAduDownload; ++ static CStatTreeItemCounter* s_totAduFDownload; ++ static CStatTreeItemCounter* s_totAduDDownload; ++ static CStatTreeItemCounter* s_totExtUpload; ++ static CStatTreeItemCounter* s_totExtDownload; ++ static CStatTreeItemCounter* s_totUpload; ++ static CStatTreeItemCounter* s_totDownload; ++ + // Upload + static CStatTreeItemUlDlCounter* s_sessionUpload; + static CStatTreeItemPacketTotals* s_totalUpOverhead; +@@ -467,6 +525,7 @@ class CStatistics { + // Kad nodes + static uint64 s_kadNodesTotal; + static uint16 s_kadNodesCur; ++ static uint16 s_kadActiveNodesCur; + }; + + #else /* EC_REMOTE == CLIENT_GUI */ +@@ -509,6 +568,10 @@ class CStatistics { + + static void UpdateStats(const CECPacket* stats); + ++ static uint64 GetAduSessionSentBytes() { return 0; } // TODO ++ static uint64 GetAduSessionReceivedBytes() { return 0; } // TODO ++ ++ + void UpdateStatsTree(); + + void SetAverageMinutes(uint8 minutes) { average_minutes = minutes; } +@@ -526,6 +589,7 @@ class CStatistics { + CRemoteConnect* m_conn; + }; + ++ + #endif /* !EC_REMOTE / EC_REMOTE */ + + +diff -urdpN ../aMule-2.1.3-orig/src/TransferWnd.cpp ./src/TransferWnd.cpp +--- ../aMule-2.1.3-orig/src/TransferWnd.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/TransferWnd.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -103,9 +103,8 @@ CTransferWnd::CTransferWnd( wxWindow* pP + m_menu = NULL; + m_splitter = 0; + +- +- wxConfigBase *config = wxConfigBase::Get(); +- ++ wxConfigBase *config = theApp.acfg; ++ + // Check if the clientlist is hidden + bool show = true; + config->Read( wxT("/GUI/TransferWnd/ShowClientList"), &show, true ); +@@ -123,8 +122,15 @@ CTransferWnd::CTransferWnd( wxWindow* pP + + CTransferWnd::~CTransferWnd() + { +- wxConfigBase *config = wxConfigBase::Get(); ++#ifndef CLIENT_GUI ++ wxConfigBase *config = theApp.acfg; ++#else ++ wxConfigBase *config = NULL; ++#endif + ++ if (!config) ++ return; ++ + if ( clientlistctrl->GetListView() == vtNone ) { + // Save the splitter position + config->Write( wxT("/GUI/TransferWnd/Splitter"), m_splitter ); +@@ -298,11 +304,21 @@ void CTransferWnd::OnSetDefaultCat( wxCo + + downloadlistctrl->SortList(); + } +- ++#if defined(AMULE_DAEMON) || defined(CLIENT_GUI) ++#else ++#include ++#endif + + void CTransferWnd::ShowQueueCount(uint32 number) + { ++#if defined(AMULE_DAEMON) || defined(CLIENT_GUI) + wxString str = wxString::Format( wxT("%u (%u %s)"), number, theStats::GetBannedCount(), _("Banned") ); ++ #warning "SP: **NON** Mostro il numero di client adu in coda" ++#else ++ #warning "SP: Mostro il numero di client adu in coda" ++ wxString str = wxString::Format( wxT("%u (%u %s, %d AdunanzA)"), number, theStats::GetBannedCount(), _("Banned"), theApp.uploadqueue->GetAdunanzAUserCount() ); ++#endif ++ + wxStaticText* label = CastChild( ID_CLIENTCOUNT, wxStaticText ); + + label->SetLabel( str ); +diff -urdpN ../aMule-2.1.3-orig/src/updownclient.h ./src/updownclient.h +--- ../aMule-2.1.3-orig/src/updownclient.h 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/updownclient.h 2006-06-12 18:30:14.000000000 +0200 +@@ -35,6 +35,7 @@ + #include "MD4Hash.h" + #include + #include "NetworkFunctions.h" ++#include "AdunanzA.h" + + #include + #include +@@ -385,6 +386,8 @@ public: + bool DeleteFileRequest(CPartFile* file); + void DeleteAllFileRequests(); + void SendBlockRequests(); ++ void CreateBlockRequests(int iMaxBlocks); ++ + void ProcessBlockPacket(const char* packet, uint32 size, bool packed = false); + + #ifndef CLIENT_GUI +@@ -411,7 +414,7 @@ public: + uint8 GetFileRating() const { return m_iRating; } + + const wxString& GetSoftStr() const { return m_clientSoftString; } +- const wxString& GetSoftVerStr() const { return m_clientVerString; } ++ const wxString& GetSoftVerStr() const { return m_clientVersionString; } + + uint16 GetKadPort() const { return m_nKadPort; } + void SetKadPort(uint16 nPort) { m_nKadPort = nPort; } +@@ -488,8 +491,12 @@ public: + * + * @return True if the socket exists and the packet was sent, false otherwise. + */ ++ // Stefano Picerno: Aggiunto il parametro actualPayloadSize ++#if 0 + bool SendPacket(CPacket* packet, bool delpacket = true, bool controlpacket = true); +- ++#endif ++ bool SendPacket(CPacket* packet, bool delpacket = true, bool controlpacket = true, uint32 actualPayloadSize = 0 ); ++ // Fine + /** + * Safe function for setting the download limit of the socket. + * +@@ -790,6 +797,32 @@ private: + uint8 m_byKadVersion; + uint32 m_dwLastBuddyPingPongTime; + ++ // Modifica AdunanzA ++ // ++ // Emanem 6/4/2004 - 13:25 ++ // Metodi per gestire la variabile "isAduSoftware" ++public : ++ uint32 GetIsAduSoftware(void) const {return isAduSoftware;} ++ void SetIsAduSoftware(uint32 in = 0){isAduSoftware = in;} ++ ++ bool IsOldAdu(uint32 oldver = ADU_VER_CODE(ADU_VER_MAJ,ADU_VER_MIN,0)) const {return isAduSoftware && aduver < oldver;} ++ // Metodo che informa se il client e' sia Adu ++ // che nella rete FastWeb Italiana. Dichiarato qui ma ++ // definito nel file AdunanzA.cpp ++ uint32 GetClientAduType(void) const; ++ void SetClientFWCity(void); ++ const wxString& GetClientFWCity(void) const {return m_FWCity;} ++ bool HasFastwebIP(void) const { return m_dwUserIP && AduIsFastWebIP(m_dwUserIP); } ++ ++ bool IsAduClient() const; ++ bool IsAduFiber() const; ++ bool sentadu; ++private: ++ uint32 aduver; ++ uint32 isAduSoftware; ++ wxString m_FWCity; ++ // fine mod Adu ++ + //! This keeps track of aggressive requests for files. + uint16 m_Aggressiveness; + //! This tracks the time of the last time since a file was requested +diff -urdpN ../aMule-2.1.3-orig/src/UploadBandwidthThrottler.cpp ./src/UploadBandwidthThrottler.cpp +--- ../aMule-2.1.3-orig/src/UploadBandwidthThrottler.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/UploadBandwidthThrottler.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -36,6 +36,7 @@ + + #include + #include ++#include + + #ifdef _UI64_MAX + #undef _UI64_MAX +@@ -314,8 +315,19 @@ void* UploadBandwidthThrottler::Entry() + sint64 realBytesToSpend = 0; + uint32 allowedDataRate = 0; + uint32 rememberedSlotCounter = 0; +- uint32 lastTickReachedBandwidth = ::GetTickCountFullRes(); +- uint32 extraSleepTime = TIME_BETWEEN_UPLOAD_LOOPS; ++ uint32 lastTickReachedBandwidth = lastLoopTick; ++ uint32 extraSleepTime = 0; ++ uint32 nextPrint = 0; // needed for debugging ++ uint32 lastSpent = lastLoopTick; ++ uint64 spentBytes = 0; ++ uint64 spentOverhead = 0; ++ sint64 estSendBytesT = 0; ++ uint32 timeSinceLastSpent = 0; ++ uint32 nextEstSBT = 0; ++ ++ const uint32 maxScale = 1200 * 1024, minScale = 6 * 1024, minFragments = 2, maxFragments = 128; ++ const float factor = (float)(maxFragments - minFragments) / 2 / (maxScale - minScale); ++ const uint16 avgPeriod = 10; + + while (m_doRun) { + uint32 timeSinceLastLoop = ::GetTickCountFullRes() - lastLoopTick; +@@ -330,11 +342,15 @@ void* UploadBandwidthThrottler::Entry() + allowedDataRate = (uint32)(-1); + } + } else { +- allowedDataRate = thePrefs::GetMaxUpload() * 1024; ++ allowedDataRate = (uint32)thePrefs::GetMaxUpload() * 1024; + } + + uint32 minFragSize = 1300; +- uint32 doubleSendSize = minFragSize*2; // send two packages at a time so they can share an ACK ++ ++ // Linearly scaling fragments number ++ uint16 nFragments = (uint16)( factor * ( ( allowedDataRate < maxScale ? allowedDataRate : maxScale ) - minScale ) + minFragments/2 + .5 ) * 2; ++ ++ uint32 doubleSendSize = minFragSize*nFragments; + if (allowedDataRate < 6*1024) { + minFragSize = 536; + doubleSendSize = minFragSize; // don't send two packages at a time at very low speeds to give them a smoother load +@@ -350,7 +366,7 @@ void* UploadBandwidthThrottler::Entry() + sleepTime = std::max((uint32)ceil((double)(-realBytesToSpend + 1000)/allowedDataRate), TIME_BETWEEN_UPLOAD_LOOPS); + } + +- if(timeSinceLastLoop < sleepTime) { ++ if(timeSinceLastLoop < sleepTime && sleepTime) { + Sleep(sleepTime-timeSinceLastLoop); + } + +@@ -373,9 +389,39 @@ void* UploadBandwidthThrottler::Entry() + lastLoopTick = thisLoopTick - timeSinceLastLoop; + } + ++ + realBytesToSpend += allowedDataRate*timeSinceLastLoop; + ++ // keep in mind that we don't count the IP overhead (~ +3% [~ 1500/1460]) ++ // and we're prone to understimate using an EWMA (~ +2% [simulation]) ++ if ((uint32)(estSendBytesT/avgPeriod*1.05f) > allowedDataRate) ++ realBytesToSpend = 0; ++ + bytesToSpend = realBytesToSpend/1000; ++ ++#if ADU_BETA_MAJ > 0 ++ // debug message ++ if (nextPrint < time(NULL)) { ++ AddDebugLogLineM(false, logGeneral, wxString::Format(wxT( ++ "dLL: %u dLS: %u TS: %lld realTS: %lld SB: %lld DR: %u MaxUpload: %u dSS: %u eSBT: %lld eSR: %lld nFrag: %u ST: %u"), ++ timeSinceLastLoop, ++ timeSinceLastSpent, ++ bytesToSpend, ++ realBytesToSpend, ++ spentBytes, ++ allowedDataRate, ++ thePrefs::GetMaxUpload(), ++ doubleSendSize, ++ estSendBytesT, ++ estSendBytesT/10, ++ nFragments, ++ sleepTime ++ )); ++ ++ nextPrint=time(NULL)+2; ++ } ++#endif ++ + } else { + realBytesToSpend = _I64_MAX; + bytesToSpend = _I32_MAX; +@@ -386,10 +432,10 @@ void* UploadBandwidthThrottler::Entry() + } + + lastLoopTick = thisLoopTick; ++ spentBytes = 0; ++ spentOverhead = 0; + + if(bytesToSpend >= 1) { +- uint64 spentBytes = 0; +- uint64 spentOverhead = 0; + + wxMutexLocker sendLock(m_sendLocker); + +@@ -485,9 +531,12 @@ void* UploadBandwidthThrottler::Entry() + rememberedSlotCounter++; + } + ++ // Old behaviour: + // Any bandwidth that hasn't been used yet are used first to last. ++ // New behaviour: ++ // The old one wasn't fair, in this way we share more the bandwidth across sockets in a more fair way + for(uint32 slotCounter = 0; slotCounter < m_StandardOrder_list.size() && bytesToSpend > 0 && spentBytes < (uint64)bytesToSpend; slotCounter++) { +- ThrottledFileSocket* socket = m_StandardOrder_list[ slotCounter ]; ++ ThrottledFileSocket* socket = m_StandardOrder_list[ ( slotCounter + rememberedSlotCounter ) % m_StandardOrder_list.size() ]; + + if(socket != NULL) { + uint32 bytesToSpendTemp = bytesToSpend-spentBytes; +@@ -528,11 +577,34 @@ void* UploadBandwidthThrottler::Entry() + m_SentBytesSinceLastCall += spentBytes; + m_SentBytesSinceLastCallOverhead += spentOverhead; + +- if ((spentBytes == 0) and (spentOverhead == 0)) { +- extraSleepTime = std::min(extraSleepTime * 5, 1000); // 1s at most +- } else { +- extraSleepTime = TIME_BETWEEN_UPLOAD_LOOPS; +- } ++ // This one is another important change ++ // if you send the thread to sleep you will never get good performances ++ // the cpu is already freed by the system calls (like read and write on the sockets) ++ // When implemented this you will also get even less cpu usage by the throttling thread ++ // This is happening because switching between sleep and run a lot of times ++ // could have high impact on the scheds and paging optimizations of the so. ++ extraSleepTime = 0; ++ ++ } else { ++ if (extraSleepTime == 0) ++ extraSleepTime=1; ++ ++ extraSleepTime = std::min(extraSleepTime * 5, 1000); // 1s at most ++ } ++ ++ estSendBytesT += spentBytes + spentOverhead; ++ ++ if (nextEstSBT < thisLoopTick) { ++ ++ timeSinceLastSpent = thisLoopTick - lastSpent; ++ lastSpent = thisLoopTick; ++ ++ ++ sint64 estSendBytesTOld = estSendBytesT; ++ estSendBytesT -= (sint64)(estSendBytesT*(float)timeSinceLastSpent/(1000*avgPeriod)); ++ ++ //printf("eSBT: %lld eSBTO: %lld tSLL: %u Rate: %.2f\n", estSendBytesT, estSendBytesTOld, timeSinceLastSpent, (float)estSendBytesT/(1024*avgPeriod)); ++ nextEstSBT = thisLoopTick + 250; + } + } + +diff -urdpN ../aMule-2.1.3-orig/src/UploadClient.cpp ./src/UploadClient.cpp +--- ../aMule-2.1.3-orig/src/UploadClient.cpp 2006-02-11 02:43:26.000000000 +0100 ++++ ./src/UploadClient.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -51,6 +51,12 @@ + #include "Logger.h" + #include + ++#include "AdunanzA.h" ++ ++#ifndef AMULE_DAEMON ++ #include "TransferWnd.h" // Needed for CTransferWnd ++#endif ++ + // members of CUpDownClient + // which are mainly used for uploading functions + +@@ -118,7 +124,7 @@ uint32 CUpDownClient::GetScore(bool sysv + filepriority = 2500; + break; //end + case PR_VERYHIGH: +- filepriority = 18; ++ filepriority = 70; + break; + case PR_HIGH: + filepriority = 9; +@@ -161,6 +167,12 @@ uint32 CUpDownClient::GetScore(bool sysv + if( (IsEmuleClient() || GetClientSoft() < 10) && m_byEmuleVersion <= 0x19) { + fBaseValue *= 0.5f; + } ++ ++#if 0 ++ if ( IsOldAdu() ) ++ fBaseValue *= 0.5f; ++#endif ++ + return (uint32)fBaseValue; + } + #endif +@@ -826,8 +838,15 @@ void CUpDownClient::CheckForAggressive() + return; + } + ++ // Mod Adunanza ++#if 0 + // Is this an aggressive request? + if ( ( cur_time - m_LastFileRequest ) < MIN_REQUESTTIME ) { ++#endif ++ ++ // Is this an aggressive request? ( And NOT an Adu3 ) ++ if ( ( ( cur_time - m_LastFileRequest ) < MIN_REQUESTTIME ) && ( !IsAduClient() )) { ++ // Fine Mod Adunanza + m_Aggressiveness += 3; + + // Is the client EVIL? +diff -urdpN ../aMule-2.1.3-orig/src/UploadQueue.cpp ./src/UploadQueue.cpp +--- ../aMule-2.1.3-orig/src/UploadQueue.cpp 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/UploadQueue.cpp 2006-06-12 18:30:14.000000000 +0200 +@@ -59,6 +59,9 @@ + #include + #include "UploadBandwidthThrottler.h" + ++// Mod adu ++ ++ + #include + + //TODO rewrite the whole networkcode, use overlapped sockets +@@ -68,19 +71,78 @@ CUploadQueue::CUploadQueue() + m_nLastStartUpload = 0; + + lastupslotHighID = true; ++ // mod Adu ++ // Emanem ++ // Inizializzo il numero di clients Adu ++ m_AduClientsNum = 0; ++ // fine mod Adu + } + + +-void CUploadQueue::AddUpNextClient(CUpDownClient* directadd) ++void CUploadQueue::AddUpNextClient(CUpDownClient* directadd, uint32 tC) + { + POSITION toadd = 0; + POSITION toaddlow = 0; + sint64 bestscore = -1; + sint64 bestlowscore = -1; + ++ // Mod Adu ++ // lupz ++ // capisco cosa voglio ++ uint32 typeClient = AduNextClient(); ++ //AddDebugLogLineM(false, logClient, CFormat(wxT("voglio: %u")) % typeClient); ++ if (typeClient == ADUNANZA_NONE) ++ return; ++ // Fine mod Adu ++ ++ // Mod Adu ++ // Emanem ++ // Forziamo che il rapporto 1:1 sia rispettato ++ //if (thePrefs.m_AduForceExt11 && ++ // ADUNANZA_FASTWEB == AduGetTypeBand(0) && ++ // 0 == m_AduClientsNum) ++ ++ // lupz: aggiorno alla nuova logica ++ ++ // lupz: sistemo anche il criterio ++ // il vecchio criterio causava frequenti coda piena ++ ++ if (directadd) { ++ switch(typeClient) { ++ case ADUNANZA_FASTWEB: ++ if (!directadd->IsAduClient()) ++ return; ++ break; ++ case ADUNANZA_EXTERN: ++ if (directadd->IsAduClient()) ++ return; ++ break; ++ } ++ } else if (!directadd) { ++ switch(typeClient) { ++ case ADUNANZA_FASTWEB: ++ if (!m_AduClientsNum) ++ return; ++ break; ++ case ADUNANZA_EXTERN: ++ if (m_AduClientsNum >= waitinglist.GetCount()) ++ return; ++ break; ++ } ++ } ++ ++ // fine mod Adu ++ + CUpDownClient* newclient; + // select next client or use given client + if (!directadd) { ++ // mod Adu ++ // Emanem ++ // Risistemo il valore temporaneo del numero di clients ++ // AdunanzA ++ uint32 _tmp_m_AduClientsNum = 0; ++ // fine mod Adu ++ + // Track if we purged any clients from the queue, as to only send one notify in total + bool purged = false; + +@@ -109,19 +171,64 @@ void CUploadQueue::AddUpNextClient(CUpDo + continue; + } + // finished clearing +- +- sint64 cur_score = cur_client->GetScore(true); +- if (cur_score > bestscore) { +- bestscore = cur_score; +- toadd = pos2; +- } else { +- cur_score = cur_client->GetScore(false); +- if ((cur_score > bestlowscore) && !cur_client->m_bAddNextConnect){ +- bestlowscore = cur_score; +- toaddlow = pos2; ++ ++ // Codice AdunanzA ++ // Emanem 18:15 4/4/2004 ++ // ++ // In questo caso, in base al tipo di typeClient ++ // in input si sceglie su che clients fare la "classifica" ++ /// di priorita' ++ uint32 cur_score = cur_client->GetScore(true); ++ ++ // valore temporaneo per sapere se un client e' AdunanzA ++ // o no ++ uint32 aduResult = cur_client->GetClientAduType(); ++ // nel caso incremento il contatore temporaneo ++ if (cur_client->IsAduClient()) ++ _tmp_m_AduClientsNum++; ++ // Se il tipo di client non e' disponibile ++ // allora prendo il primo che mi capita ++ if (typeClient == ADUNANZA_FASTWEB) ++ { ++ if (!m_AduClientsNum) typeClient = ADUNANZA_ANY; ++ } ++ if (typeClient == ADUNANZA_EXTERN) ++ { ++ if (m_AduClientsNum >= waitinglist.GetCount()) typeClient = ADUNANZA_ANY; ++ } ++ ++ bool doit = false; ++ switch(typeClient) ++ { ++ case ADUNANZA_EXTERN: ++ doit = cur_client->IsAduClient() == false; ++ break; ++ case ADUNANZA_FASTWEB: ++ doit = cur_client->IsAduClient() == true; ++ break; ++ default: ++ case ADUNANZA_ANY: ++ doit = true; ++ break; ++ }; ++ ++ if (doit) { ++ if ( cur_score > bestscore){ ++ bestscore = cur_score; ++ toadd = pos2; ++ } else { ++ cur_score = cur_client->GetScore(false); ++ if ((cur_score > bestlowscore) && !cur_client->m_bAddNextConnect){ ++ bestlowscore = cur_score; ++ toaddlow = pos2; ++ } + } + } + } ++ // mod Adu ++ // Emanem ++ // risistemo il numero di clients AdunanzA ++ m_AduClientsNum = _tmp_m_AduClientsNum; + + // Update the count on GUI if any clients were purged + if (purged) { +@@ -173,6 +280,11 @@ void CUploadQueue::AddUpNextClient(CUpDo + + theApp.uploadBandwidthThrottler->AddToStandardList(uploadinglist.GetCount(), newclient->GetSocket()); + uploadinglist.AddTail(newclient); ++ // Mod Adu ++ // lupz ++ if (newclient->IsAduClient()) ++ aduuploadinglist.AddTail(newclient); ++ // Fine mod Adu + theStats::AddUploadingClient(); + + // Statistic +@@ -186,13 +298,23 @@ void CUploadQueue::AddUpNextClient(CUpDo + + void CUploadQueue::Process() + { +- if (AcceptNewClient() && waitinglist.GetCount()) { ++ if (AcceptNewClient(AduNextClient() == ADUNANZA_FASTWEB) && waitinglist.GetCount()) { + m_nLastStartUpload = ::GetTickCount(); ++ // Modifica AdunanzA ++#if 0 + AddUpNextClient(); ++#endif ++ // ++ // Solo quando devo scegliere un client ++ // a caso scelgo uno secondo "AduGetType" ++ AddUpNextClient(NULL, AduGetTypeBand()); ++ // fine mod adu + } + + // The loop that feeds the upload slots with data. + POSITION pos = uploadinglist.GetHeadPosition(); ++ uint64 aduSentBytes = 0, fakeSentBytes = 0, aduFiberSentBytes = 0; ++ + while (pos != NULL) { + // Get the client. Note! Also updates pos as a side effect. + CUpDownClient* cur_client = uploadinglist.GetNext(pos); +@@ -203,7 +325,14 @@ void CUploadQueue::Process() + cur_client->Safe_Delete(); + } + } else { +- cur_client->SendBlockData(); ++ uint32 sentBytes = cur_client->SendBlockData(); ++ ++ if (cur_client->IsAduClient()) { ++ aduSentBytes += sentBytes; ++ if (cur_client->IsAduFiber()) ++ aduFiberSentBytes += sentBytes; ++ } ++ fakeSentBytes += sentBytes; + } + } + +@@ -213,12 +342,29 @@ void CUploadQueue::Process() + + // Update statistics + if (sentBytes) { +- theStats::AddSentBytes(sentBytes); ++ theStats::AddSentBytes(fakeSentBytes,aduSentBytes,aduFiberSentBytes); + } + } + +-bool CUploadQueue::AcceptNewClient() ++bool CUploadQueue::AcceptNewClient(bool isAduClient) + { ++ ++ uint32 typeClient = AduNextClient(); ++ ++ switch (typeClient) { ++ case ADUNANZA_NONE: ++ return false; ++ break; ++ case ADUNANZA_FASTWEB: ++ if (!isAduClient) ++ return false; ++ break; ++ case ADUNANZA_EXTERN: ++ if (isAduClient) ++ return false; ++ break; ++ } ++ + // check if we can allow a new client to start downloading from us + if (::GetTickCount() - m_nLastStartUpload < 1000 || uploadinglist.GetCount() >= MAX_UP_CLIENTS_ALLOWED) { + return false; +@@ -231,7 +377,8 @@ bool CUploadQueue::AcceptNewClient() + return true; + } + } else { +- uint16 nMaxSlots = 0; ++ uint16 nMaxSlots = AduGetMaxUploadSlots(); ++#if 0 + if (thePrefs::GetMaxUpload() >= 10) { + nMaxSlots = (uint16)floor((float)thePrefs::GetMaxUpload() / kBpsUpPerClient + 0.5); + // floor(x + 0.5) is a way of doing round(x) that works with gcc < 3 ... +@@ -241,6 +388,9 @@ bool CUploadQueue::AcceptNewClient() + } else { + nMaxSlots = MIN_UP_CLIENTS_ALLOWED; + } ++#endif ++ ++ //AddDebugLogLineM(false, logClient, CFormat(wxT("in up: %u massimi: %u")) % (uint32)uploadinglist.GetCount() % nMaxSlots); + + if ((uint32)uploadinglist.GetCount() < nMaxSlots) { + return true; +@@ -288,11 +438,21 @@ POSITION CUploadQueue::GetDownloadingCli + + void CUploadQueue::AddClientToQueue(CUpDownClient* client) + { ++// Mod Adu ++// Emanem ++// Questa mod serve a supportare piu' di 50 clients se ++// connessi con un low-id ++#if 0 + if (theApp.serverconnect->IsConnected() && theApp.serverconnect->IsLowID() && !theApp.serverconnect->IsLocalServer(client->GetServerIP(),client->GetServerPort()) && client->GetDownloadState() == DS_NONE && !client->IsFriend() && theStats::GetWaitingUserCount() > 50) { +- // Well, all that issues finish in the same: don't allow to add to the queue ++#endif ++ if (theApp.serverconnect->IsConnected() && theApp.serverconnect->IsLowID() && !theApp.serverconnect->IsLocalServer(client->GetServerIP(),client->GetServerPort()) && client->GetDownloadState() == DS_NONE && !client->IsFriend() && theStats::GetWaitingUserCount() > theApp.glob_prefs->GetQueueSize() ) { ++ // Well, all that issues finish in the same: don't allow to add to the queue + return; + } + ++ // fine mod Adu ++ ++ + if ( client->IsBanned() ) { + return; + } +@@ -309,7 +469,13 @@ void CUploadQueue::AddClientToQueue(CUpD + CUpDownClient* cur_client = *it; + + if ( cur_client == client ) { ++ // Stefano Picerno: aggiunto && (uploadinglist.GetCount() < AduGetMaxUploadSlots()) ++#if 0 + if ( client->m_bAddNextConnect && ( ( uploadinglist.GetCount() < thePrefs::GetMaxUpload() ) || ( thePrefs::GetMaxUpload() == UNLIMITED ) ) ) { ++#endif ++ //AddDebugLogLineM(false, logClient, CFormat(wxT("in up: %u massimi: %u")) % (uint32)uploadinglist.GetCount() % AduGetMaxUploadSlots()); ++ ++ if ( client->m_bAddNextConnect && ( ( uploadinglist.GetCount() < thePrefs::GetMaxUpload() ) || ( thePrefs::GetMaxUpload() == UNLIMITED ) ) && (uploadinglist.GetCount() < AduGetMaxUploadSlots()) ) { + if (lastupslotHighID) { + client->m_bAddNextConnect = false; + RemoveFromWaitingQueue(client, true); +@@ -378,6 +544,9 @@ void CUploadQueue::AddClientToQueue(CUpD + } + + // TODO find better ways to cap the list ++ ++ //AddDebugLogLineM(false, logClient, CFormat(wxT("in coda: %u massimi: %u")) % (uint32)waitinglist.GetCount() % thePrefs::GetQueueSize()); ++ + if ( (uint32)waitinglist.GetCount() >= (thePrefs::GetQueueSize())) { + return; + } +@@ -390,7 +559,7 @@ void CUploadQueue::AddClientToQueue(CUpD + return; + } + +- if (waitinglist.IsEmpty() && AcceptNewClient()) { ++ if (waitinglist.IsEmpty() && AcceptNewClient(client->IsAduClient())) { + AddUpNextClient(client); + m_nLastStartUpload = ::GetTickCount(); + } else { +@@ -398,6 +567,12 @@ void CUploadQueue::AddClientToQueue(CUpD + theStats::AddWaitingClient(); + client->ClearWaitStartTime(); + client->ClearAskedCount(); ++ // mod Adu ++ // Emanem ++ // se un client e' Adu incremento il conteggio ++ if (client->IsAduClient()) ++ m_AduClientsNum++; ++ // fine mod Adu + client->SetUploadState(US_ONUPLOADQUEUE); + client->SendRankingInfo(); + Notify_QlistAddClient(client); +@@ -414,6 +589,12 @@ bool CUploadQueue::RemoveFromUploadQueue + Notify_UploadCtrlRemoveClient(client); + } + uploadinglist.RemoveAt(pos); ++ // Mod Adu ++ // lupz ++ POSITION adupos=aduuploadinglist.Find(client); ++ if (adupos) ++ aduuploadinglist.RemoveAt(adupos); ++ // Fine mod Adu + theStats::RemoveUploadingClient(); + if( client->GetTransferredUp() ) { + theStats::AddSuccessfulUpload(); +@@ -430,25 +611,91 @@ bool CUploadQueue::RemoveFromUploadQueue + + bool CUploadQueue::CheckForTimeOver(CUpDownClient* client) + { +- if (thePrefs::TransferFullChunks()) { +- if( client->GetUpStartTimeDelay() > 3600000 ) { // Try to keep the clients from downloading forever. ++ // Mod Adu ++ // Emanem ++ // Se il client e' AdunanzA lo si lascia connesso ++ // al max per 1 ora. Se e' esterno al max per ++ // 10 minuti. ++ if ( client && client->IsAduClient() ) ++ { ++ if( client->GetUpStartTimeDelay() > SESSIONMAXTIME ){ // Try to keep the clients from downloading for ever. ++ if (thePrefs::GetVerbose()) ++ AddDebugLogLineM(false, logClient, wxString::Format(_("%s: Upload session ended due to max time %s."), client->GetUserName().c_str(), CastSecondsToHM(SESSIONMAXTIME/1000).c_str() )); + return true; + } +- // For some reason, some clients can continue to download after a chunk size. +- // Are they redownloading the same chunk over and over???? +- if( client->GetSessionUp() > 10485760 ) { ++ } ++ else ++ { ++ if( client->GetUpStartTimeDelay() > MIN2MS(10) ) { // Try to keep the clients from downloading for ever. + return true; + } +- } else { +- for (POSITION pos = waitinglist.GetHeadPosition();pos != 0; ) { +- if (client->GetScore(true,true) < waitinglist.GetNext(pos)->GetScore(true,false)) { ++ } ++ // Fine mod Adu ++ ++ if (thePrefs::TransferFullChunks()) { ++ // Allow the client to download a specified amount per session ++ if ( client->IsAduClient() ) ++ { ++ /* Kaiser -- 08/04/2004 - 15.43 ++ Se รจ un ext lo "stacca" dopo SESSIONMAXTRANS (9,3mb) altrimenti cerca ++ di staccarlo dopo ADU_SESSIONMAXTRANS (18,6mb) ovvero il doppio. ++ In questo modo possiamo favorire lo scambio tra aduner senza dover ++ modificare i tempi di reask e rischiando quindi meno ban! */ ++ if( client->GetQueueSessionPayloadUp() > ADU_SESSIONMAXTRANS){ ++ // Inoltre se la prossima slot deve essere AdunanzA e non ho altri Adu in coda ++ // non lo butto giu' per poi riprenderlo in coda di upload. ++ // Quindi se la prossima slot e' non adunanza lo butto giu'. ++ // Condizioni sufficiente per buttare giu' un client sono: ++ // - Avere altri Adu in coda di attesa ++ // - Che il prossimo client non sia Adu ++ if ((theApp.uploadqueue->GetAdunanzAUserCount() > 0) || (ADUNANZA_FASTWEB != AduGetTypeBand())) ++ { ++ if (thePrefs::GetVerbose()) ++ AddDebugLogLineM(false, logClient, wxString::Format(_("%s: Upload session ended due to max transfered amount. %s"), client->GetUserName().c_str(), CastItoXBytes(ADU_SESSIONMAXTRANS).c_str() ) ); ++ return true; ++ } ++ } ++ } ++ else ++ { ++ if( client->GetQueueSessionPayloadUp() > SESSIONMAXTRANS || AduMaxTrans() ){ ++ if (thePrefs::GetVerbose()) ++ AddDebugLogLineM(false, logClient, wxString::Format(_("%s: Upload session ended due to max transfered amount. %s"), client->GetUserName().c_str(), CastItoXBytes(SESSIONMAXTRANS).c_str() )); + return true; + } + } ++ } else { ++ // Stefano Picerno: emule adunanza usa sempre TransferFullChunks = true !!!!! ++ AddDebugLogLineM(false, logGeneral, _("ERROR: aMule adunanza assumes that TransferFullChunks is TRUE, but now it's false !!!." ) ); ++ // Fine modifica + } + return false; + } + ++// Stefano Picerno: Metodo mancante ++void CUploadQueue::UpdateMaxClientScore() ++{ ++ m_imaxscore=0; ++ // Inizio mod Adu ++ m_AduImaxscore = 0; ++ m_ExtImaxscore = 0; ++ for(POSITION pos = waitinglist.GetHeadPosition(); pos != 0; ) { ++ CUpDownClient* client = waitinglist.GetNext(pos); ++ uint32 score = client->GetScore(true, false); ++ if(score > m_imaxscore ) ++ m_imaxscore=score; ++ ++ if (client->IsAduClient()) ++ if (score > m_AduImaxscore) ++ m_AduImaxscore = score; ++ else ++ if (score > m_ExtImaxscore) ++ m_ExtImaxscore = score; ++ } ++ // fine mod Adu ++} ++// Fine ++ + uint16 CUploadQueue::GetWaitingPosition(CUpDownClient* client) + { + if ( !IsOnUploadQueue(client) ) { +@@ -529,6 +776,12 @@ bool CUploadQueue::RemoveFromWaitingQueu + void CUploadQueue::RemoveFromWaitingQueue(POSITION pos) + { + CUpDownClient* todelete = waitinglist.GetAt(pos); ++ // mod Adu ++ // Emanem ++ // se il client era adu decremento il contatore ++ if (todelete->IsAduClient()) ++ m_AduClientsNum--; ++ // fine mod Adu + waitinglist.RemoveAt(pos); + theStats::RemoveWaitingClient(); + if( todelete->IsBanned() ) { +diff -urdpN ../aMule-2.1.3-orig/src/UploadQueue.h ./src/UploadQueue.h +--- ../aMule-2.1.3-orig/src/UploadQueue.h 2006-01-01 06:17:25.000000000 +0100 ++++ ./src/UploadQueue.h 2006-06-12 18:30:14.000000000 +0200 +@@ -50,7 +50,14 @@ public: + POSITION GetFirstFromUploadList() {return uploadinglist.GetHeadPosition();} + CUpDownClient* GetNextFromUploadList(POSITION &curpos) {return uploadinglist.GetNext(curpos);} + CUpDownClient* GetQueueClientAt(POSITION &curpos) {return uploadinglist.GetAt(curpos);} +- ++ // mod Adu ++ // Emanem ++ int GetAdunanzAUserCount() {return m_AduClientsNum;} ++ // mod Adu ++ // lupz ++ uint16 GetAduUploadCount() const { return aduuploadinglist.GetCount(); } ++ uint16 GetUploadCount() const { return uploadinglist.GetCount(); } ++ // fine mod Adu + POSITION GetFirstFromWaitingList() {return waitinglist.GetHeadPosition();} + CUpDownClient* GetNextFromWaitingList(POSITION &curpos) {return waitinglist.GetNext(curpos);} + CUpDownClient* GetWaitClientAt(POSITION &curpos) {return waitinglist.GetAt(curpos);} +@@ -61,17 +68,45 @@ public: + uint16 GetWaitingPosition(CUpDownClient* client); + void SuspendUpload( const CMD4Hash& ); + void ResumeUpload( const CMD4Hash& ); +- ++ ++ // Stefano Picerno: metodi presi da emule ++ void UpdateMaxClientScore(); ++ uint32 GetMaxClientScore() { return m_imaxscore; } ++ // fine ++ uint32 lastmax; + protected: + void RemoveFromWaitingQueue(POSITION pos); + POSITION GetWaitingClient(CUpDownClient* client); + POSITION GetDownloadingClient(CUpDownClient* client); +- bool AcceptNewClient(); ++ bool AcceptNewClient(bool isAduClient = false); ++ // Attenzione: verisone modificata per AdunanzA ++ // il parametro "typeClient" e' settato di base al valore ADUNANZA_ANY ++#if 0 + void AddUpNextClient(CUpDownClient* directadd = 0); ++#endif ++ void AddUpNextClient(CUpDownClient* directadd = 0, uint32 typeClient = 0); ++ ++ // Inizio mod Adu ++ uint32 GetAduMaxClientScore() {return m_AduImaxscore;} ++ uint32 GetExtMaxClientScore() {return m_ExtImaxscore;} ++ // fine mod Adu ++private: ++ // Stefano Picerno: preso da emule ++ uint32 m_imaxscore; ++ // Fine ++ // Mod Adu ++ uint32 m_AduImaxscore; ++ uint32 m_ExtImaxscore; ++ uint32 m_AduClientsNum; ++ // fine mod Adu + + private: + CTypedPtrList waitinglist; + CTypedPtrList uploadinglist; ++ // Mod Adu ++ // lupz ++ CTypedPtrList aduuploadinglist; ++ // Fine Mod Adu + typedef std::list suspendlist; + suspendlist suspended_uploads_list; //list for suspended uploads + uint32 m_nLastStartUpload;