GFAL2 RELEASE-NOTES
===================

## Thu Oct 27 2016 Alejandro Alvarez <aalvarez at cern.ch> - 2.12.3
### Bug
- [DMC-891] - GridFTP Plugin: IPv6 detection misfire in some cases

## Tue Sep 06 2016 Alejandro Alvarez <aalvarez at cern.ch> - 2.12.2
### Bug
- [DMC-879] - XRootD Plugin: Segfault on 3rd party copy

## Tue Aug 16 2016 Alejandro Alvarez <aalvarez at cern.ch> - 2.12.1
### Bug
- [DMC-872] - SRM Plugin: DMC-860 broke directory listing when endpoint can not be resolved from BDII
### New Feature
- [DMC-870] - Add support for s3 alternate syntax URLs to gfal

## Mon Aug 01 2016 Alejandro Alvarez <aalvarez at cern.ch> - 2.12.0
### Bug
- [DMC-833] - gfal2_add_client_info should overwrite existing key
- [DMC-841] - Make scheme handling consistent across gfal2
- [DMC-846] - File Plugin: Only strict URIs must be accepted
- [DMC-848] - GridFTP Plugin: PASV plugin parses incorrectly some IPv6
- [DMC-853] - [Known Issue] Connection issues when a PUT and a GET are done through the same GridFTP connection
- [DMC-856] - Set user and password when accessing plain FTP
- [DMC-858] - XRootD: Urldecode path before passing to xrootd libraries
- [DMC-860] - SRM Plugin: Urldecode path before passing to srm-ifce
### New Feature
- [DMC-827] - GridFTP Plugin: Allow to configure blocksize
- [DMC-849] - GridFTP Plugin: Fire an event if IPv6 is used
- [DMC-866] - Expand '-' to stdout when used as destination for gfal-copy
- [DMC-868] - GridFTP Plugin: Add spacetoken xattr 
### Task
- [DMC-852] - GridFTP: Workaround for Globus' higher priority to /etc/grid-security/hostcert.pem 
### Improvement
- [DMC-837] - When an operation is not supported, include the url on the error
- [DMC-851] - Improve URI parser (breaks internal API)
- [DMC-855] - Accept xroot:// as well as root://
- [DMC-857] - GridFTP Plugin: Set ALLO to remote storages
- [DMC-864] - Can gfal2 indicate the origin of errors (source/destination) when using GridFTP?

## Thu Apr 14 2016 Alejandro Alvarez <aalvarez at cern.ch> - 2.11.1
### Bug
- [DMC-813] - XRootD plugin: gfal2_set_error called without format string
- [DMC-818] - SRM plugin not invoked when using a relative path to the source file

## Mon Mar 07 2016 Alejandro Alvarez <aalvarez at cern.ch> - 2.11.0
### Bug
- [DMC-758] - Add a Requires on glib2 >= 2.28
- [DMC-769] - GridFTP Plugin: Missing throw inside copy
- [DMC-783] - SRM endpoint resolution fails due to an off-by-one introduced when switched to g_strlcpy
- [DMC-798] - FIle Plugin: Readlink implemented but not exposed
- [DMC-803] - GridFTP Plugin: PASV plugin fails to extract IP
- [DMC-808] - gfal2_parse_uri does not support IPv6 URLS
- [DMC-811] - gfal2 error GLib-WARNING **: GError set over the top of a previous GError or uninitialized memory
### Improvement
- [DMC-793] - SRM Plugin: Set "GRIDFTP PLUGIN:STAT_ON_OPEN" to false when the endpoint is Castor
- [DMC-795] - XRootD Plugin: Generate better error messages
- [DMC-809] - XRootD Plugin: Copy from/to XRootD using the Client (as with 3rd party copy)
- [DMC-812] - Add open/read/write/close to the mock plugin
### New Feature
- [DMC-756] - Mock plugin: Add directory listing and signal raising
- [DMC-763] - Add plain FTP support (anonymous only)
- [DMC-781] - Add support for short-term S3 credentials
- [DMC-797] - HTTP Plugin: Add rename support
- [DMC-801] - dCache davs pull copy use checksum verification by default, should be disabled if checksums are not asked for
- [DMC-804] - Allow to pass arbitrary headers to davix

