Commit Graph

2039 Commits

Author SHA1 Message Date
willy tarreau
c2becdc403 Limit the number of consecutive accept() in multi-process mode.
This produces a more evenly distributed load across the processes and slightly
improves performance by reducing bottlenecks.
2006-03-19 19:36:48 +01:00
willy tarreau
05be12bb20 Make fd management more robust and easier to debug. Also some micro-optimisations. 2006-03-19 19:35:00 +01:00
willy tarreau
3c407cd544 ENORMOUS long standing bug affecting the epoll polling system.
event_data is a union, not a structure !
2006-03-19 19:33:33 +01:00
willy tarreau
779dc897e7 assert.h is needed when DEBUG is defined. 2006-03-19 19:32:29 +01:00
willy tarreau
e4c2e10a98 fixed haproxy.spec to build correctly on RHEL3 2006-03-15 20:47:25 +01:00
willy tarreau
50be0170d1 Updated version to 1.2.9 2006-03-15 19:41:19 +01:00
willy tarreau
b6da47990b New .spec for RHEL from DAG 2006-03-15 19:41:10 +01:00
Willy TARREAU
2bfdd8e26a * haproxy could not be stopped after being paused. 2006-03-12 18:03:05 +01:00
Willy TARREAU
dd676173f0 * automatically deduce ulimit-n from maxsock 2006-03-12 18:01:33 +01:00
Willy TARREAU
203b0b624f * account for the sockets needed for listeners and checks
during computation of maximum number of sockets.
2006-03-12 18:00:28 +01:00
Willy TARREAU
13032e769e * added the ability to enforce a maximum number of connections at compile time via SYSTEM_MAXCONN. 2006-03-12 17:49:02 +01:00
willy tarreau
b5669e94ae * implemented support for multi-line headers as required by RFC2616. 2006-03-02 16:50:45 +01:00
Willy TARREAU
3759f98d44 * health checks sent to servers configured with identical intervals
were sent in perfect synchronisation because the initial time was
  the same for all. This could induce high load peaks when fragile
  servers were hosting tens of instances for the same application.
  Now the load is spread evenly across the smallest interval amongst
  a listener.
2006-03-01 22:44:17 +01:00
Willy TARREAU
767ba71444 * the default 'httpclose' option only sets the 'Connection:' headers
to 'close', but does not actually close any connection. The problem
  is, there are some servers which don't close the connection even if
  the proxy tells them 'Connection: close'. A workaround was added by
  the way of a new option 'forceclose' (which implies 'httpclose'),
  and which makes the proxy close the outgoing channel to the server
  once it has sent all its headers. Just don't use this with the
  'CONNECT' method of course !
2006-03-01 22:40:50 +01:00
Willy TARREAU
3481c46368 * there was a bug in the way the backup servers were handled. They
were erroneously load-balanced while the doc said the opposite.
  Since load-balanced backup servers is one of the features some
  people have been asking for, the problem was fixed to reflect the
  documented behaviour and a new option 'allbackups' was introduced
  to provide the feature to those who need it.
2006-03-01 22:37:57 +01:00
Willy TARREAU
b45124729a * some commented out debug code was not usable. This is fixed. 2006-03-01 22:34:48 +01:00
Willy TARREAU
1cec83c754 * a never ending connect() could lead to a fast select() loop if
its timeout times the number of retransmits exceeded the server
  read or write timeout, because the later was used to compute
  select()'s timeout while the connection timeout was not reached.
2006-03-01 22:33:49 +01:00
Willy TARREAU
c9a643998f * fixed some tv_cmp_ms() computations. Strictly speaking, there was
a very short window of 1 microsecond every millisecond during which
  two events were not considered as 1 ms apart from each other.
2006-03-01 22:30:20 +01:00
Willy TARREAU
a9e75f6eff * now we initialize the libc's localtime structures very early so
that even under OOM conditions, we can still send dated error
  messages without segfaulting.
