PROTON-1737: add option to allow configuring max frame size when using the reactor
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/reactor/ReactorOptions.java b/proton-j/src/main/java/org/apache/qpid/proton/reactor/ReactorOptions.java
index 5863f7c..8957aa6 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/reactor/ReactorOptions.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/reactor/ReactorOptions.java
@@ -22,6 +22,7 @@
 
 public class ReactorOptions {
     private boolean enableSaslByDefault = true;
+    private int maxFrameSize;
 
     /**
      * Sets whether SASL will be automatically enabled with ANONYMOUS as the mechanism,
@@ -46,4 +47,23 @@
     public boolean isEnableSaslByDefault() {
         return this.enableSaslByDefault;
     }
+
+    /**
+     * Sets the maximum frame size value to announce in the Open frame.
+     *
+     * @param maxFrameSize The frame size in bytes.
+     */
+    public void setMaxFrameSize(int maxFrameSize) {
+        this.maxFrameSize = maxFrameSize;
+    }
+
+    /**
+     * Gets the maximum frame size to be announced in the Open frame.
+     *
+     * @return the frame size in bytes or 0 if none is set.
+     * @see #setMaxFrameSize(int)
+     */
+    public int getMaxFrameSize() {
+      return maxFrameSize;
+    }
 }
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/AcceptorImpl.java b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/AcceptorImpl.java
index 7275113..eec8e70 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/AcceptorImpl.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/AcceptorImpl.java
@@ -73,6 +73,12 @@
                     conn_recs.set(ReactorImpl.CONNECTION_PEER_ADDRESS_KEY, Address.class, addr);
                 }
                 Transport trans = Proton.transport();
+
+                int maxFrameSizeOption = reactor.getOptions().getMaxFrameSize();
+                if (maxFrameSizeOption != 0) {
+                    trans.setMaxFrameSize(maxFrameSizeOption);
+                }
+
                 if(reactor.getOptions().isEnableSaslByDefault()) {
                     Sasl sasl = trans.sasl();
                     sasl.server();
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java
index 0594d32..81b85ff 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java
@@ -101,6 +101,11 @@
         }
         Transport transport = Proton.transport();
 
+        int maxFrameSizeOption = reactor.getOptions().getMaxFrameSize();
+        if (maxFrameSizeOption != 0) {
+            transport.setMaxFrameSize(maxFrameSizeOption);
+        }
+
         if (reactor.getOptions().isEnableSaslByDefault()) {
             Sasl sasl = transport.sasl();
             sasl.client();