On 09/07/2016 01:19 PM, Radoslaw Zarzynski wrote:
Where I see problems is AWS Auth v4. It's truly
state-full. And when it comes to handling state,
I would prefer to use the language assistance for
it (non-static class members) instead of letting
internals (context) leak to req_state.
AWS v4 is a good example to look at, yeah. It's a special case, because
there's a separate 'complete' step after reading the body of the
request, so we need to track auth state between the calls to authorize()
and complete(). The current implementation stores this stuff in a
'struct rgw_aws4_auth' member of req_state.
So far, all of the AuthEngine instances have been constructed on the
stack in their handler's authorize() method, so their state has been
limited to that scope. If a new AWS4AuthEngine were to encapsulate v4
auth this state, the engine would have to live somewhere outside of the
authorize() method - most likely in req_state. But we could just as
easily have a stateless AWS4AuthEngine that accessed the existing
rgw_aws4_auth via req_state. Encapsulation of rgw_aws4_auth could be
improved by making everything private except for a complete() method
(and call it AWS4AuthCompletion, for example).
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html