修正由于HTTP流式构建应答时,由于真实应答晚于构建应答到达触发的问题
* 原实现在真实应答晚于构建应答到达时,仍然触发流式TCP写操作; * 现修正为该情况时,直接发送完整的构建应答而不是流式写。
This commit is contained in:
@@ -87,9 +87,15 @@ static int __write_http_half_to_line(const struct tfe_stream * stream,
|
||||
* and has been call body_begin, construct the header */
|
||||
if (hf_private->evbuf_body != NULL && hf_private->write_ctx == NULL)
|
||||
{
|
||||
/* Alloc stream write ctx */
|
||||
hf_private->write_ctx = tfe_stream_write_frag_start(stream, dir);
|
||||
if (unlikely(hf_private->write_ctx == NULL)) return -1;
|
||||
printf("frag write start, stream = %p, hf_private = %p\n", stream, hf_private);
|
||||
|
||||
/* Still need to send data(not call body_end()), need to write frag start
|
||||
* Otherwise, means the body is ready, send out directly without frag */
|
||||
if(hf_private->message_status < STATUS_COMPLETE)
|
||||
{
|
||||
hf_private->write_ctx = tfe_stream_write_frag_start(stream, dir);
|
||||
assert(hf_private->write_ctx != NULL);
|
||||
}
|
||||
|
||||
ret = __write_http_half(hf_private, stream, dir);
|
||||
if (unlikely(ret < 0)) return ret;
|
||||
|
||||
Reference in New Issue
Block a user