File: ChangeLog

package info (click to toggle)
crossroads 2.65-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 2,664 kB
  • ctags: 355
  • sloc: cpp: 4,212; perl: 1,658; xml: 269; makefile: 186; sh: 46
file content (414 lines) | stat: -rw-r--r-- 17,248 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
2.65 [KK 2010-04-26]
- Bugfix in backend/connect.cc - if the determination whether a back
  end is available goes haywire, the client socket may stay open and
  not be consumed. Thanks Franz J. for reporting!

2.64 [KK 2010-01-29]
- Fixed signal handling for start/stop/restart.
- Web interface now immediately shuts down at a stop request, so that
  next xr instances can grab the web interface port immediately.

2.63 [KK 2010-01-11]
- Previous 2.62 stamped as stable, 2.63 will be the new development
  trunk.
  
2.62 [KK 2010-01-08]
- Fixed possible coredump cause in Balancer::serve(), which might
  explain some troubles during high load (many really concurrent requests).

2.61 [KK 2009-11-17]
- Netbuffer::netwrite() will abort after 5 attempts that yield 0
  written bytes. Probable cause of CPU hogging - thx Franz J. for
  reporting.
- Fixed potential cause of crashes in base class for Dispatcher
  (algorithm handler would not get initialized in the constructors).

2.60 [KK 2009-11-02]
- Some errors demoted to informational messages to choke the amount of
  log information that's generated.

2.59 [KK 2009-10-14]
- Bugfix in logger handling of xrctl, read
  http://xrforum.org/viewtopic.php?t=495 if you fancy. Thanks Hobbit
  for reporting this!
  
2.58 [KK 2009-10-14] 
- Added test/ftp.xml as a sample ftp service configuration.
- Implemented URL-based dispatching: flag --url-match/-j, present in
  xrctl, tested in test/urlmatch.xml, added to web interface
- Usage information now shows long versions of flags first.

2.57 [KK 2009-09-14]
- Output of "xrctl status" colorized when a service is not running,
  thanks Frederik D. for the suggestion and the code!
- Small cleanup of xrctl's usage information.  

2.56 [KK 2009-05-26]
- Bugfix in cleaning of IPStore map
- Implemented flag --remove-reservations (xrctl: tag: removereservations)
- Timeouts adjusted: all read time outs set to 30, client-write set to
  5, backend-write set to 3
- Implemented tag prefixtimestamp in system block to force timestamping.  

2.55 [KK 2009-05-13] 
- Implemented connection error counting of back ends.
- Select-handling revised: atomic readability and writeability checks,
  see xr/fdset/wait.cc and wait_r(), wait_w(), wait_rw().
- Checks for connect() success can be configured to verify only
  writeable status of a socket (see xr/backend/connect.cc, macro
  CONNECTCHECK_ONLY_WRITABLE in xr/etc/Makefile.class).
- Added test/xr-mysql-connect.
- Added commands kill and killstart to xrctl. Action restart renamed
  to stopstart.
- Added simple benchmarking under test/: xr-http-test (based on an
  older script) and xr-smtp-test. Plus a simple analyzer of the
  reported timings, xr-analyze-test.
- Revamped stored-ip dispatcher, added IPStore class to keep track of clients.  

2.54 [KK 2009-04-29]
- Stamped new STABLE version.

2.53 [KK 2009-04-24]
- test/xr-client-ping now can live without LWP::UserAgent. When this
  Perl module is not present, the script will fall back to wget/curl.
- Upon thread kill, sockets are closed using socketclose()
  (sys/socketclose.cc), which also shutdown()s the socket.
- Bugfix in xrctl regarding new format of client/backend timeout.  

2.52 [KK 2009-04-21]
- Bugfix in the roundrobin dispatcher. When only one back end would be
  up, then the roundrobin dispatcher would incorrectly compute the
  right back end. This bug only became visible with host-matching in
  HTTP mode.

2.51 [KK 2009-04-15]
- Separate "write" timeouts introduced in flags -t and -T
- Web interface activity overview includes client ip addresses
- Added test/xr-client-ping (see docs)

2.50 [KK 2009-03-30]
- Bugfix in activation of the onfail script in the checkup thread.
- Compilation flag -Werror only passed to the compiler when on the
  development system Thera.local (see xr/etc/Makefile.class).
- Onstart, onend and onfail scripts (when present) are invoked with a
  third argument, the number of connections at the time
- Set-Cookie header directive (see the HTTP dispatcher) attaches an
  explicit path "/".
