### Networking

- Class TWebFile now supports proxies. Set the proxy URL either via static method:

         TWebFile::SetProxy(const char *url);

  or via the shell variable http_proxy, like is used for e.g. wget.
- Class TWebFile now supports the basic authentication (AuthType Basic) scheme. The user name and password can be specified in the URL like this:

         http://username:mypasswd@pcsalo.cern.ch/files/aap.root

### Bonjour Support

New Zero-Configuration networking classes using Bonjour:

- TBonjourRecord
- TBonjourRegistrar
- TBonjourBrowser
- TBonjourResolver

Zeroconf is meant to solve the problem of finding services and connecting to them. Instead of having to know a machine's IP address and port number for the service, a machine offering a service simply announces that it offers the service. Clients who want to use a service ask for all the machines that are offering it and then the user decides which one to connect to.

Traditionally, you would have to make sure that each machine is configured correctly and on the network. Zeroconf takes care of all of this for you for a local area network. Lots of new hardware, such as printers with networking support or wireless routers, come with their own Zeroconf server to allow easy network configuration. On Mac OS X, many applications take advantage of Bonjour to advertise services, such as the ssh server, iTunes shares, or iChat availability. Zeroconf is a powerful way of simplifying your applications, and there are implementations available for most operating systems.

If you have Mac OS X, you already have Bonjour installed; otherwise, you can download the source code from the Apple website (http://developer.apple.com/Bonjour) and build and install Bonjour in relatively short order. Most modern Linux distributions come with Avahi, an LGPL implementation of Zeroconf with a compatibibility API for Bonjour. The ROOT Bonjour classes were tested to work with both Apple's Bonjour implementation and Avahi's Bonjour compatibility layer.

Service discovery consists of three steps: registering a service, browsing for available services, and resolving the service to an actual address. A server will register its services with the Bonjour daemon. Clients will browse for services to get a list to provide to the user. Finally, when it is time to connect to a service, the client will resolve the selected service to an actual IP address and port and then connect to the service provide using TCP/IP.

### XROOTD

- New version 20090610-0430

- Improvements

- Add the possibility of using the xrd command line from batch scripts
- Add support for Adler32 checksum calculation of a local unix file (including stdin) and file on a remote xrootd data server.
- Add support for the so-called Xtreme copy, allowing xrdcp to read multiple chunks from several servers, in parallel.
- Add possibility to use a different version of a given C++ compiler or linker (--with-cxx=..., etc)
- Increase flexibility in configuring openssl and openafs support
- In GSI authentication, automatize the loading of CRL; the information about the URI is looked for either in the dedicated extension on the CA certificate or from the file "<CA hash>.crl_url" and the file automatically downloaded and transformed in PEM format

- Fixes

- Server side

- Fix wrong reporting of the refresh option for Locate

- Fix incorrect propagation of selected nodes

- Prevent potential long duration loop (15 mins) after client disconnections

- Avoid potential deadlocks when trying to remove a node from a cluster

- Correct matching of incoming connection with previously dropped connection

- Correct export of cluster identification

- Correctly propagate information about files that could not be staged

- Prevent endsess deadlock when parallel streams stall due to large WAN RTT
- Fix infinite wait for primary login that will never happen if you are a manager without a meta-manager
- Prevent annoying (but not deadly) infinite loop should a server go offline that is subject to a locate request display.

- Client side

- Better handling of errno, especially for parallel streams

- Allow the client to cycle through all the remaining valid security protocols in the list of protocols returned by the server

- Make the readahead strategy more conservative

- Fix a rare race condition happening when destroying instances with outstanding open requests

- Enforce cache coherency in the case of reads+writes in the same file

- Correctly guess the filesize of a file opened for writing in sync mode

- Make server host name check more flexible for GSI authentication
- Fix some relevant issues with cache handling on the client, including a rare but fatal bug in determining the cache holes list and the end of a cache lookup
- More complete detection of async read errors

- General

- Fix problem in handling the return code of X509_REQ_verify in XrdCryptosslX509Req.cc
- Avoid SEGV when doing an lsd admin command with authenticated xrootd clients
- Close race conditions that allowed a supervisor/manager to subscribe without declaring a data port. Initialize nostage state in XrdCmsState to prevent erroneous state declaration during initialization.
- Fix a problem with the subject name of proxies of level > 1; this was creating a failure when a Globus application was trying to use the proxy certificate
- Fix a problem with cache refreshing in XrdSutCache affecting automatic reloading of password files
- For now, turn off IPV6 processing as it seems to create several problems.
- Fix a few issues with the available releases of gcc 4.4
- Fix a few issues with the 'icc' compiler
- Fix several issues in GSI and PWD authentication modules

- New features

- New File Residency Manager (frm), replacement for the MPS scripts
- Scripts are now provided to

- automatically donwload a CRL certificate (utils/getCRLcert)

- install the recommended verion of OpenSSL and build it with the options optimal for usage in XROOTD/SCALLA (utils/installOpenSSL.sh)

- install the recommended verion of OpenAFS and build it with the options optimal for usage in XROOTD/SCALLA (utils/installOpenAFS.sh)

- Miscellanea

- TokenAuthz and CS2 modules are no longer part of the main built; they have to be built externally