You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2014/07/02 14:17:23 UTC
svn commit: r1607335 - in /qpid/proton/trunk/proton-j/src:
main/java/org/apache/qpid/proton/engine/Transport.java
main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
test/java/org/apache/qpid/proton/engine/impl/TransportImplTest.java
Author: robbie
Date: Wed Jul 2 12:17:23 2014
New Revision: 1607335
URL: http://svn.apache.org/r1607335
Log:
PROTON-543: document that Transport#sasl() must be called prior to any processing if a sasl layer is desired. Throw ISE from sasl() if process() has been called before the first sasl() invocation.
Modified:
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
qpid/proton/trunk/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/TransportImplTest.java
Modified: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java?rev=1607335&r1=1607334&r2=1607335&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java (original)
+++ qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/Transport.java Wed Jul 2 12:17:23 2014
@@ -167,7 +167,15 @@ public interface Transport extends Endpo
*/
void outputConsumed();
- Sasl sasl();
+ /**
+ * Signal the transport to expect SASL frames used to establish a SASL layer prior to
+ * performing the AMQP protocol version negotiation. This must first be performed before
+ * the transport is used for processing. Subsequent invocations will return the same
+ * {@link Sasl} object.
+ *
+ * @throws IllegalStateException if transport processing has already begun prior to initial invocation
+ */
+ Sasl sasl() throws IllegalStateException;
/**
* Wrap this transport's output and input to apply SSL encryption and decryption respectively.
Modified: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java?rev=1607335&r1=1607334&r2=1607335&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java (original)
+++ qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java Wed Jul 2 12:17:23 2014
@@ -101,6 +101,7 @@ public class TransportImpl extends Endpo
private TransportResult _lastTransportResult = TransportResultFactory.ok();
private boolean _init;
+ private boolean _processingStarted;
private FrameHandler _frameHandler = this;
private boolean _head_closed = false;
@@ -290,6 +291,11 @@ public class TransportImpl extends Endpo
{
if(_sasl == null)
{
+ if(_processingStarted)
+ {
+ throw new IllegalStateException("Sasl can't be initiated after transport has started processing");
+ }
+
init();
_sasl = new SaslImpl(_remoteMaxFrameSize);
TransportWrapper transportWrapper = _sasl.wrap(_inputProcessor, _outputProcessor);
@@ -1259,6 +1265,8 @@ public class TransportImpl extends Endpo
@Override
public void process() throws TransportException
{
+ _processingStarted = true;
+
try {
init();
_inputProcessor.process();
Modified: qpid/proton/trunk/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/TransportImplTest.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/TransportImplTest.java?rev=1607335&r1=1607334&r2=1607335&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/TransportImplTest.java (original)
+++ qpid/proton/trunk/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/TransportImplTest.java Wed Jul 2 12:17:23 2014
@@ -207,4 +207,19 @@ public class TransportImplTest
assertTrue("Expecting second buffer to have bytes", buf.remaining() > 0);
assertTrue("Expecting second buffer to not be full", buf.remaining() < Transport.MIN_MAX_FRAME_SIZE);
}
+
+ @Test
+ public void testAttemptToInitiateSaslAfterProcessingBeginsCausesIllegalStateException()
+ {
+ _transport.process();
+
+ try
+ {
+ _transport.sasl();
+ }
+ catch(IllegalStateException ise)
+ {
+ //expected, sasl must be initiated before processing begins
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org