qpid-proton mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ken Giusti <kgiu...@redhat.com>
Subject Python wrapper - SASL and SSL class API
Date Wed, 11 Dec 2013 14:35:09 GMT

Hi all - just wanted to get some opinions on $Subject:

While I was trying to implement a fix for https://issues.apache.org/jira/browse/PROTON-476
 I found that the lifecycle model for the python SASL and SSL objects differs for the C engine.
 I think the python wrapper's impl is buggy.

In the C engine, these objects are singletons with respect to their associated transport -
there can only be one SSL and SASL object associated with a given transport.  This is enforce
by the C api - the transport provides factory classes for these objects.

The python wrapper doesn't enforce this.  For both objects, a "public" constructor is supplied
(I say "public" because it is exported by the wrapper's __all__ list).  This makes it trivial
for an application to construct multiple instances of SASL/SSL objects that reference the
same underlying C object.  While this can technically be done safely using reference counting,
I think it may lead to unanticipated behavior - not to mention that it differs from the object
model provide by the C engine. 

I'd like to fix this by modifying the python wrapper to remove the SSL and SASL objects from
the __all__ list, and provide factory methods on the Transport class for creating instances
of these objects.

This would result in a change to the public API. 

Let me know what you think,



View raw message