樽中酒不空
分类: C/C++
2014-05-27 14:14:09
sxcong2014-06-13 14:39:44
xsoda:我觉得该关闭连接的地方都应该用
int r = uv_shutdown(req, stream, callback);
if (r) {
free(req);
uv_close(handle, callback);
}
然后在uv_shutdown的callback中再调用uv_close;
理论上应该这样,一般主动断开socket时uv_shutdown没问题。
不过在对方先断开socket时,本地执行uv_shutdown会异常,跟踪代码能发现:
src\unix\stream.c:
int uv_shutdown(uv_shutdown_t* req, uv_stream_t* stream, uv_shutdown_cb cb) {
assert((stream->type == UV_TCP || stream->type == UV_NAMED_PIPE) &&
"uv_shutdown (unix) only supports uv_handle_t right now");
if (!(stream->flags & UV_STRE