--3.1.2-- 1. Added missing #ifdef THROTTLE_CLIENT_IP & #ifdef THROTTLE_REMOTE_USER around checks in policy_concurrent(). --3.1.1-- 1. Found race condition in get_client_ip() and get_remote_user() that could result in duplicate entries appearing in the lists. Should now be fixed. 2. Enhanced code to reduce instances where % goes way above 100%. This occurs because the request bytes sent is logged at the end of the request, so that dynamic documents can be handled. This enhancement will identify simple file requests and count them before the policy is applied. Dynamic requests are still logged at the end of the request. 3. Merged some critical sections to reduce number of calls to critical_aquire() and critical_release(). ---3.1--- 1. Back by popular demand, the % of limit reached column in the status display. 2. Removed ThrottleSlack. This global could poses problems for the Original policy when the slack is greater than the period. Now the slack is calculated as 1/5 the period. 3. USE_SYSTEM_V_SHARED_MEMORY sm_pool_create() now clears the assigned block of shared memory. 4. Fixed Speed policy so that when when we fall below the limit, the previous applied delay is reset to zero for the status display. 5. Fixed Speed policy overflow for large limits when the period resets. 6. Fixed Original policy problem concerning old byte unit calculation and the change to kbyte units which meant the delays never kicked in. 7. No more throttling of the throttle status display. Also the bytes sent, etc. are not counted in the stats. 8. Modified ThrottleUser to support "*", which loads all the users from the system user database. Also "/path/to/htpasswd" file that provide a list of real users, virtual user which have no user id are ignored. Requested by Wolf <wolf_pro@inbox.ru>. 9. Added ThrottleClientIP, throttle-clients to monitor and throttle client IP addresses. Can be disabled with #undef THROTTLE_CLIENT_IP or specifying a pool size of 0. Requested by Os Tyler <os@nothingspecial.com> 10. Added ThrottleRemoteUser, throttle-remote-users to monitor and throttle autheticated remote users. Can be disabled with #undef THROTTLE_REMOTE_USER or specifying a pool size of 0. Requested by Wolf <wolf_pro@inbox.ru>. 11. Added throttle hierarchy: client-ip, authenticated user, local user, server. On succesful requests, this has the affect of several different throttles monitoring the same request. Variation of a requested by David M. Shirley <david@webquarry.com>. 12. Format of mod_throttle.runtime file altered to support new data elements and sections. 13. Added new policy Idle. 14. Changed format of elapsed time display: d+H:M.S Leading zero elements are not shown. 15. Added new status column: idle time 16. Change status displays to use style sheets. Therefore for best viewing you need a CSS capable browser. 17. Fix bug in byte_size() to proper display 1500M. Only exact multiple of 1024 get a M or G suffix by design. ---3.0--- 1. Complete overhaul the shared memory and semaphore code: a) POSIX shared memory & semaphore finally work (tested Solaris 5.7) b) The shared memory segment and semaphores are now released properly when Apache is shutdown or restarted. c) No more hard-wired shared memory keys; this should allow more than one parent Apache process to run without conflicts with shared memory & semaphore keys. d) There is no hardwired limit on the number of throttles we can have in shared memory. Only limited now by the size of shared memory itself. 2. Added support for <directory> and <location> blocks. 3. Created alternative throttle policies that can be applied per user, directory, location, or host. 4. Runtime information preserved across shutdown & restarts. 5. Revamped throttle status display: a) ability to reset individual or all stats b) dump & restore the stats while running c) Fixed the "(unknown)" host name for the parent server. 6. Changed the busy error status to 503 HTTP_SERVICE_UNAVAILABLE. 7. ThrottleMaster removed in favour of using ServerAlias. 8. Smallest measure of volumn (bytes sent) is now kilo-byte units. This allows for longer periods between roll-over adjustments in all the policies. The GB/month column dropped in favour of the KBytes-sent 9. Added the ability to view induhvidual throttles. 10. Generated patches for mod_userdir to support /~user/throttle-me handler and mod_proxy to support monitoring of bytes_sent through proxy requests. ----2.12---- 1. Do not refresh when set to zero (0). 2. Added ThrottleAveragePeriod & ThrottleDivideBy to allow fine tuning of the averaging algorithm. Shorter periods should be more frequent adjustments in the statistics, while a higher divide-by value would mean smaller changes in the statistics. It is uncertain if ThrottleDivideBy provides any significant advantage. Consider it experimental and may be removed or modified at a later date. ----2.11---- 1. From: "Harry W. Waddell" <waddell@caravan.com> Works on NetBSD 1.4.3_ALPHA on i386 hardware. Should work on any NetBSD 1.4.x or 1.5 system with the following change: append to line 182: || defined(__NetBSD__) [ACH - This change has now been applied to the source.] ----2.10---- 1. Fix for FreeBSD; mod_throttle will now compile against the System V API, instead of POSIX. The reason the POSIX code is disabled is because named semaphores are not supported under FreeBSD and Linux at the moment; after which the shared memory code would need testing. 2. Tested on SunOS 5.6. Apache must be built with: --enable-rule=SHARED_CORE 3. It is not recommended to build mod_throttle as a static module into Apache. However, if you really want to do this, Martin Lathoud <nytral@enDirect.qc.ca>, recommends instead of specifying --activate-module for the Apache configure script, to use: --add-module=src/modules/throttle/mod_throttle.c --enable-shared=throttle Then its a simple matter to turn sharing off or on. This assumes you unpacked the mod_throttle source within the Apache source tree. ----2.09---- 1. Switched to using APXS module building. 2. Added version for Apache server-info display. 3. Added ThrottleContentType for text/plain output. (Highly requested by script writers for statistics.) 4. Added author's mailto: in footer of status display. 5. DISABLED POSIX code. Never did work and have no time nor POSIX machine to address it. 6. Added very brief licensing terms as requested by the Debian folks See top of mod_throttle.c. ----2.08---- o Fix include order of <sys/sem.h>. I miss-applied the suggested fix for union semun. ----2.07---- o Fixed missing comma bug. o Added fix for union semun being missing on some systems. o Added untested code in #ifdef POLITE_RESPONSE for when a virtual host is throttled. o Add ThrottleMaxDelay, see index.shtml for more information ----2.06---- No log kept. ---1.0--- See Mark Lovell code.