|
19 | 19 | import io.netty.channel.Channel; |
20 | 20 | import io.netty.handler.codec.http.HttpHeaderNames; |
21 | 21 | import io.netty.handler.codec.http.HttpHeaderValues; |
| 22 | +import io.netty.handler.codec.http.HttpRequest; |
22 | 23 | import io.netty.handler.codec.http.HttpResponse; |
23 | 24 | import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame; |
24 | 25 | import io.netty.handler.codec.http.websocketx.CloseWebSocketFrame; |
@@ -69,29 +70,22 @@ private class UpgradeCallback extends Callback { |
69 | 70 |
|
70 | 71 | private final Channel channel; |
71 | 72 | private final HttpResponse response; |
| 73 | + private final WebSocketUpgradeHandler handler; |
| 74 | + private final HttpResponseStatus status; |
| 75 | + private final HttpResponseHeaders responseHeaders; |
72 | 76 |
|
73 | | - public UpgradeCallback(NettyResponseFuture<?> future, Channel channel, HttpResponse response) { |
| 77 | + public UpgradeCallback(NettyResponseFuture<?> future, Channel channel, HttpResponse response, WebSocketUpgradeHandler handler, HttpResponseStatus status, HttpResponseHeaders responseHeaders) { |
74 | 78 | super(future); |
75 | 79 | this.channel = channel; |
76 | 80 | this.response = response; |
| 81 | + this.handler = handler; |
| 82 | + this.status = status; |
| 83 | + this.responseHeaders = responseHeaders; |
77 | 84 | } |
78 | 85 |
|
79 | 86 | @Override |
80 | 87 | public void call() throws Exception { |
81 | 88 |
|
82 | | - WebSocketUpgradeHandler handler = WebSocketUpgradeHandler.class.cast(future.getAsyncHandler()); |
83 | | - Request request = future.getCurrentRequest(); |
84 | | - |
85 | | - HttpResponseStatus status = new NettyResponseStatus(future.getUri(), config, response, channel); |
86 | | - HttpResponseHeaders responseHeaders = new HttpResponseHeaders(response.headers()); |
87 | | - Realm realm = request.getRealm() != null ? request.getRealm() : config.getRealm(); |
88 | | - |
89 | | - if (exitAfterProcessingFilters(channel, future, handler, status, responseHeaders)) { |
90 | | - return; |
91 | | - } |
92 | | - |
93 | | - if (REDIRECT_STATUSES.contains(status.getStatusCode()) && exitAfterHandlingRedirect(channel, future, response, request, response.status().code(), realm)) |
94 | | - return; |
95 | 89 |
|
96 | 90 | boolean validStatus = response.status().equals(SWITCHING_PROTOCOLS); |
97 | 91 | boolean validUpgrade = response.headers().get(HttpHeaderNames.UPGRADE) != null; |
@@ -137,7 +131,26 @@ public void handle(Channel channel, NettyResponseFuture<?> future, Object e) thr |
137 | 131 |
|
138 | 132 | if (e instanceof HttpResponse) { |
139 | 133 | HttpResponse response = (HttpResponse) e; |
140 | | - Channels.setAttribute(channel, new UpgradeCallback(future, channel, response)); |
| 134 | + if (logger.isDebugEnabled()) { |
| 135 | + HttpRequest httpRequest = future.getNettyRequest().getHttpRequest(); |
| 136 | + logger.debug("\n\nRequest {}\n\nResponse {}\n", httpRequest, response); |
| 137 | + } |
| 138 | + |
| 139 | + WebSocketUpgradeHandler handler = WebSocketUpgradeHandler.class.cast(future.getAsyncHandler()); |
| 140 | + HttpResponseStatus status = new NettyResponseStatus(future.getUri(), config, response, channel); |
| 141 | + HttpResponseHeaders responseHeaders = new HttpResponseHeaders(response.headers()); |
| 142 | + |
| 143 | + Request request = future.getCurrentRequest(); |
| 144 | + Realm realm = request.getRealm() != null ? request.getRealm() : config.getRealm(); |
| 145 | + |
| 146 | + if (exitAfterProcessingFilters(channel, future, handler, status, responseHeaders)) { |
| 147 | + return; |
| 148 | + } |
| 149 | + |
| 150 | + if (REDIRECT_STATUSES.contains(status.getStatusCode()) && exitAfterHandlingRedirect(channel, future, response, request, response.status().code(), realm)) |
| 151 | + return; |
| 152 | + |
| 153 | + Channels.setAttribute(channel, new UpgradeCallback(future, channel, response, handler, status, responseHeaders)); |
141 | 154 |
|
142 | 155 | } else if (e instanceof WebSocketFrame) { |
143 | 156 |
|
|
0 commit comments