2006-03-01 22:27:48 +01:00
Willy TARREAU
e3283d1cd3 * daemon mode must imply 'quiet' and disable 'verbose' as
stdout/stderr file descriptors are closed.
2006-03-01 22:15:29 +01:00
Willy TARREAU
edb12df477 * Added a 'haproxy.bsd' entry to fix openbsd build 2006-01-29 23:19:04 +01:00
willy tarreau
726618c761 * fixed a few missing dates 2006-01-29 22:42:06 +01:00
willy tarreau
065f1c0798 * bumped version to 1.2.8 and updated CHANGELOG accordingly 2006-01-29 22:10:07 +01:00
willy tarreau
39df2dc8fc * fixed version references in documentation 2006-01-29 21:56:05 +01:00
willy tarreau
cb2e562ad7 * recent change for pause/play mode broke compilation due to sockaddr_storage. 2006-01-29 21:55:30 +01:00
willy tarreau
22739efb4a * Documentation about the hot-reconfiguration mechanism. 2006-01-29 21:40:41 +01:00
willy tarreau
808b4e6f61 * do not respect the grace time when switching from PAUSED to STOPPED state. 2006-01-29 21:39:33 +01:00
willy tarreau
dbd3befae8 * changed PR_STDISABLED for PR_STPAUSED
* added a pause/play mechanism which can be triggered by SIGTTOU/SIGTTIN
2006-01-29 21:39:05 +01:00
willy tarreau
9970d5cf80 * fixed odd addresses in tests/defaults.cfg 2006-01-08 01:51:58 +01:00
Willy TARREAU
e78ae269fe * fixed a nasty bug in epoll_loop() and poll_loop() by which an EPOLL_HUP event
could trigger both a read and a write calls, thus sometimes inducing headers
  being directly sent from srv to cli without modification, and leading further
  modification to crash the process by memory corruption, because
  rep.data+rep.l<rep.h so the memmove() length argument is negative. Only
  observed with epoll() and never poll(), though this one should have been
  affected too. Now, only call functions which have been allowed to.
2006-01-08 01:24:12 +01:00
willy tarreau
11a4606c8b * updated displayed version to 1.2.7.1. 2005-12-18 01:43:47 +01:00
willy tarreau
a4a583ac05 * TCP health-checks don't detect a connection refused with poll/epoll
because event_srv_chk_r() is called before _w() and flushes the socket
  error. The result is that the server remains UP. The problem only
  affects pure TCP health-checks when select() is disabled. You may
  encounter this on SSL or SMTP proxies.
2005-12-18 01:39:19 +01:00
willy tarreau
48b06594b9 * The 'retries' option was not used because the connect() could not return
an error if the connection was refused before the the timeout. So the
  client was sent to the server anyway and then got its connection broken
  because of the write error. This is not a real problem with persistence,
  but it definitely is for new clients. This stupid bug must have been
  present for years !
2005-12-18 01:37:12 +01:00
willy tarreau
a56eca75f5 * released 1.2.7 2005-12-18 01:34:42 +01:00
willy tarreau
01a73eb553 * updated some entries in the TODO 2005-12-18 01:34:05 +01:00
willy tarreau
783453346f * added a README to help about the build process 2005-12-18 01:33:16 +01:00
willy tarreau
4373b967e9 * added "static-pcre" to the list of supported regex options in the Makefile. 2005-12-18 01:32:31 +01:00
willy tarreau
d0fb4650d6 * delayed the quiet mode during startup so that most of the startup alerts can
be displayed even in quiet mode.
* display an alert when a listener has no address, invalid or no port, or when
  there are no enabled listeners upon startup.
2005-12-18 01:32:04 +01:00
willy tarreau
77bc854117 * building with -DUSE_PCRE should include PCRE headers and not regex.h. At
least on Solaris, this caused the libc's regex primitives to be used instead
  of PCRE, which caused trouble on group references. This is now fixed.
2005-12-18 01:31:43 +01:00
willy tarreau
b952e1db84 * released 1.2.7rc (1.1.33rc)
* second batch of socklen_t changes.
* clean-ups from Cameron Simpson.
* because tv_remain() does not know about eternity, using no timeout can
  make select() spin around a null time-out. Bug reported by Cameron Simpson.
* client read timeout was not properly set to eternity initialized after an
  accept() if it was not set in the config. It remained undetected so long
  because eternity is 0 and newly allocated pages are zeroed by the system.
* do not call get_original_dst() when not in transparent mode.
* implemented a workaround for a bug in certain epoll() implementations on
  linux-2.4 kernels (epoll-lt <= 0.21).