## Wed Dec 09 2015 Alejandro Alvarez <aalvarez at cern.ch> - 2.10.3
### Bug
- [DMC-783] - SRM endpoint resolution fails due to an off-by-one introduced when switched to g_strlcpy

## Fri Nov 06 2015 Alejandro Alvarez <aalvarez at cern.ch> - 2.10.2
### Bug
- [DMC-769] - GridFTP Plugin: Missing throw inside copy

## Tue Oct 20 2015 Alejandro Alvarez <aalvarez at cern.ch> - 2.10.1
### Bug
- [DMC-750] - Respect GLOBUS_THREAD_MODEL environment
### Improvement
- [DMC-738] - HTTP Plugin: Skip source validation checksum if the algorithm is not supported

## Mon Oct 12 2015 Alejandro Alvarez <aalvarez at cern.ch> - 2.10.0
### Bug
- [DMC-676] - SRM Plugin: Response for bringonline may be shorter than the request
- [DMC-682] - SURLS in responses may not contain full endpoint
- [DMC-692] - gfal_rw_seq_SRM_DPM hangs somewhere when the proxy is not initialized
- [DMC-694] - GridFTP Plugin: Malformed IPv6 printed on the logs
- [DMC-717] - Remove Boost dependency from gfal2
- [DMC-720] - SRM Plugin should handle transfers also for file:/path
- [DMC-722] - LFC Plugin registers the TURL rather than the SURL into the catalog
- [DMC-724] - XROOTD plugin: Case-insensitive checksum type comparison 
- [DMC-731] - Segfault on xrootd 3rd party copies
- [DMC-741] - Replace G_LOG_LEVEL_INFO with other levels
- [DMC-742] - SRM Plugin: Convert UTC to local timestamp
### Improvement
- [DMC-674] - Validate version as part of the packaging
- [DMC-679] - SRM Plugin: Reduce log level for the unlinking messages
- [DMC-685] - All: Mark in a common way when a checksum comparison fails
- [DMC-698] - Port DMC clients to MacOSX
- [DMC-737] - File plugin: Avoid large allocation on the stack
- [DMC-744] - GridFTP Plugin: Parse uid and gid if available
### New Feature
- [DMC-669] - GridFTP Plugin: Hook a plugin to capture final endpoints on transfer
- [DMC-673] - SRM Plugin: Add srm.type extended attribute
- [DMC-697] - HTTP Plugin: Add support for pull copies
### Task
- [DMC-680] - Integrate gfal2-plugin-xrootd into mainline gfal2
- [DMC-712] - Improve mock plugin

## Tue Jun 08 2015 Alejandro Alvarez <aalvarez at cern.ch> - 2.9.3
### Bug
- [DMC-682] - SRM Plugin: SURLS in responses may not contain full endpoint
- [DMC-676] - SRM Plugin: Response for poll may be shorter too

## Mon Jun 01 2015 Alejandro Alvarez <aalvarez at cern.ch> - 2.9.2
### Bug
- [DMC-676] - SRM Plugin: Response for bringonline may be shorter than the request

