[ https://issues.apache.org/jira/browse/CAMEL-6945?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13817231#comment-13817231 ]
Claus Ibsen edited comment on CAMEL-6945 at 11/8/13 12:40 PM: -------------------------------------------------------------- I think we have a catch-22 situation here. Yeah this ticket about the netty http producer should close the connection if "Connection: close" is in the HTTP header, then that is correct. The missing piece was that the check was already there, but the binding code didn't set the Exhcange.CLOSE header. Though this code sets it as a property on the exchange. Should really be header instead to be consistent. Okay the catch-22 is when you bridge using netty-http, eg {code} 1..n clients --> from netty-http to netty-http --> backend server {code} Then you have N+ clients on the outside that may have "Connection: close" in their http headers. So on the Camel server we have the catch-22 situation, because 1. We want the netty http consumer to close the connection when the request is done (current code does that) 2. We most likely do not want to close connections between Camel and the backend server (to keep these connections alive and fast as possible) So we should have a better way of doing #2 to tell Camel it should disregard the "Connection: close" header but keep it alive between Camel and backend server. eg some way of configuring this better. Today we have the disconnect option people could use to force this {code} from netty-http to netty-http?disconnect=false {code} But I am not sure if setting that disconnect option would have the http header override it, so if there is a http header with "Connection: close" it may take precedence and still close the connection on the netty http producer side. was (Author: davsclaus): I think we have a catch-22 situation here. Yeah this ticket about the netty http producer should close the connection if "Connection: close" is in the HTTP header, then that is correct. The missing piece was that the check was already there, but the binding code didn't set the Exhcange.CLOSE header. Though this code sets it as a property on the exchange. Should really be header instead to be consistent. Okay the catch-22 is when you bridge using netty-http, eg {code} 1..n clients --> from netty-http to netty-http --> backend server {code} Then you have N+ clients on the outside that may have "Connection: close" in their http headers. So on the Camel server we have the catch-22 situation, because 1. We want the netty http consumer to close the connection when the request is done (current code does that) 2. We most likely do not want to close connections between Camel and the backend server (to keep these connections alive and fast as possible) So we should have a better way of doing #2 to tell Camel it should disregard the "Connection: close" header but keep it alive between Camel and backend server. eg some way of configuring this better. Today we have the disconnect option people could use to force this {code} from netty-http to netty-http?disconnect=true {code} > camel-netty-http producer should close the connection when the request > connection header is close > ------------------------------------------------------------------------------------------------- > > Key: CAMEL-6945 > URL: https://issues.apache.org/jira/browse/CAMEL-6945 > Project: Camel > Issue Type: Bug > Components: camel-netty-http > Affects Versions: 2.12.0, 2.12.1 > Reporter: Willem Jiang > Assignee: Willem Jiang > Fix For: 2.12.2, 2.13.0 > > > camel-netty-http producer should close the connection when the request > connection header is close otherwise it will get ClosedChannelException when > the producer try to reuse the connection. -- This message was sent by Atlassian JIRA (v6.1#6144)