New release: Version 3.4.3, 13th September 2013Stable codebase, feature upgrade version - Proxy support on stratum and per pool quota support. I also sneaked onto my wife's laptop to get osx working.
Human readable changelog:- Build fixes for cgminer releases to build on OSX (building from git still requires massaging).
- Fix for an extremely rare cause of crashes.
- Updated the screen to show when there is block change notification with multipool strategies and stratum.
- Don't show the "waiting for work" message unless it is longer than it takes to switch pools during lag periods.
- Cope with trailing slashes being used on stratum based URLs.
- miner.php updates.
- Native proxy support on stratum for http1.0, http1.1, socks4, socks4a, socks5 and socks5h proxies without using libcurl for maximum stability.
- A completely rewritten load-balance strategy that now supports per pool quota support. See the following from the updated documentation to see how it works:
LOAD BALANCE:This strategy sends work to all the pools on a quota basis. By default, all
pools are allocated equal quotas unless specified with --quota. This
apportioning of work is based on work handed out, not shares returned so is
independent of difficulty targets or rejected shares. While a pool is disabled
or dead, its quota is dropped until it is re-enabled. Quotas are forward
looking, so if the quota is changed on the fly, it only affects future work.
If all pools are set to zero quota or all pools with quota are dead, it will
fall back to a failover mode. See quota below for more information.
The failover-only flag has special meaning in combination with load-balance
mode and it will distribute quota back to priority pool 0 from any pools that
are unable to provide work for any reason so as to maintain quota ratios
between the rest of the pools.
QUOTASThe load-balance multipool strategy works off a quota based scheduler. The
quotas handed out by default are equal, but the user is allowed to specify any
arbitrary ratio of quotas. For example, if all the quota values add up to 100,
each quota value will be a percentage, but if 2 pools are specified and pool0
is given a quota of 1 and pool1 is given a quota of 9, pool0 will get 10% of
the work and pool1 will get 90%. Quotas can be changed on the fly by the API,
and do not act retrospectively. Setting a quota to zero will effectively
disable that pool unless all other pools are disabled or dead. In that
scenario, load-balance falls back to regular failover priority-based strategy.
While a pool is dead, it loses its quota and no attempt is made to catch up
when it comes back to life.
To specify quotas on the command line, pools should be specified with a
semicolon separated --quota(or -U) entry instead of --url. Pools specified with
--url are given a nominal quota value of 1 and entries can be mixed.
For example:
--url poola:porta -u usernamea -p passa --quota "2;poolb:portb" -u usernameb -p passb
Will give poola 1/3 of the work and poolb 2/3 of the work.
Writing configuration files with quotas is likewise supported. To use the above
quotas in a configuration file they would be specified thus:
"pools" : [
{
"url" : "poola:porta",
"user" : "usernamea",
"pass" : "passa"
},
{
"quota" : "2;poolb:portb",
"user" : "usernameb",
"pass" : "passb"
}
]
Full changelog:- Put corefoundation and iokit separate in ldflags for darwin.
- Add rules for libusb Makefile.am building on osx
- Add flags for building libusb statically on osx.
- Find the greatest common denominator in quotas and use the smallest number of
consecutive work items per pool in quota load balance mode to smooth hashrate
across pools with large quotas. Give excess quota to priority pool 0 instead of
pool 0.
- Avoid dynamically adding stack memory for nonce2 in the stratum send thread
and check the pool's nonce2_len will not cause an overflow.
- Add subdir-objects to automake options.
- Use inet_addr instead of inet_network to fix windows build.
- Remove unused pbase variable.
- Add support for socks4/4a proxies with stratum, and drop back to socks4
support via the global --socks-proxy command to not break previous
configurations.
- Fix warning on mingw build.
- Only show long-poll message in pool summary if it's not using stratum.
- Increase the time for the waiting for work message to be given to be greater
than that required for a pool swap in the scheduler which is set to 5s.
- Change message in status when using a balanced pool strategy to notify if
there's a stratum pool as well.
- Use the --failover-only flag to have special meaning in combination with
load-balance mode to distribute any unused quota back to pool 0 to maintain
ratios amongst other pools.
- Display quota and allow it to be modified via the pool menu.
- Add API commands and modify output to support pool quota displaying and
changing.
- Change message in status when using a balanced pool strategy to notify if
there's a stratum pool as well.
- Add quota support to configuration files.
- Rotate pools on all failures to set a pool in select_pool.
- Use quotas for load-balance pool strategy.
- Provide a mechanism for setting a pool quota to be used by load-balance.
- Use the --socks-proxy option with stratum, changing it to defaulting to socks5
and give appropriate message should it fail to connect.
- Cope with trailing slashes in stratum urls.
- Add more debugging messages when negotiating with proxies for stratum.
- Test specifically for socks5h in socks support for stratum.
- Add support for socks5 proxy with stratum
- Provide support for negotiating a stratum connection via http proxies.
- Connect to the proxy URL and port if specified for stratum sockets instead of
the pool directly.
- Extract any proxy url and port to be used by sockaddr if possible using
extract_sockaddr.
- Make extract_sockaddr set variables passed to it rather than pool struct
members.
- miner.php sort the mcast rigs so they are always in the same relative order
- miner.php allow sending the muticast message multiple times
- miner.php mcast ignore duplicate replies