## Fri Apr 10 2015  Alejandro Alvarez <aalvarez at cern.ch> - 2.9.1
### Bug
- [DMC-620] - HTTP Plugin: Normalize S3:host to S3:HOST on all cases
- [DMC-622] - Core: gfal2 crash when aborting staging operation
- [DMC-626] - LFC Plugin: Off by one bug when checking for parent directory
- [DMC-627] - LFC Plugin: When lfn:// is used, lfc_host was being left to NULL
- [DMC-632] - GridFTP Plugin: When the timeout expires, wait for the callback after cancellation
- [DMC-638] - GridFTP Plugin: Performance marker timeout causes abort
- [DMC-639] - SRM Plugin: Fix build in Rawhide
- [DMC-645] - GridFTP Plugin: Always register performance marker callback
- [DMC-647] - GridFTP Plugin: In some machines, the threading model is event, and writing to castor do not work
- [DMC-653] - SRM Plugin: Closing when reading must issue a release
- [DMC-661] - GridFTP Plugin: Error messages generated during transfer seem to be truncated
- [DMC-662] - GridFTP Plugin: Map correctly "Disk quota" errors
### Improvement
- [DMC-613] - HTTP Plugin: Davix already stats before deletion, so remove the check
- [DMC-617] - HTTP Plugin: Set Davix retrials to 0
- [DMC-619] - HTTP Plugin: Add KEEP_ALIVE option
- [DMC-640] - Conditionally enable C++11
- [DMC-648] - Core: Provide gfal2_ prefixed methods for uri methods
- [DMC-649] - Core: Improve logger system, deprecate old methods
- [DMC-650] - SRM Plugin: Log the request tokens
- [DMC-651] - Core and plugins: Allow to send custom key/value to the servers
### New Feature
- [DMC-641] - Core: Allow to register multiple event listeners
- [DMC-642] - Core: Give plugins a chance to register their own event listeners
- [DMC-643] - Core: Add an event for copies that is triggered at the beginning
- [DMC-657] - SRM Plugin: On prepare to get and put, get the desired request lifetime from the configuration file
- [DMC-663] - Add functionality to allow querying the versions of the plugins loaded

## Fri Feb 27 2015 Alejandro Alvarez <aalvarez at cern.ch> - 2.8.4
- [DMC-638] - GridFTP Plugin: Performance marker timeout causes abort

## Tue Feb 10 2015 Alejandro Alvarez <aalvarez at cern.ch> - 2.8.3
- [DMC-632] - GridFTP Plugin: When the timeout expires, wait for the callback after cancellation

## Thu Jan 29 2014 Alejandro Alvarez <aalvarez at cern.ch> - 2.8.2
- [DMC-622] - Core: gfal2 crash when aborting staging operation

## Tue Jan 06 2015 Alejandro Alvarez <aalvarez at cern.ch> - 2.8.1
- [DMC-529] - [EPEL7 Only] GridFTP fails to load the configured credentials
- [DMC-531] - GridFTP Plugin: Partial read and write missing EOF's
- [DMC-541] - GridFTP and SRM plugins: Transferring from Castor SRM to non-SRM fail with "Connection refused"
- [DMC-544] - GridFTP Plugin: Map "System error in name: Is a directory" to EISDIR
- [DMC-553] - SRM Plugin: TURLS retrieved from a SRM endpoint should be of one of the requested protocols
- [DMC-559] - SRM Plugin: gfal_srm_readdir_pipeline ignore errors
- [DMC-563] - SRM Plugin: Typo in TURL resolution when copying
- [DMC-566] - Mock plugin: Only size should be enough to specify the file size
- [DMC-570] - GridFTP Plugin: Establishing an lfc connection before loading GridFTP makes the GridFTP plugin freeze in most (all?) operations
- [DMC-580] - Core: Do not try to create parent on "transfer only" copies
- [DMC-582] - SRM Plugin: Missing parameter in call to gfal2_set_error when the protocol is not expected
- [DMC-584] - SRM Plugin: Cache does not invalidate entries when removing a directory
- [DMC-587] - File: CRC32 should be represented in decimal
- [DMC-596] - SRM Plugin: Getting file:// is a legitimate use case
- [DMC-597] - GridFTP Plugin: Sessions are not reused
- [DMC-598] - GridFTP Plugin: Transfer timeout is not taken into account
- [DMC-601] - Core: Streamed copy buffer should be moved to the heap
- [DMC-565] - Mock plugin: Reduce default sleep time for transferring to ~5 secs
- [DMC-530] - SRM plugin doesn't seem to handle urls without path
- [DMC-533] - GridFTP Plugin: Partial read and write, avoid seeking if not strictly required
- [DMC-540] - HTTP Plugin: Assume DAV when http/https urls are used
- [DMC-556] - SRM Plugin: On copies, an error on RELEASE should not be considered an error
- [DMC-558] - Core: Log when events are triggered
- [DMC-560] - Core: Notify events also in streamed copies
- [DMC-568] - GridFTP Plugin: Enforce thread model to pthread
- [DMC-574] - File Plugin: Package separately
- [DMC-575] - SRM Plugin: Try listing in chunks when the storage replies "too many results"
- [DMC-589] - HTTP Plugin: Reduce the verbosity level configured for Davix
- [DMC-592] - GridFTP Plugin: In bulk copies, avoid redundant parent creation
- [DMC-562] - SRM Plugin: Trigger events for TURL resolution when copying
- [DMC-583] - Core: Add call to recover list of installed plugins
- [DMC-487] - GridFTP Plugin: Refactoring
- [DMC-536] - SRM Plugin: Protect the srm context with recursive mutexes
- [DMC-550] - HTTP Plugin: Add option to configure davix log level for debugging
- [DMC-576] - Merge gfal2, gfal2-core and gfal2-transfer in one single package
- [DMC-603] - Core: Transfer logic from c++ to c
- [DMC-604] - Remove dependency on glibmm24

