ChunkedWriteHandler没有正确处理100继续响应以发送所有块

时间:2013-11-13 21:40:16

标签: java netty nio

我使用netty 4.0.9(或12)HttpUploadClient方式发送大型(> 8K)帖子请求。 但是,在第一个块发送到服务器后,服务器发回“100 continue”。 ChunkedWriteHandler没有处理“100 Continue”来发送剩余的块。 相反,100继续传递到顶部处理程序的上游,无法处理。 如何修改ChunkedWriteHandler来处理“100 Continue”响应 继续发送剩余的块以完成大的帖子请求?

2 个答案:

答案 0 :(得分:0)

ChunkedWriteHandler是一个与协议无关的处理程序,因此您不应添加任何特定于HTTP的内容。

相反,您可以更新管道中的最后一个处理程序,以便它理解100-Continue消息。在编写任何块之前,最好先等待100-Continue响应。

或者,您可以从请求中删除Expect: 100-continue标头,然后HTTP服务器将不会发送此类响应。

答案 1 :(得分:0)

对于AbstractMemoryHttpData.java getChunk()函数,此错误在4.0.15中得到修复。

AbstractByteBuf.java中的异常是IllegalReferenceCountException。

但是,在ChunkedWriteHandler.java doFlush()中,有catch(final Throwable t), 这可能会阻止任何未来的其他异常传播,除非明确检查它。