mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 20:23:06 +00:00
socket.shutdown abandon unsend buffer now, see issue #371
This commit is contained in:
@@ -119,6 +119,7 @@ struct request_setudp {
|
||||
|
||||
struct request_close {
|
||||
int id;
|
||||
int shutdown;
|
||||
uintptr_t opaque;
|
||||
};
|
||||
|
||||
@@ -787,7 +788,7 @@ close_socket(struct socket_server *ss, struct request_close *request, struct soc
|
||||
if (type != -1)
|
||||
return type;
|
||||
}
|
||||
if (send_buffer_empty(s)) {
|
||||
if (request->shutdown || send_buffer_empty(s)) {
|
||||
force_close(ss,s,result);
|
||||
result->id = id;
|
||||
result->opaque = request->opaque;
|
||||
@@ -1366,6 +1367,17 @@ void
|
||||
socket_server_close(struct socket_server *ss, uintptr_t opaque, int id) {
|
||||
struct request_package request;
|
||||
request.u.close.id = id;
|
||||
request.u.close.shutdown = 0;
|
||||
request.u.close.opaque = opaque;
|
||||
send_request(ss, &request, 'K', sizeof(request.u.close));
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
socket_server_shutdown(struct socket_server *ss, uintptr_t opaque, int id) {
|
||||
struct request_package request;
|
||||
request.u.close.id = id;
|
||||
request.u.close.shutdown = 1;
|
||||
request.u.close.opaque = opaque;
|
||||
send_request(ss, &request, 'K', sizeof(request.u.close));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user