- Rewired the tcp dispatcher and http dispatcher to use a common
  buffer inside the tcp dispatcher (instead of 2 separate ones).

2.49 [KK 2009-03-27]
- Implemented onfail hook (to complement onstart/onend, flag -y).

2.48 [KK 2009-03-26]
- Implemented onstart/onend hooks (flags -z, -Z).
- Sticky HTTP mode inspects the URI (parameter XRTarget) when no
  sticky cookie is present.

2.47 [KK 2009-03-04]
- Stored-ip dispatching was enhanced to "anticipate" reconnects from
  previously seen clients. The number of anticipated connections is taken
  into account when dispatching a new client.
- Bugfix in command line parsing of dispatch mode lax-stored-ip (would
  be recognized as strict).
  
2.46 [KK 2009-02-18]
- Dispatcher-related classes moved under directory xr/Dispatchers/.
- UDP balancer implementation started (code stubs in place).
- xrctl bugfixed: a backend-scope maxconnections statement would
  confuse the global server block. Thanks Rajeev for reporting.

2.45 [KK 2009-02-18]
- Usage information formatted.
- Rubberstamped "stable"!

2.44 [KK 2009-02-11] 
- Reviewed code for "throw"s (edited for consistency).
- Bug in Webinterface::execute() (during accept()). Thanks Vladimir T.
  for reporting and testing.

2.43 [KK 2009-02-09] 
- Added Httpbuffer::replaceheader() methods
- Added flag -I (to replace Host: headers), integrated in xrctl /
  webinterface
- Webinterface reports approx. # of open fd's and the limit (in activity)

2.42 [KK 2009-01-28] 
- Bugfix in "xrctl generateconfig". The activity info introduced
  before (which the web interface now emites), confused xrctl.
- Bugfix in sys/ipmatch.cc: mask matching corrected for systems where
  longs are not 4 bytes (64bit systems).
- Bugfix in hashed-ip dispatch mode: When no back ends were available,
  the dispatcher would crash (fixed).
- XSLT stylesheet that transforms web interface slightly changed to
  improve the looks.
- Bugfix in xrctl's "rotate" action. Thanks "ncisrael" for reporting
  it in the forum.

2.41 [KK 2009-01-05]
- Bugfix in xrctl, thanks Eddie for reporting it.    

2.40 [KK 2009-01-03] 
- Netbuffer::read() failures are no longer logged as errors, but as
  verbose messages.
- XML configuration now supports "logger" to redefine logger program.
- Small changes to xrctl: ps command is auto-guessed when not
  specified in the XML configuration.

2.39 [KK 2008-12-04] 
- Added Httpbuffer::reset()
- The HTTP dispatcher will show back end error returns (when the HTTP
  code is in the 400 or 500 range)
- main() will show runtime limits when invoked with -v
- The HTTP dispatcher no longer downgrades to HTTP/1.0 and closed
  connections. Webserver back ends can do this.
- Exceptions during the sending of an error page in HTTP mode are
  discarded, no longer logged.
- Mutex lock added around thread startups (see Thread::start()), when
  requested soq in sys/sys.
- Mutex locks around malloc()/realloc(), when requested so in sys/sys.
- Fixed possible socket leak in TcpDispatcher::execute(). The back end
  socket might not have been closed when the dispatch phase crashed.
- Dispatchers are now derived from a new base class Dispatcher, in
  preparation for UDP handling.
- Timestamp handling centralized in a class Timestamp.
- Messaging (msg(), debugmsg(), reportmsg(), warnmsg()) centralized.
- Started threads are administered in Threadlist. Separate threads are
  killable from the web interface, or all threads to a given back end.

2.38 [KK 2008-11-19]
- Bugfix in xrctl: Weights and max connections in back ends are now
  passed correctly.
- Added version ID to xrctl.  

2.37 [KK 2008-11-17]
- Main accept-loop in Balancer::serve() doesn't throw an exception
  when a network connection can't be accepted. The reason is shown in
  a warnmsg().

2.36 [KK 2008-11-11]
- Typo bugfix in xrctl, fixed.
- xrctl will take the environment's PATH if no path is given in the
  configuration.
  
2.35 [KK 2008-11-11]
- The wakeup and checkup thread are always started, even when no
  wakeups or checkups are defined. Reason is that later these timers
  can be set in the web interface, so we want the threads running.
  When no checks/wakeups are applicable, the threads will recheck each
  30 secs.
- Server type (tcp/http) made configurable through the web interface.  

2.34 [KK 2008-11-09] 
- Fixed sys/str2parts.cc for 64bit systems.

