77
77
import org .eclipse .jetty .util .component .AbstractLifeCycle ;
78
78
import org .eclipse .jetty .util .component .Dumpable ;
79
79
import org .eclipse .jetty .util .component .DumpableCollection ;
80
+ import org .eclipse .jetty .util .component .DumpableMap ;
80
81
import org .eclipse .jetty .util .thread .AutoLock ;
81
82
import org .eclipse .jetty .util .thread .Invocable ;
82
83
import org .eclipse .jetty .util .thread .Scheduler ;
@@ -91,6 +92,8 @@ public abstract class HTTP2Session extends AbstractLifeCycle implements Session,
91
92
private static final int MAX_TOTAL_LOCAL_STREAMS = Integer .MAX_VALUE / 2 ;
92
93
93
94
private final Map <Integer , HTTP2Stream > streams = new ConcurrentHashMap <>();
95
+ private final Map <Integer , Integer > localSettings = new ConcurrentHashMap <>();
96
+ private final Map <Integer , Integer > remoteSettings = new ConcurrentHashMap <>();
94
97
private final Set <Integer > priorityStreams = ConcurrentHashMap .newKeySet ();
95
98
private final List <FrameListener > frameListeners = new CopyOnWriteArrayList <>();
96
99
private final List <LifeCycleListener > lifeCycleListeners = new CopyOnWriteArrayList <>();
@@ -445,6 +448,7 @@ public void onSettings(SettingsFrame frame, boolean reply)
445
448
return ;
446
449
447
450
Map <Integer , Integer > settings = frame .getSettings ();
451
+ remoteSettings .putAll (settings );
448
452
configure (settings , false );
449
453
notifySettings (this , frame );
450
454
@@ -811,6 +815,9 @@ public void succeeded(Stream pushed)
811
815
@ Override
812
816
public void settings (SettingsFrame frame , Callback callback )
813
817
{
818
+ if (!frame .isReply ())
819
+ localSettings .putAll (frame .getSettings ());
820
+
814
821
control (null , callback , frame );
815
822
}
816
823
@@ -1442,7 +1449,10 @@ protected static boolean isClientStream(int streamId)
1442
1449
@ Override
1443
1450
public void dump (Appendable out , String indent ) throws IOException
1444
1451
{
1445
- Dumpable .dumpObjects (out , indent , this , flowControl , flusher , new DumpableCollection ("streams" , streams .values ()));
1452
+ DumpableCollection streamsDump = new DumpableCollection ("streams" , streams .values ());
1453
+ DumpableMap localSettingsDump = new DumpableMap ("local settings" , localSettings );
1454
+ DumpableMap remoteSettingsDump = new DumpableMap ("remote settings" , remoteSettings );
1455
+ Dumpable .dumpObjects (out , indent , this , flowControl , flusher , streamsDump , localSettingsDump , remoteSettingsDump );
1446
1456
}
1447
1457
1448
1458
@ Override
0 commit comments