@@ -315,24 +315,14 @@ protected final <T> void writeRequest(final Channel channel,
315
315
final NettyResponseFuture <T > future ,
316
316
final HttpRequest nettyRequest ) {
317
317
try {
318
-
319
- if (TransferCompletionHandler .class .isAssignableFrom (future .getAsyncHandler ().getClass ())) {
320
-
321
- FluentCaseInsensitiveStringsMap h = new FluentCaseInsensitiveStringsMap ();
322
- for (String s : future .getNettyRequest ().getHeaderNames ()) {
323
- for (String header : future .getNettyRequest ().getHeaders (s )) {
324
- h .add (s , header );
325
- }
326
- }
327
-
328
- TransferCompletionHandler .class .cast (future .getAsyncHandler ()).transferAdapter (
329
- new NettyTransferAdapter (h , nettyRequest .getContent (), future .getRequest ().getFile ()));
330
- }
331
-
332
318
if (!channel .isOpen () || !channel .isConnected ()) {
333
319
if (!remotelyClosed (channel , future )) {
334
320
abort (future , new ConnectException ());
335
321
return ;
322
+ } else {
323
+ log .error ("Channel is in close state {} and cannot be recovered" , channel );
324
+ abort (future , new ClosedChannelException ());
325
+ return ;
336
326
}
337
327
}
338
328
@@ -355,6 +345,20 @@ protected final <T> void writeRequest(final Channel channel,
355
345
}
356
346
}
357
347
348
+
349
+ if (TransferCompletionHandler .class .isAssignableFrom (future .getAsyncHandler ().getClass ())) {
350
+
351
+ FluentCaseInsensitiveStringsMap h = new FluentCaseInsensitiveStringsMap ();
352
+ for (String s : future .getNettyRequest ().getHeaderNames ()) {
353
+ for (String header : future .getNettyRequest ().getHeaders (s )) {
354
+ h .add (s , header );
355
+ }
356
+ }
357
+
358
+ TransferCompletionHandler .class .cast (future .getAsyncHandler ()).transferAdapter (
359
+ new NettyTransferAdapter (h , nettyRequest .getContent (), future .getRequest ().getFile ()));
360
+ }
361
+
358
362
// Leave it to true.
359
363
if (future .getAndSetWriteHeaders (true )) {
360
364
try {
@@ -1463,6 +1467,7 @@ public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
1463
1467
} catch (Throwable t ) {
1464
1468
cause = t ;
1465
1469
}
1470
+
1466
1471
if (future != null ) {
1467
1472
try {
1468
1473
abort (future , cause );
0 commit comments