2.33 [KK 2008-11-07] 
- Solaris portability for gcc 3.4 issues in Tcpdispatcher::execute()
- Removed warnings about non-found libraries (on systems that don't
  need them)
- Support for DESTDIR setting in top Makefile (for debian packaging)
- Man pages added as doc/xr.1, doc/xrctl.1 and doc/xrctl.xml.5.

2.32 [KK 2008-11-05]
- Bugfix in "stored-ip" dispatching algorithm.

2.31 [KK 2008-10-30] 
- Changes related to XML-style configuration file support. A
  new-style xrctl is in provided and during "make install" put in
  BINDIR (normally: /usr/sbin). See test/sampleconf.xml for an example
  of a configuration file.
- Added webinterface URI's to control DOS-protection related settings.
- Added DOS-protection variables to XML-output of the web interface.
- Server-wide maxconnection tag output moved into dosprotection block.
- Added display of such variables to the style sheet that renders the
  XML in a browser.
- Added option close-sockets-fast to XML output and to website URI
  controls.
- Added allow-from and deny-from lists to XML output and to website
  URI controls.
- Added the primary distribution site to the top-level Makefile as
  macro. This now shows up in "xr -V". The version ID and site also
  show up at the bottom of the web interface screen.
- Target "uninstall" added to the top-level Makefile.
- Bugfix in Netbuffer::netwrite(). When the remote connection would be
  hung up, XR would be blissfully unaware. SIGPIPE signals are now ignored.
- Implemented flag -g / --backend-check. Alternatives:
  connect:ip:port, get:ip:port[/uri], external:program.
- Added back end check type to the web interface reports, created
  control at web interface for /backend/NR/backendcheck/VALUE to
  change it. Added to XML configuration parsing.
- Docs updated, ofc.
- Status of balancer shown in web interface. Minor bugfix in xrctl.
- Added flags -E/-e (hard/soft-maxconn-excess, to call an external
  program). Also added to web interface with controls and updated docs.
- Added mutex locks around cerr output catch-blocks of exceptions.
- Added more checks for memory allocation faults.
- Implemented DNS caching of back end host names (flag -F,
  --dns-cache-timeout). Also implemented in web interface output and
  controls.
- Implemented adding and/or deleting back ends from the user
  interface, including scripting URI's.
- Implemented generation of a new configuration using "xrctl
  generateconfig".  

2.30 [KK 2008-10-25] 
- Reversioned to 2.30 in prepration for STABLE release.
- Bugfix in Netbuffer::netwrite() (debug output of written data)
- SIGPIPE gets ignored, see sys/main.cc
- Fixed re-entrancy issues for gethostbyname() that applies to some
  unices. See Backend::connect() (xr/backend/connect.cc).

2.22 [KK 2008-10-16]
- Implemented up/down state in back ends. Fixed up the docs.
- Rewrote msg() and debugmsg() handling: these are now macros that
  call _msg() and _debugmsg() depending on verbose/debug flags. The
  argument is a Mstr object, used to concatenate strings with ints,
  doubles and so on.

2.21 [KK 2008-10-14]
- Fixed round-robin dispatching with only 1 configured back end. The
  bug was that on the next-time around, no "other" back end would be
  found.
- Centralized reading/writing from fd's and buffer handling into class
  Netbuffer. This removes superfluous buffer copying in the HTTP
  dispatcher.
- Rewrote HTTP dispatcher & (hopefully) optimized it.  
- Added Profiler class and xr/etc/xrprof tool.  
- Many other small changes.
- Added docs on maxconn flags and weighted-load dispatching.
- THIS VERSION IS A REWRITE OF THE HTTP DISPATCHER. IT IS ALPHA-QUALITY.

2.20 [KK 2008-10-13]
- Fixed -C flag recognition, --close-sockets-fast worked, but I'd
  omitted -C from the flag set.
- Ongoing optimization work.  

2.19 [KK 2008-10-13] 
- Changed the TCP Dispatcher to allow for setting a maximum #
  connection attempts per client, with options to either defer the
  connection or drop it. 
- Added a dispatch mdoe "weighted-load" for randomly picking a back
  end based on the inverse of their respective load averages.  (gem)
- Verbose/debug options in the web interface are now rendered as
  select boxes.
- Web interface errors are rendered on the client as an HTML error
  page.
- Docs updated regarding web interface URI's.
- Turned on compliler optimizing (had forgotten that before!)
- Docs updated regarding web interface URI's.