* Mon Nov 17 2014 Alejandro Alvarez <aalvarez at cern.ch> - 2.7.8
- [DMC-553] - TURLS retrieved from a SRM endpoint should be of one of the requested protocols

## Mon Nov 10 2014 Alejandro Alvarez <aalvarez at cern.ch> - 2.7.7
- [DMC-539] - GridFTP Plugin: Transfers from gridftp endpoints hang when a read operation fails
- [DMC-541] - GridFTP and SRM plugins: Transferring from Castor SRM to non-SRM fail with "Connection refused"

## Fri Nov 07 2014 Alejandro Alvarez <aalvarez at cern.ch> - 2.7.6
- [DMC-469] - LFC Plugin: Calling gfal2_set_error with wrong parameters
- [DMC-473] - HTTP Plugin: 3rd party copy should translate non canonical urls (davs+3rd...) to https
- [DMC-485] - Core: Recursive mkdir() fail when because of a race an intermediate directory is created
- [DMC-502] - GridFTP Plugin: if ucert == ukey, do not concatenate them
- [DMC-504] - SRM Plugin: mkdir-ing an existing directory must nor fail
- [DMC-509] - Core: Cannot use unix special files as a destination for file transfer
- [DMC-510] - srm-ifce is not mapping correctly status codes (Was Revert DMC-433)
- [DMC-515] - bring online timeout is not set correctly in gfal_srmv2_bring_online_internal
- [DMC-516] - SRM Plugin: Bringonline internals only checks for the status of the first file
- [DMC-523] - Core: Do not try to create parent directory if it exists already (local copy)
- [DMC-531] - GridFTP Plugin: Partial read and write missing EOF's
- [DMC-453] - Deprecate gfal_handle and gfal_context_t inside gfal2
- [DMC-463] - GridFTP Plugin: Log storage IPv6
- [DMC-465] - HTTP Plugin: Make possible dissabling certificate verification
- [DMC-507] - Core: Expose URI API publicly
- [DMC-508] - Deprecate direct inclusion of header files
- [DMC-533] - GridFTP Plugin: Partial read and write, avoid seeking if not strictly required
- [DMC-445] - HTTP Plugin: 3rd party copies explicit (davs+3rd://)
- [DMC-448] - SRM Plugin: Disable GridFTP session reuse if a castor srm endpoint is involved
- [DMC-452] - Core: For convenience, xattr user.checksum directly mapped to gfal2_checksum
- [DMC-459] - Core: New method to load configuration from a file (gfal2_load_opts_from_file)
- [DMC-466] - LFC Plugin: Handle replica deletion via extended attributes
- [DMC-490] - HTTP Plugin: Add support for AWS credentials
- [DMC-493] - Core: Add gfal2_get_opt_string_with_default
- [DMC-460] - GridFTP Plugin: Trimming bug in gridftp_readdir_parser
- [DMC-462] - GridFTP Plugin: Pipeline copy support

## Mon Jul 28 2014 Alejandro Alvarez <aalvarez at cern.ch> - 2.6.8
- [LCGUTIL-169] - GFAL 2.0 : Enable tests for xrootd and http supports
- [LCGUTIL-345] - GFAL 2.0: add support for dCache test bed for functional tests
- [LCGUTIL-45] - GFAL 2.0 : non third party transfer should respect all transfers options
- [LCGUTIL-166] - GFAL 2 : Update gfal 2.0 functional tests 
- [LCGUTIL-348] - gfal-copy produces misleading error
- [LCGUTIL-355] - HTTP plugin does not do 3rd party copy when dav/davs is used as scheme
- [LCGUTIL-359] - GFAL 2.0 : GFAL2 copy does not manage properly spacetoken in file <-> SRM transfer
- [LCGUTIL-361] - Some transfers finish with GridFTP transferring 0 bytes, and keep going
- [LCGUTIL-363] - Some tests do not clean after themselves
- [LCGUTIL-365] - SRM Checksum fallback fails for IPv6
- [LCGUTIL-393] - Spacetoken operations do not handle null values
- [LCGUTIL-420] - Unhandled exception causes abort
- [LCGUTIL-422] - Memory leak in gfal_srm_cache_stat_add
- [LCGUTIL-428] - Bringonline does not support destination space token
- [LCGUTIL-429] - thread-safety issue with SSL
- [LCGUTIL-432] - gfal_srmv2_bring_online returns > 0 if the file is already pinned
- [LCGUTIL-433] - gfal2-srm: If the file is pinned (22), gfal_srmv2_bring_online_internal must return 1 too
- [LCGUTIL-358] - When rolling back a SRM PUT, it may be necessary to explicitly remove the file
- [LCGUTIL-362] - Clarify error messages coming from gfal2 on copies
- [LCGUTIL-385] - GridFTP listing improvement (RELNOTE: session reuse enabled by default!)
- [LCGUTIL-386] - Improvements to GridFTP 3rd party copy to achieve session reuse
- [LCGUTIL-395] - Do not fail on replica registration if the same replica is already there
- [LCGUTIL-412] - Delegate the grid authentication of GFAL 2.0 http plugin to davix
- [LCGUTIL-435] - SRM: Cache file locality
- [LCGUTIL-55] - GFAL 2.0 : set a clean API to set/get at runtime the different possible credential
- [LCGUTIL-306] - lcg-stmd equivalent
- [LCGUTIL-352] - support GridFTP UDT in gfal2
- [LCGUTIL-356] - Add an option to disable http 3rd party copies
- [LCGUTIL-360] - Copy to http(s) does not work if the file is bigger than the buffer
- [LCGUTIL-423] - Bulk bring online
- [LCGUTIL-424] - Bulk deletions
- [LCGUTIL-425] - srm-ifce KeepAlive is not honored
- [LCGUTIL-439] - Missing abort function for gfal2
- [LCGUTIL-440] - stop perf markers callback when transferred_bytes == filesize
- [LCGUTIL-326] - GFAL 2.0: Map Davix Checksum support to GFAL 2.0
- [LCGUTIL-347] - gfla2 lfc plugin: set serrno to 0 before readdir calls
- [LCGUTIL-353] - HTTP plugin does not clean up destination on failure
- [LCGUTIL-354] - GFAL2.0 : srm segfault problem related to GFAL 2.0
- [LCGUTIL-403] - gfal2 segfault when reading dir via srm
- [LCGUTIL-406] - symbol lookup error: /usr/lib64/gfal2-plugins//libgfal_plugin_xrootd.so: undefined symbol: _ZN14XrdPosixXrootd8setDebugEi
- [LCGUTIL-417] - gfal-copy return success when there is some error in the plugin
- [LCGUTIL-460] - Issue with gfalFS and gridftp endpoints

## Wed Feb 26 2014 Adrien Devresse <adevress at cern.ch> - 2.5.5-1
- [LCGUTIL-40] - GFAL 2.0 : implement lfc logic that allows third party copy logic with SRM
- [LCGUTIL-268] - gfal2 returns no error when proxy is invalid
- [LCGUTIL-290] - Problems with dates in gfalFS
- [LCGUTIL-295] - GridFTP plugin returns the full path when listing an empty directory
- [LCGUTIL-284] - LFC registration (as 3rd party copy) should perform some validations
- [LCGUTIL-286] - GFAL2 doesn't support multiple BDII
- [LCGUTIL-287] - If LFC_HOST is not specified, it should be looked in the BDII
- [LCGUTIL-288] - Implement readdirpp directly in plugins that support it
- [LCGUTIL-46] - GFAL 2.0 : find a workaround for non posix file information that are not mapped to xattr
- [LCGUTIL-267] - gfal2 checksum doesn't work for local files
- [LCGUTIL-285] - Add gsiftp meta-data cache

## Fri Dec 06 2013 Alejandro Alvarez <aalvarez at cern.ch> - 2.4.8-0
- [LCGUTIL-216] - Checksum comparison must ignore heading '0'
- [LCGUTIL-220] - gfal2 crashes with SIGSEGV sometimes on bringonline
- [LCGUTIL-222] - Timeout doesn't seem to be honored
- [LCGUTIL-236] - Segfault inside GridFTP_Request_state::~GridFTP_Request_state
- [LCGUTIL-248] - GFAL 2.0 : Recent platform with recent glib2 version triggers "GLib-WARNING" in some case
- [LCGUTIL-255] - unlink on a dir returns ERR 22 (Invalid arg)
- [LCGUTIL-278] - seg fault - setxattr() in local files
- [LCGUTIL-297] - gfal2 perf markers 0 must be treated as no markers and respect timeout
- [LCGUTIL-160] - gfal2 needs to search the cache first (then BDII) if submitter not providing full srm url
- [LCGUTIL-217] - SRM plugin should allow empty checksums on source
- [LCGUTIL-303] - EOS GridFTP implementation does not return 'EEXIST' error properly
- [LCGUTIL-226] - Partial listing of directory to avoid loading too much the server
- [LCGUTIL-233] - GridFTP plugin should allow to skip the source checksum

## Tue Jul 02 2013 Adrien Devresse <adevress at cern.ch> - 2.3.0-0
- [LCGUTIL-99] gfal2_cancel crashes gfal2 if called twice
- [LCGUTIL-135] GFAL 2.0 : Migrate the http plugin support for PEM from the old manual one to the new Davix one
- [LCGUTIL-143] GFAL 2.0 : Regression bug of the stat() call against the dcache instance
- [LCGUTIL-145] GridFTP plugin tries to delete the destination when getting the source checksum fails (!)
- [LCGUTIL-147] GFAL 2.0 : bug on the session re-use mechanism
- [LCGUTIL-165] GFAL 2.0 : enable HTTP/Webdav support by default, packaged on EPEL with davix
- [LCGUTIL-179] manpage-section-mismatch
- [LCGUTIL-141] GFAL 2 : add a flag in the gsiftp standard option in order to allow the gsiftp redirection, this is needed for the DPM gsiftp redirection mechanism
- [LCGUTIL-51]  GFAL 2.0 : implement the last missing operation : srm_mv logic for file renaming
- [LCGUTIL-144] GFAL 2.0 : Update all functional test for a post-EMI usage
- First version fully compatible with a standard FTS 3.0 release
- Minor error correction from coverity  report
- bug fixes related to gridFTP thread safety for meta-data operations.

## Thu Jul 02 2013 Michail Salichos <msalicho at cern.ch> - 2.2.2-11
- pass gfal2 to coverity and fix minor issues reported

## Mon Jun 10 2013 Michail Salichos <msalicho at cern.ch> - 2.2.2-10
- fixed memory leaks and variables initialization
- moved event exit message outside try-catch block
- fix potential crash when can't resolve IP from hostname
- LCGUTIL-142: gfal2_context_t wrapped in shared_ptr to avoid early destruction

## Thu Jun 06 2013 Michail Salichos <msalicho at cern.ch> - 2.2.2-6
- log IP and port of gridftp server in IPv4/IPv6 compatible way

## Thu May 27 2013 Michail Salichos <msalicho at cern.ch> - 2.2.2-5
- log IP and port of gridftp server

## Thu May 16 2013 Michail Salichos <msalicho at cern.ch> - 2.2.2-1
- replace gridftp exists with mlst

## Wed Mar 20 2013 Adrien Devresse <adevress at cern.ch> - 2.2.0-0
- fix thread safety issue with gsiftp plugin
- add the bring online API
- support for the http plugin by default
- remove executable stack need
- remove openMP dependency
- add synchronous cancellation API
- add gsiftp performance marker timeout
- support for srm session reuse
- reduce memory footprint

## Thu Jan 10 2013 Adrien Devresse <adevress at cern.ch> - 2.1.1-0
- fix a minor memory issue with the gfal_transfer stack
- fix a wrong error report problem with srm third party copy

## Wed Dec 05 2012 Adrien Devresse <adevress at cern.ch> - 2.1.0-2
- fix an issue this surl to turl resolution for SRM third party copy

## Fri Nov 30 2012 Adrien Devresse <adevress at cern.ch> - 2.1.0-0
- One-globus session system for gsiftp plugin ( FTS 3.0 need )
- correct a major issue with the gass attribute system in gsiftp plugin
- change the lfc set/get env var for a one compatible with set/get opt
- add set/nb streams option for gsiftp
- add the mkdir rec function for SRM transfer
- correct an issue with opendir and srm_ls ( ENOTDIR error silent )
- correct a memory leak in the cache system
- correct timeout support for gsiftp transfer
- implement tcp buffer size support for gsiftp layer
- apply a correction on the SRM over-write logic, linked to a BeStMan errcode problem on File Not Found with srmRm ( EOS )
- apply a fix on the transfer gsiftp timeout ( protection against multiple cancel )
- fix for SRM filesize problem ( defined to 0, workaround ) related to globus 426 error bad filesize
- secure the callback system for globus gass timeout
- base implementation of the http plugin
- improve reliability of the bdii resolution
- add a fallback mechanism in case of bdii bad resolution
- correct several race conditions in the bdii layer
- add thread safe support for set/get variables in liblfc
- correct a deadlock problem with globus and gisftp plugin
- implement the mkdir_rec logic for general purpose
- implement the parent folder creation logic with gridftp
- add support for lfc://host/path URL style for the lfc plugin
- switch off_t to 64bits size by default ( _FILE_OFFSET_BITS=64)
- provide a "nobdii" like option
- provide the choice of turl protocol resolution for srm plugin


## Fri Jul 20 2012 Adrien Devresse <adevress at cern.ch> - 2.0.0-1
- Official initial release candidate of gfal 2.0
- Transfer API is official
- gridftp support for performance marker, checksum
- gridftp support for gridftpv2, dcau param
- SRM support for spacetoken in transfer
- SRM abort auto-management
- parallel operations in transfers
- file protocol dedicated in a plugin
- configuration file support
- srm timeout support
- general purpose checksum operation support
- POSIX operation support for gridftp
- cleaner plugin API
- new documentation
- I hope that you will enjoy gfal 2.0 :)