* implemented TCP keepalive with new options : tcpka, clitcpka, srvtcpka.
2005-12-18 01:31:20 +01:00
willy tarreau
c5f73ed21c * released 1.2.6
* clean-up patch from Alexander Lazic fixes build on Debian 3.1 (socklen_t).
2005-12-18 01:26:38 +01:00
willy tarreau
0fe396592d * released 1.2.6-pre5 (1.1.32)
* added the number of active sessions (proxy/process) in the logs
2005-12-18 01:25:24 +01:00
willy tarreau
b1285d5ce0 * released 1.2.6-pre4
* the time-out fix introduced in 1.1.25 caused a corner case where it was
  possible for a client to keep a connection maintained regardless of the
  timeout if the server closed the connection during the HEADER phase,
  while the client ignored the close request while doing nothing in the
  other direction. This has been fixed now by ensuring that read timeouts
  are re-armed when switching to any SHUTW state.
* enhanced error reporting in the logs. Now the proxy will precisely detect
  various error conditions related to the system and/or process limits, and
  generate LOG_EMERG logs indicating that a resource has been exhausted.
* logs will contain two new characters for the error cause : 'R' indicates
  a resource exhausted, and 'I' indicates an internal error, though this
  one should never happen.
* server connection timeouts can now be reported in the logs (sC), as well
  as connections refused because of maxconn limitations (PC).
* new global configuration keyword "ulimit-n" may be used to raise the FD
  limit to usable values.
* a warning is now displayed on startup if the FD limit is lower than the
  configured maximum number of sockets.
* new configuration keyword "monitor-net" makes it possible to be monitored
  by external devices which connect to the proxy without being logged nor
  forwarded to any server. Particularly useful on generic TCPv4 relays.
2005-12-18 01:20:14 +01:00
willy tarreau
5dffb607d6 * released 1.2.5.2
* fixed build on PPC where chars are unsigned by default
2005-12-18 01:15:23 +01:00
willy tarreau
08dedbe898 * released 1.2.5.1
* dirty hack to fix a bug introduced with epoll : if we close an FD and
  immediately reassign it to another session through a connect(), the
  Prev{Read,Write}Events are not updated, which causes trouble detecting
  changes, thus leading to many timeouts at high loads.
2005-12-18 01:13:48 +01:00
willy tarreau
64a3cc3660 * released 1.2.5 (1.1.31)
* changed the runtime argument to disable epoll() to '-de'
* changed the runtime argument to disable poll() to '-dp'
* added global options 'nopoll' and 'noepoll' to do the same at the
  configuration level.
* added a 'linux24e' target to the Makefile for Linux 2.4 systems patched to
  support epoll().
* changed default FD_SETSIZE to 65536 on Solaris (default=1024)
* conditionned signals redirection to #ifdef DEBUG_MEMORY
2005-12-18 01:13:11 +01:00
willy tarreau
1c2ad21e0f * released 1.2.5-pre4
* made epoll() support a compile-time option : ENABLE_EPOLL
* provided a very little libc replacement for a possibly missing epoll()
  implementation which can be enabled by -DUSE_MY_EPOLL
* implemented the poll() poller, which can be enabled with -DENABLE_POLL.
  The equivalent runtime argument becomes '-P'. A few tests show that it
  performs like select() with many fds, but slightly slower (certainly
  because of the higher amount of memory involved).
* separated the 3 polling methods and the tasks scheduler into 4 distinct
  functions which makes the code a lot more modular.
* moved some event tables to private static declarations inside the poller
  functions.
* the poller functions can now initialize themselves, run, and cleanup.
* changed the runtime argument to enable epoll() to '-E'.
* removed buggy epoll_ctl() code in the client_retnclose() function. This
  function was never meant to remove anything.
* fixed a typo which caused glibc to yell about a double free on exit.
* removed error checking after epoll_ctl(DEL) because we can never know if
  the fd is still active or already closed.
* added a few entries in the makefile
2005-12-18 01:11:29 +01:00
willy tarreau
ad90a0c80e * released 1.2.5-pre3
* experimental epoll() support (use temporary '-e' argument)
2005-12-18 01:09:15 +01:00
willy tarreau
c1f4753d60 * released 1.2.5-pre2
* implemented the HTTP 303 code for error redirection. This forces the
  browser to fetch the given URI with a GET request. The new keyword for
  this is 'errorloc303', and a new 'errorloc302' keyword has been created
  to make them easily distinguishable.
* added more controls in the parser for valid use of '\x' sequence.
* few fixes from Alex & Klaus
* fixed a few errors in the documentation
* do not pre-initialize unused file-descriptors before select() anymore.
2005-12-18 01:08:26 +01:00
willy tarreau
598da41537 * released 1.2.5-pre1
* build fixes for appsession
* documentation for appsession
2005-12-18 01:07:29 +01:00