2.18 [KK 2008-10-08]
- Improved command line parsing, so that when --checkup-interval is
  used, suppression of "--wakeup-interval 0" is no longer needed.

2.17 [KK 2008-10-07]
- Type sizes reported in "xr -V"
- Fixed nasty bug in sys/fdwrite.cc

2.16 [KK 2008-10-05]
- Enhanced web interface to show debug, verbose and traffic log states
- Altering parameters for the web interface get sent in encoded form
- Option --log-traffic was renamed to --log-traffic-dir for
  consistency
- Enhanced web interface to modify client and back end timeouts
- Enhanced web interface to modify wakeup / checkup intervals.

2.15
- Sanity checks in Config::parsecmdline(): -w/-c together throws error.
- Network sends are now using write(), unless under Solaris, which
  uses send().
- --log-traffic logs to file with as the base name: the request
  number.
- System (uname) is recorded during compilation and displayed in "xr -V"

2.14 [KK 2008-09-30]
- Removed spurious debug message.
- Fixed usage info for buffer size flag (should be -B, not -b).
- Implemented flag -l (--log-traffic).

2.13 [KK 2008-09-17]
- Porting issues resolved for older MacOSX (10.3, 10.4)
- Bugfix in XML emitting of web interface. Most browsers didn't even notice..

2.12 [KK 2008-09-10]
- Small code changes for g++ v3.x backward-compatibility support.
  (Thanks Simon M.)
- Web interface: layout enhanced, more modification options
- Code cleanup, duplications removed
- Network sending ignores some errno's and retries (see
  sys/fdwrite.cc)
- Web interface retries binding to its socket (incase a previous
  instance hasn't terminated yet)
- Web interface returns an HTTP error page (status 500 only, no
  content) during errors

2.11 [KK 2008-09-04]
- Bugfix in "first-active" dispatch mode. Previously XR would gobble
  up fd's when no back end was available.
- Web interface (first version) implemented.

2.10 [KK 2008-09-02]
- Bugfix in host match mode. When a back end doesn't match anything,
  then the client isn't served. (Previously the dispatcher would fall
  back to least-connections over all known back ends.)
- In HTTP mode, a 502 error gets returned to the client when
  dispatching fails or when back end processing goes haywire. There is
  just one error page, 502 error header, 0 bytes content length.
- Implemented back end weights for least-connections dispatching.
- Bugfix in Backend::connect(): Socket gets closed when connecting fails.

2.09 [KK 2008-09-01]
--host-match code implemented

2.08 [KK 2008-08-31]
I'd forgotten to include the 'P' into the set of allowed flags
(--prefix-timestamp would work, -P not). Fixed.

2.07 [KK 2008-08-28]
Stupid bug in 2.06, sorry that 2.06 got out.. Fixed.

2.06 [KK 2008-08-27]
Upped c-conf to 1.14.
xrctl updated: 'ps' command format also suitable for SunOS.
New class Mutex implemented. Mutex-locks are now more fine-grained
(per one global or static).
Solaris9 port w/gcc 3.4.6 done.

2.05 [KK 2008-08-15]
Thrown errors now based on std::exeception.
"xr -V" shows compilation settings.
Code reorganized into directory hierarchy.

2.04 [KK 2008-08-11]
Mutex in Thread class is now a static.
Implemented dispatching algorithm "stored clent ip", in the variants
strict and lax.
Flag -n / --tryout implemented. Implemented in xrctl.

2.03 [KK 2008-08-10]
Updated docs regarding the mailing list.
Fixed verbose display upon accepting a client ("current back end
states").
Implemented dispatching algorithm "hashed client ip", in the variants
strict and lax.

2.02 [KK 2008-08-09] Changes to the Makefile & some sources to avoid
warnings under RHL (thanks, Simon M.).
Bytes processed by a back end is now administered in
TcpDispatcher::writechunk() and not readchunk(). Reason: In HTTP mode,
the target back end is not yet known upon the first read -- the first read
from the client comes before dispatching. Thanks Simon M. for the bug
report.
All select()'s now check for errno==EINTR, incase XR gets a signal -1
(for status report).

2.01 [KK 2008-08-08] Implemented flag -C (--close-sockets-fast): this
option *can* be used under heavy stress when too many network sockets
remain in TIME_WAIT state (try with 'netstat -n | grep TIME_WAIT').
Syntax of xrctl is checked upon "make commit".
Added documentation about Solaris tcp_time_wait_interval and Linux
ip_conntrack_max.
Added documentation about binding XR to the same port, using different
bind-to IP's.

2.00 [KK 2008-08-07] Release of 2.00.