Set handler in synchronized block. Invoke handler outsied of synchronized block

Signed-off-by: Michal Michalowski <michal.michalowski@openet.com>
This commit is contained in:
Michal Michalowski
2018-11-09 12:34:12 +01:00
parent 288c8b7962
commit 6d64e86016

View File

@@ -523,22 +523,26 @@ public class Http2ServerRequestImpl extends VertxHttp2Stream<Http2ServerConnecti
@Override
public HttpServerRequest streamPriorityHandler(Handler<StreamPriority> handler) {
streamPriorityHandler = handler;
synchronized (conn) {
streamPriorityHandler = handler;
}
return this;
}
@Override
void handlePriorityChange(StreamPriority streamPriority) {
System.out.println(getClass().getName() + ".handlePriorityChange(" + streamPriority + ")");
Handler<StreamPriority> handler;
boolean priorityChanged = false;
synchronized (conn) {
Handler<StreamPriority> handler = streamPriorityHandler;
if (handler != null) {
if(streamPriority != null && !streamPriority.equals(getStreamPriority())) {
handler = streamPriorityHandler;
if(streamPriority != null && !streamPriority.equals(getStreamPriority())) {
setStreamPriority(streamPriority);
handler.handle(streamPriority);
}
priorityChanged = true;
}
}
if (handler != null && priorityChanged) {
handler.handle(streamPriority);
}
}
}