GFAL2 RELEASE-NOTES:

* 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