## 2.0.0-0.10
- effective set/get opt support for lfc/srm/gsiftp
- checksum calculation management
- auto-check functionality on transfer
- support for user-defined checksum
- performance marker implementation for SRM/GSIFTP

## 2.0.0-0.9
- Without environment variable design implemented
- add set/get option calls
- add SRM src/dst spacetoken management for gfal transfer
- re-factor properly gfal-transfer and gfal2_context_t
- generate a new clean documentation with log/transfer/context support
- allow direct modification of the internal posix context 
- fix memory leak with gsiftp error report


## 2.0.0-0.8
- big improvement on the gridftp support
- split the headers files properly
- remove the carriage return from the gridftp error messages
- add plugin dedicaded API.
- refactor the parameter management for the transfer library
- add the "transfer replace" logic for the transfer library ( FTS 3.0 requirement )
- add logger system based on the glib log system ( ARC requirement )
- correct memory leaks and a session-reuse memory corruption for gridftp
- improve gridFTP global speed with request optimisations.
- remove the old config/parameters system for the posix library.
- add several functional tests for the new features.
- add SRM to X and X to SRM modes to the SRM plugin ( FTS 3.0 requirement )

## 2.0.0-0.7
- major improvement for third party transfer
- initial gridftp support
- begin to switch to configuration without env var

## 2.0.0-0.6
- initial tagged release
