修正suspend/resume语义实现的若干问题,增加自行构建request/response的header标志

This commit is contained in:
Lu Qiuwen
2018-10-26 20:30:06 +08:00
parent d3d34355ef
commit cf64f01f7f
9 changed files with 104 additions and 35 deletions

View File

@@ -141,9 +141,17 @@ void tfe_stream_suspend(const struct tfe_stream * stream, enum tfe_conn_dir by)
_stream->is_suspended = true;
_stream->suspended_by = by;
fprintf(stderr, "---- tfe-stream-suspend ----, %p, by = %d\n", _stream, by);
/* disable all events */
bufferevent_disable(_stream->conn_upstream->bev, EV_READ | EV_WRITE);
bufferevent_disable(_stream->conn_downstream->bev, EV_READ | EV_WRITE);
int ret = 0;
ret = bufferevent_disable(_stream->conn_upstream->bev, EV_READ | EV_WRITE);
assert(ret == 0);
ret = bufferevent_disable(_stream->conn_downstream->bev, EV_READ | EV_WRITE);
assert(ret == 0);
(void)ret;
}
void tfe_stream_resume(const struct tfe_stream * stream)
@@ -154,6 +162,8 @@ void tfe_stream_resume(const struct tfe_stream * stream)
bufferevent_enable(_stream->conn_upstream->bev, EV_READ | EV_WRITE);
bufferevent_enable(_stream->conn_downstream->bev, EV_READ | EV_WRITE);
assert(_stream->is_suspended == true);
fprintf(stderr, "---- tfe-stream-resume ----, %p\n", _stream);
if (_stream->suspended_by == CONN_DIR_DOWNSTREAM)
{
bufferevent_trigger(_stream->conn_downstream->bev, EV_READ, BEV_OPT_DEFER_CALLBACKS);
@@ -538,6 +548,8 @@ static void __stream_bev_readcb(struct bufferevent * bev, void * arg)
break;
}
fprintf(stderr, "----- action = %d, bev = %p, input bev: %llu\n", action_final, bev, evbuffer_get_length(inbuf));
#if 0
if (evbuffer_get_length(outbuf) >= TFE_CONFIG_OUTPUT_LIMIT_DEFAULT)
{
@@ -640,7 +652,6 @@ static void __stream_bev_eventcb(struct bufferevent * bev, short events, void *
__stream_bev_readcb(bev, arg);
}
// fprintf(stderr, "---- eventcb ----, stream = %p, event = %x, dir = %s\n", _stream, events, __str_dir);
goto __close_connection;
}
@@ -678,6 +689,7 @@ __close_connection:
return;
__call_plugin_close:
fprintf(stderr, "---- eventcb ---- call close, stream = %p, event = %x, dir = %s\n", _stream, events, __str_dir);
call_plugin_close(_stream);
tfe_stream_destory(_stream);
}