dbbalancer-users Mailing List for DBBalancer (Page 3)
Status: Alpha
Brought to you by:
xperience
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(25) |
Dec
(6) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
|
Feb
(7) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(4) |
Aug
|
Sep
|
Oct
(1) |
Nov
(6) |
Dec
(2) |
2003 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(4) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(6) |
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
From: Daniel V. S. <dv...@ar...> - 2001-11-04 12:18:40
|
On Sun 04 Nov 2001 12:06, you wrote: > At the moment DBBalancer appears to take a fairly > simplistic approach to attempting to get a back-end > connection when a client connects to it. > Yes, that's true. I first focused on make it somewhat "work". Now it's time to optimize both the code and strategies. > > > In the event that all back-end connections are in use, > it would be reasonable to put the request into a queue, > holding it in abeyance for a [configurable] period of > time before finally giving up and returning the > connection failure to the client. Well, I think that's what happens now, not at the connection level but at the thread pool level. Given that the thread number is equal to the connections number (which is the logical approach), if all the connections are busy is because all the threads are also busy. Then it is DBThreadPool who enqueues (via its activation_queue_ attribute) all new requests. Of course this doesn't work if there's a bigger number of threads than connections, but this situation should never happen unless configured so, because even the growing and shrinking of pools go synchronized (thread and conns at the same time and equivalent number). Please tell me if you found a different behaviour, cos it surely could be a bug. > > With web applications this is especially useful because > most connections are very short-lived (usually well > under 1 second). This would mean that a maximum queue > wait time of (say) 700 - 1500 mS would allow a very > busy system to gain considerable benefit in smoothing > peak load. > > What DBBalancer should also make better is the strategy to adaptively modify the number of threads and conns. Now it checks the average length of the latest 3 checks of the queue, but, while this avoids overreacting to fast bursts of requests, it's is quite slow on adapting. > > Hand in hand with this, it would be good to get > statistics of connections handled / connections queued > / connections dropped dumped to syslog every > [configurable] seconds. These statistics would enable > the system admin to tune the numbers of client and > server connections. Some of these are already available. In fact, in DEBUG mode, DBThreadPool dumps the length and average (3 last checks) length of its queue. Anyway they should be augmented with more data, that's true. > > ---------------------------------------------------------------------- > > You can respond by visiting: > http://sourceforge.net/tracker/?func=detail&atid=378947&aid=477967&group_id >=23561 -- ---------------------------------- Regards from Spain. Daniel Varela ---------------------------------- If you think education is expensive, try ignorance. -Derek Bok (Former Harvard President) |
From: Andrew M. <an...@ca...> - 2001-11-04 11:21:55
|
Hi, The latest Debian packages I have built for dbbalancer will work on potato as well as sid or woody since I built them as a static binary. They also install startup and shutdown scripts as described yesterday. I now have dbbalancer running on one of our production websites, so we'll see over the next few days if I have any problems. This site gets around 70,000 hits /day, so it starts to be a reasonable test of things. Regards, Andrew. -- -------------------------------------------------------------------- Andrew @ Catalyst .Net.NZ Ltd, PO Box 11-053, Manners St, Wellington WEB: http://catalyst.net.nz/ PHYS: Level 2, 150-154 Willis St DDI: +64(4)916-7201 MOB: +64(21)635-694 OFFICE: +64(4)499-2267 |
From: Andrew M. <an...@ca...> - 2001-11-03 23:14:01
|
OK, I've started to look at using DBBalancer in anger now, on a few selected internet sites that we host. I have thought about how I should got about having a startup script to run dbbalancer when the system boots. The idea I have so far is: 1) Have a directory of configuration scripts for the various databases to be 'balanced'. I would make this directory in /etc/dbbalancer/conf.d which would conform to the way Debian does these sorts of things. 2) My init script would then go through each configuration file in the directory, starting a DBBalancer daemon for each one. 3) The process ID for each process would be written in /var/run/dbbalancer/<confname> 4) When run with a 'stop' parameter, the init script would kill each process. Anyone have any comments on that approach? Also, a few of things that would be good to see in the current DBBalancer to support this sort of operation: 1) Less logging. Currently DBBalancer logs every connection - this seems a bit excessive for a website receiving a hundred thousand hits each day. Although it might be fine to have this level of logging as a default, it would be nice to be able to reduce it further. 2) 'Detach and run as daemon' option. DBBalancer really is a service, and it should detach itself from the console and run in background. This should probably be the default operation, although while we consider things to be 'alpha' perhaps it should only be an option. 3) Logging through syslog. In normal operation I am likely to have a number of DBBalancer daemons operating at the same time, in background, it will be desirable to collect their error messages in one place. I would tend towards specifying a log facility in the configuration file, and using syslog. With these enhancements, along with fixes to the little niggles that have come up in the last couple of days with 0.4, I believe we are probably ready to call it a 'beta', and I will put packages into the 'unstable' branch of Debian. Comments? Regards, Andrew. -- -------------------------------------------------------------------- Andrew @ Catalyst .Net.NZ Ltd, PO Box 11-053, Manners St, Wellington WEB: http://catalyst.net.nz/ PHYS: Level 2, 150-154 Willis St DDI: +64(4)916-7201 MOB: +64(21)635-694 OFFICE: +64(4)499-2267 |
From: Andrew M. <an...@ca...> - 2001-11-03 22:11:01
|
On Sun, 2001-11-04 at 08:37, Daniel Varela Santoalla wrote: > That's curious. > > The missing symbols are from librt. My dynamic binary links to it, as libACE > does. But my static builds doesn't seem to need it, even being those symbols > undefined in my libACE.a. I suppose that the ACE functionality that needs > librt isn't being used, but your compiler complains anyway. > > I suppose that a good solution is to add -lrt to the static build line. It > doesn't hurt my build, anyway. I've added it to next version. That did the trick - thanks. I still get one warning: c++ -g -O2 -D_REENTRANT -pthread -static -o dbbalancerd.static DBBalancer.o DBBalancerDaemon.o config/DBBalancerTxtConfig.o postgres/DBPostgresPooledConnection.o postgres/DBPostgresWriterConnection.o postgres/DBPostgresBackend.o postgres/DBPostgresFrontend.o conn_pool/DBPool.o conn_pool/DBPoolContainer.o conn_pool/DBPooledConnection.o thread_pool/DBThreadPool.o thread_pool/DBThreadCtlMO.o method_objects/DBDoConnectionMO.o method_objects/DBManagementMO.o -lACE -lrt -ldl /usr/lib/libACE.a(OS.o): In function `ACE_OS::thr_create(void *(*)(void *), void *, long, unsigned long *, unsigned long *, long, void *, unsigned int, ACE_Thread_Adapter *)': OS.o(.text+0xe91): the use of `pthread_attr_setstackaddr' is deprecated, use `pthread_attr_setstack' At least now I have a static binary I can put onto some of our servers and try this out in the real world... Cheers, Andrew. -- -------------------------------------------------------------------- Andrew @ Catalyst .Net.NZ Ltd, PO Box 11-053, Manners St, Wellington WEB: http://catalyst.net.nz/ PHYS: Level 2, 150-154 Willis St DDI: +64(4)916-7201 MOB: +64(21)635-694 OFFICE: +64(4)499-2267 |
From: Daniel V. S. <dv...@ar...> - 2001-11-03 19:40:27
|
That's curious. The missing symbols are from librt. My dynamic binary links to it, as libACE does. But my static builds doesn't seem to need it, even being those symbols undefined in my libACE.a. I suppose that the ACE functionality that needs librt isn't being used, but your compiler complains anyway. I suppose that a good solution is to add -lrt to the static build line. It doesn't hurt my build, anyway. I've added it to next version. Regards On Sat 03 Nov 2001 10:27, you wrote: > Flush with my success of getting a new 0.4.0-2 Debian package out for > dbbalancer I thought I would have a go at building a static binary so > that I can put it on one of our servers and see how it flies in the real > world... > > Alas, no luck: > > c++ -g -O2 -D_REENTRANT -pthread -static -o dbbalancerd.static > DBBalancer.o DBBalancerDaemon.o config/DBBalancerTxtConfig.o > postgres/DBPostgresPooledConnection.o > postgres/DBPostgresWriterConnection.o postgres/DBPostgresBackend.o > postgres/DBPostgresFrontend.o conn_pool/DBPool.o > conn_pool/DBPoolContainer.o conn_pool/DBPooledConnection.o > thread_pool/DBThreadPool.o thread_pool/DBThreadCtlMO.o > method_objects/DBDoConnectionMO.o method_objects/DBManagementMO.o -lACE > -ldl > /usr/lib/libACE.a(OS.o): In function `ACE_OS::thr_create(void *(*)(void > *), void *, long, unsigned long *, unsigned long *, long, void *, > unsigned int, ACE_Thread_Adapter *)': > OS.o(.text+0xe91): the use of `pthread_attr_setstackaddr' is deprecated, > use `pthread_attr_setstack' > /usr/lib/libACE.a(POSIX_Proactor.o): In function > `ACE_POSIX_AIOCB_Proactor::handle_events(unsigned long)': > POSIX_Proactor.o(.text+0x17b5): undefined reference to `aio_suspend' > /usr/lib/libACE.a(POSIX_Proactor.o): In function > `ACE_POSIX_AIOCB_Proactor::find_completed_aio(int &, int &)': > POSIX_Proactor.o(.text+0x197f): undefined reference to `aio_error' > POSIX_Proactor.o(.text+0x1ad3): undefined reference to `aio_return' > /usr/lib/libACE.a(POSIX_Proactor.o): In function > `ACE_POSIX_SIG_Proactor::handle_events(unsigned long)': > POSIX_Proactor.o(.text+0x3317): undefined reference to `aio_error' > POSIX_Proactor.o(.text+0x3455): undefined reference to `aio_return' > /usr/lib/libACE.a(POSIX_Proactor.o): In function > `ACE_POSIX_AIOCB_Proactor::start_aio(ACE_POSIX_Asynch_Result *, int)': > POSIX_Proactor.o(.text+0x3ce2): undefined reference to `aio_read' > POSIX_Proactor.o(.text+0x3cf4): undefined reference to `aio_write' > /usr/lib/libACE.a(POSIX_Asynch_IO.o): In function > `ACE_POSIX_Asynch_Operation::cancel(void)': > POSIX_Asynch_IO.o(.text+0x161): undefined reference to `aio_cancel' > /usr/lib/libACE.a(POSIX_Asynch_IO.o): In function > `ACE_POSIX_SIG_Asynch_Read_File::read(ACE_Message_Block &, unsigned > long, unsigned long, unsigned long, void const *, int, int)': > POSIX_Asynch_IO.o(.text+0x161a): undefined reference to `aio_read' > /usr/lib/libACE.a(POSIX_Asynch_IO.o): In function > `ACE_POSIX_SIG_Asynch_Write_File::write(ACE_Message_Block &, unsigned > long, unsigned long, unsigned long, void const *, int, int)': > POSIX_Asynch_IO.o(.text+0x1e4a): undefined reference to `aio_write' > /usr/lib/libACE.a(POSIX_Asynch_IO.o): In function > `ACE_POSIX_SIG_Asynch_Read_Stream::shared_read(ACE_POSIX_Asynch_Read_Stream >_Result *)': POSIX_Asynch_IO.o(.text+0x6909): undefined reference to > `aio_read' /usr/lib/libACE.a(POSIX_Asynch_IO.o): In function > `ACE_POSIX_SIG_Asynch_Write_Stream::shared_write(ACE_POSIX_Asynch_Write_Str >eam_Result *)': POSIX_Asynch_IO.o(.text+0x6cc9): undefined reference to > `aio_write' collect2: ld returned 1 exit status > make: *** [static] Error 1 > > This strikes me as odd - that I can build a dynamically linked binary, > but that I can't build a static! > > Regards, > Andrew. -- ---------------------------------- Regards from Spain. Daniel Varela ---------------------------------- If you think education is expensive, try ignorance. -Derek Bok (Former Harvard President) |
From: Daniel V. S. <dv...@ar...> - 2001-11-03 11:04:06
|
On Sat 03 Nov 2001 11:23, you wrote: > Hi, > > I have downloaded the new version from sourceforge.net and > installed on my system. As it is I could not run the configure command. > It gave the same kind of errors as it has given with the earlier version. But did you finally installed the library (with make install) or were you trying to use it from the compilation dir. You can install it in and independent dir (I have it in /usr/local/ace) so you can delete it very easily if you want to. If you had installed the library ok, please send me the config.log and a "nm libACE.so", to see if the symbol I look for in the configure exists. > > After making the changes to the configure.in file i.e commenting the > AC_CHECK_LIB line and replacing the ace_lib , ace_includes with > the installed path of ACE library, I could run the configure command > without any errors. > > But the make command has been giving two errors. I am sending the > output of the make command as attachment to this mail for your perusal. Yes, other people also told me. I'll check it. > > Inspite of the errors I have started the dbbalancerd successfully. > When trying to connect to the database using psql utility an > additional process got created that means the utility is not > using the existing idle connections. > > After declaring the PGPORT and PGHOST variables , when > the psql utility invoked , the following error raised > > psql: PQconnectionPoll() -- connect() failed: Connection refused > Is the postmaster is running (with -i) at 'localhost' > and accepting connections on TCP/IP port '6666' ? Version 0.4.0 supports UNIX sockets. If the host defined in the "daemon.host" configuration parameter is "local" or "localhost", the daemon listens in UNIX sockets. To make psql connect to UNIX sockets you have to undefine the PGHOST variable, but keeping PGPORT to 6666. $ unset PGHOST $ export PGPORT=6666. Lets see now. Regards. PS: I recommend you to subscribe and write to the mailing list, so other people can know and learn about problems and solutions. -- ---------------------------------- Regards from Spain. Daniel Varela ---------------------------------- If you think education is expensive, try ignorance. -Derek Bok (Former Harvard President) |
From: Andrew M. <an...@ca...> - 2001-11-03 09:28:01
|
Flush with my success of getting a new 0.4.0-2 Debian package out for dbbalancer I thought I would have a go at building a static binary so that I can put it on one of our servers and see how it flies in the real world... Alas, no luck: c++ -g -O2 -D_REENTRANT -pthread -static -o dbbalancerd.static DBBalancer.o DBBalancerDaemon.o config/DBBalancerTxtConfig.o postgres/DBPostgresPooledConnection.o postgres/DBPostgresWriterConnection.o postgres/DBPostgresBackend.o postgres/DBPostgresFrontend.o conn_pool/DBPool.o conn_pool/DBPoolContainer.o conn_pool/DBPooledConnection.o thread_pool/DBThreadPool.o thread_pool/DBThreadCtlMO.o method_objects/DBDoConnectionMO.o method_objects/DBManagementMO.o -lACE -ldl /usr/lib/libACE.a(OS.o): In function `ACE_OS::thr_create(void *(*)(void *), void *, long, unsigned long *, unsigned long *, long, void *, unsigned int, ACE_Thread_Adapter *)': OS.o(.text+0xe91): the use of `pthread_attr_setstackaddr' is deprecated, use `pthread_attr_setstack' /usr/lib/libACE.a(POSIX_Proactor.o): In function `ACE_POSIX_AIOCB_Proactor::handle_events(unsigned long)': POSIX_Proactor.o(.text+0x17b5): undefined reference to `aio_suspend' /usr/lib/libACE.a(POSIX_Proactor.o): In function `ACE_POSIX_AIOCB_Proactor::find_completed_aio(int &, int &)': POSIX_Proactor.o(.text+0x197f): undefined reference to `aio_error' POSIX_Proactor.o(.text+0x1ad3): undefined reference to `aio_return' /usr/lib/libACE.a(POSIX_Proactor.o): In function `ACE_POSIX_SIG_Proactor::handle_events(unsigned long)': POSIX_Proactor.o(.text+0x3317): undefined reference to `aio_error' POSIX_Proactor.o(.text+0x3455): undefined reference to `aio_return' /usr/lib/libACE.a(POSIX_Proactor.o): In function `ACE_POSIX_AIOCB_Proactor::start_aio(ACE_POSIX_Asynch_Result *, int)': POSIX_Proactor.o(.text+0x3ce2): undefined reference to `aio_read' POSIX_Proactor.o(.text+0x3cf4): undefined reference to `aio_write' /usr/lib/libACE.a(POSIX_Asynch_IO.o): In function `ACE_POSIX_Asynch_Operation::cancel(void)': POSIX_Asynch_IO.o(.text+0x161): undefined reference to `aio_cancel' /usr/lib/libACE.a(POSIX_Asynch_IO.o): In function `ACE_POSIX_SIG_Asynch_Read_File::read(ACE_Message_Block &, unsigned long, unsigned long, unsigned long, void const *, int, int)': POSIX_Asynch_IO.o(.text+0x161a): undefined reference to `aio_read' /usr/lib/libACE.a(POSIX_Asynch_IO.o): In function `ACE_POSIX_SIG_Asynch_Write_File::write(ACE_Message_Block &, unsigned long, unsigned long, unsigned long, void const *, int, int)': POSIX_Asynch_IO.o(.text+0x1e4a): undefined reference to `aio_write' /usr/lib/libACE.a(POSIX_Asynch_IO.o): In function `ACE_POSIX_SIG_Asynch_Read_Stream::shared_read(ACE_POSIX_Asynch_Read_Stream_Result *)': POSIX_Asynch_IO.o(.text+0x6909): undefined reference to `aio_read' /usr/lib/libACE.a(POSIX_Asynch_IO.o): In function `ACE_POSIX_SIG_Asynch_Write_Stream::shared_write(ACE_POSIX_Asynch_Write_Stream_Result *)': POSIX_Asynch_IO.o(.text+0x6cc9): undefined reference to `aio_write' collect2: ld returned 1 exit status make: *** [static] Error 1 This strikes me as odd - that I can build a dynamically linked binary, but that I can't build a static! Regards, Andrew. -- -------------------------------------------------------------------- Andrew @ Catalyst .Net.NZ Ltd, PO Box 11-053, Manners St, Wellington WEB: http://catalyst.net.nz/ PHYS: Level 2, 150-154 Willis St DDI: +64(4)916-7201 MOB: +64(21)635-694 OFFICE: +64(4)499-2267 |
From: Andrew M. <an...@ca...> - 2001-11-03 07:34:05
|
OK, I now have it working. A few more things I had to change to get it trucking along nicely: 1) I had to set 'umask 0' - otherwise the socket was being owned by the user running dbbalancerd, and was not writeable by the webserver user. 2) I had to make the change suggested by Tom Lane to send back an 'N' if the client requested an SSL connection, and loop back to wait for a non-SSL connection request. You can probably fix (1) quite trivially in the code. I note that Postgresql creates the socket as mode 777. You probably don't want to see how crudely I worked around (2) - I'm sure that you can do a better job if I just hint that it did: send(fe_socket,"N",1,SEND_FLAGS); near line 63 of DBPostgresFrontend.cc Regards, Andrew. -- -------------------------------------------------------------------- Andrew @ Catalyst .Net.NZ Ltd, PO Box 11-053, Manners St, Wellington WEB: http://catalyst.net.nz/ PHYS: Level 2, 150-154 Willis St DDI: +64(4)916-7201 MOB: +64(21)635-694 OFFICE: +64(4)499-2267 |
From: Andrew M. <an...@ca...> - 2001-11-03 07:10:09
|
On Sat, 2001-11-03 at 08:42, Daniel Varela Santoalla wrote: > Hello everybody. > > There's a new DBBalancer version available. It adds some functions and solves > some bugs. I'd like you all to try it. > > Change log is like this: > > 0.4.0: > - Solved password authentication bug when client doesn't supports it. > - "configure" improvements. Now tries libACE with ACE_gethrtime. > - Added parameter: daemon.dbname. Holds the dbname that the clients will have > to supply to connect. > - XML config file support definitely dropped. > - Changes in source directory structure. The "configure" script now is at top > dir. > - Documentation corrections and updates. > - UNIX (local) sockets support. You can only use UNIX "OR" TCP so far. Not > both simultaneously > - Now the tar packages and the daemon binary are lowercase to improve > standards compliancy with debian. > - Added SO_REUSEADDR to server socket to avoid errors when quickly restarting > daemon. I've uploaded a preliminary Debian package. The first problem I have encountered is that the socket location on Debian is in /var/run/postgresql, rather than in /tmp. Not exactly sure how you want to go about fixing that, but Debian does define the socket location in /usr/include/postgresql/config.h : #define DEFAULT_PGSOCKET_DIR "/var/run/postgresql" Do other installations define that value? If so, I believe DBPostgresBackend.cc and DBBalancerDaemon.cc should use it in preference to the hard-coded value. I have hacked in a: #include <postgresql/config.h> #ifndef DEFAULT_PGSOCKET_DIR #define DEFAULT_PGSOCKET_DIR "/var/run/postgresql" #endif and changed the "/tmp/.s.PGSQL.%d" into DEFAULT_PGSOCKET_DIR "/.s.PGSQL.%d" In the appropriate places. With these changes I now have dbbalancer working for me with local unix socket connections to the local database, but local connections to the pool still aren't working for me: (2051, 18:58:33.439053) (0::1) Handling connection. (2051) Wrong startup packet read (bad size or protocol version (must be 2.0). Hexdump follows. HEXDUMP 296 bytes 00 00 01 28 04 d2 16 2f 00 00 00 00 00 00 00 00 ...(.../........ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 ........ (2051, 18:58:33.440190) Login process failed. (2051, 18:58:33.440256) DBPostgresPooledConnection: Login process failed. Which, considering Tom Lane's message to postgresql-hackers is presumably because the standard Debian php-pgsql is compiled with ssl support, and is attempting an SSL connection first. I'll keep hacking on it - had you had plans to fix that problem? Cheers, Andrew. -- -------------------------------------------------------------------- Andrew @ Catalyst .Net.NZ Ltd, PO Box 11-053, Manners St, Wellington WEB: http://catalyst.net.nz/ PHYS: Level 2, 150-154 Willis St DDI: +64(4)916-7201 MOB: +64(21)635-694 OFFICE: +64(4)499-2267 |
From: Daniel V. S. <dv...@ar...> - 2001-11-02 19:45:12
|
Hello everybody. There's a new DBBalancer version available. It adds some functions and solves some bugs. I'd like you all to try it. Change log is like this: 0.4.0: - Solved password authentication bug when client doesn't supports it. - "configure" improvements. Now tries libACE with ACE_gethrtime. - Added parameter: daemon.dbname. Holds the dbname that the clients will have to supply to connect. - XML config file support definitely dropped. - Changes in source directory structure. The "configure" script now is at top dir. - Documentation corrections and updates. - UNIX (local) sockets support. You can only use UNIX "OR" TCP so far. Not both simultaneously - Now the tar packages and the daemon binary are lowercase to improve standards compliancy with debian. - Added SO_REUSEADDR to server socket to avoid errors when quickly restarting daemon. Best regards. -- ---------------------------------- Regards from Spain. Daniel Varela ---------------------------------- If you think education is expensive, try ignorance. -Derek Bok (Former Harvard President) |