dCache / xrootd4j

Implementation of the xrootd data access protocol in Java
Other
3 stars 8 forks source link

xrootd4j: do not release buffer of unconsumed message in Authenticat… #149

Closed alrossi closed 2 years ago

alrossi commented 2 years ago

…ionHandler

Motivation:

The XrootdRequestHandler getResponse() method expects subclasses to implement the doOn... method in such a way that if the specific request is consumed by the subclass, the response is returned, and is not, null is returned. In the latter case, the handler passes the request down the chain without releasing its associated ByteBuf. The subclass should not, in any event, release the request buffer.

The XrootdAuthenticationHandler violates the constract in the default case of its switch statement. This has gone undiscovered in the dCache implementation because the XrootdAuthenticationHandler is not used by itself, but is wrapped by the XrootdSessionHandler, which only passes kXR_auth requests to it, thus avoiding the default.

Modification:

Eliminate the offending release.

Result:

Correct behavior which should allow the XrootdAuthenticationHandler to be inserted independently into the pipeline.

Target: master Request: 4.5 Request: 4.4 Request: 4.3 Patch: https://rb.dcache.org/r/13722/ Requires-notes: no Acked-by: Tigran