mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-25 04:33:05 +00:00
see issue #615
This commit is contained in:
@@ -89,7 +89,7 @@ skynet_socket_poll() {
|
|||||||
case SOCKET_OPEN:
|
case SOCKET_OPEN:
|
||||||
forward_message(SKYNET_SOCKET_TYPE_CONNECT, true, &result);
|
forward_message(SKYNET_SOCKET_TYPE_CONNECT, true, &result);
|
||||||
break;
|
break;
|
||||||
case SOCKET_ERROR:
|
case SOCKET_ERR:
|
||||||
forward_message(SKYNET_SOCKET_TYPE_ERROR, true, &result);
|
forward_message(SKYNET_SOCKET_TYPE_ERROR, true, &result);
|
||||||
break;
|
break;
|
||||||
case SOCKET_ACCEPT:
|
case SOCKET_ACCEPT:
|
||||||
|
|||||||
@@ -469,7 +469,7 @@ open_socket(struct socket_server *ss, struct request_open * request, struct sock
|
|||||||
_failed:
|
_failed:
|
||||||
freeaddrinfo( ai_list );
|
freeaddrinfo( ai_list );
|
||||||
ss->slot[HASH_ID(id)].type = SOCKET_TYPE_INVALID;
|
ss->slot[HASH_ID(id)].type = SOCKET_TYPE_INVALID;
|
||||||
return SOCKET_ERROR;
|
return SOCKET_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@@ -550,7 +550,7 @@ send_list_udp(struct socket_server *ss, struct socket *s, struct wb_list *list,
|
|||||||
result->ud = 0;
|
result->ud = 0;
|
||||||
result->data = NULL;
|
result->data = NULL;
|
||||||
|
|
||||||
return SOCKET_ERROR;
|
return SOCKET_ERR;
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -778,7 +778,7 @@ _failed:
|
|||||||
result->data = "reach skynet socket number limit";
|
result->data = "reach skynet socket number limit";
|
||||||
ss->slot[HASH_ID(id)].type = SOCKET_TYPE_INVALID;
|
ss->slot[HASH_ID(id)].type = SOCKET_TYPE_INVALID;
|
||||||
|
|
||||||
return SOCKET_ERROR;
|
return SOCKET_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@@ -817,7 +817,7 @@ bind_socket(struct socket_server *ss, struct request_bind *request, struct socke
|
|||||||
struct socket *s = new_fd(ss, id, request->fd, PROTOCOL_TCP, request->opaque, true);
|
struct socket *s = new_fd(ss, id, request->fd, PROTOCOL_TCP, request->opaque, true);
|
||||||
if (s == NULL) {
|
if (s == NULL) {
|
||||||
result->data = "reach skynet socket number limit";
|
result->data = "reach skynet socket number limit";
|
||||||
return SOCKET_ERROR;
|
return SOCKET_ERR;
|
||||||
}
|
}
|
||||||
sp_nonblocking(request->fd);
|
sp_nonblocking(request->fd);
|
||||||
s->type = SOCKET_TYPE_BIND;
|
s->type = SOCKET_TYPE_BIND;
|
||||||
@@ -835,13 +835,13 @@ start_socket(struct socket_server *ss, struct request_start *request, struct soc
|
|||||||
struct socket *s = &ss->slot[HASH_ID(id)];
|
struct socket *s = &ss->slot[HASH_ID(id)];
|
||||||
if (s->type == SOCKET_TYPE_INVALID || s->id !=id) {
|
if (s->type == SOCKET_TYPE_INVALID || s->id !=id) {
|
||||||
result->data = "invalid socket";
|
result->data = "invalid socket";
|
||||||
return SOCKET_ERROR;
|
return SOCKET_ERR;
|
||||||
}
|
}
|
||||||
if (s->type == SOCKET_TYPE_PACCEPT || s->type == SOCKET_TYPE_PLISTEN) {
|
if (s->type == SOCKET_TYPE_PACCEPT || s->type == SOCKET_TYPE_PLISTEN) {
|
||||||
if (sp_add(ss->event_fd, s->fd, s)) {
|
if (sp_add(ss->event_fd, s->fd, s)) {
|
||||||
force_close(ss, s, result);
|
force_close(ss, s, result);
|
||||||
result->data = strerror(errno);
|
result->data = strerror(errno);
|
||||||
return SOCKET_ERROR;
|
return SOCKET_ERR;
|
||||||
}
|
}
|
||||||
s->type = (s->type == SOCKET_TYPE_PACCEPT) ? SOCKET_TYPE_CONNECTED : SOCKET_TYPE_LISTEN;
|
s->type = (s->type == SOCKET_TYPE_PACCEPT) ? SOCKET_TYPE_CONNECTED : SOCKET_TYPE_LISTEN;
|
||||||
s->opaque = request->opaque;
|
s->opaque = request->opaque;
|
||||||
@@ -932,7 +932,7 @@ set_udp_address(struct socket_server *ss, struct request_setudp *request, struct
|
|||||||
result->ud = 0;
|
result->ud = 0;
|
||||||
result->data = "protocol mismatch";
|
result->data = "protocol mismatch";
|
||||||
|
|
||||||
return SOCKET_ERROR;
|
return SOCKET_ERR;
|
||||||
}
|
}
|
||||||
if (type == PROTOCOL_UDP) {
|
if (type == PROTOCOL_UDP) {
|
||||||
memcpy(s->p.udp_address, request->address, 1+2+4); // 1 type, 2 port, 4 ipv4
|
memcpy(s->p.udp_address, request->address, 1+2+4); // 1 type, 2 port, 4 ipv4
|
||||||
@@ -1013,7 +1013,7 @@ forward_message_tcp(struct socket_server *ss, struct socket *s, struct socket_me
|
|||||||
// close when error
|
// close when error
|
||||||
force_close(ss, s, result);
|
force_close(ss, s, result);
|
||||||
result->data = strerror(errno);
|
result->data = strerror(errno);
|
||||||
return SOCKET_ERROR;
|
return SOCKET_ERR;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -1074,7 +1074,7 @@ forward_message_udp(struct socket_server *ss, struct socket *s, struct socket_me
|
|||||||
// close when error
|
// close when error
|
||||||
force_close(ss, s, result);
|
force_close(ss, s, result);
|
||||||
result->data = strerror(errno);
|
result->data = strerror(errno);
|
||||||
return SOCKET_ERROR;
|
return SOCKET_ERR;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -1111,7 +1111,7 @@ report_connect(struct socket_server *ss, struct socket *s, struct socket_message
|
|||||||
result->data = strerror(error);
|
result->data = strerror(error);
|
||||||
else
|
else
|
||||||
result->data = strerror(errno);
|
result->data = strerror(errno);
|
||||||
return SOCKET_ERROR;
|
return SOCKET_ERR;
|
||||||
} else {
|
} else {
|
||||||
s->type = SOCKET_TYPE_CONNECTED;
|
s->type = SOCKET_TYPE_CONNECTED;
|
||||||
result->opaque = s->opaque;
|
result->opaque = s->opaque;
|
||||||
@@ -1182,7 +1182,7 @@ report_accept(struct socket_server *ss, struct socket *s, struct socket_message
|
|||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
clear_closed_event(struct socket_server *ss, struct socket_message * result, int type) {
|
clear_closed_event(struct socket_server *ss, struct socket_message * result, int type) {
|
||||||
if (type == SOCKET_CLOSE || type == SOCKET_ERROR) {
|
if (type == SOCKET_CLOSE || type == SOCKET_ERR) {
|
||||||
int id = result->id;
|
int id = result->id;
|
||||||
int i;
|
int i;
|
||||||
for (i=ss->event_index; i<ss->event_n; i++) {
|
for (i=ss->event_index; i<ss->event_n; i++) {
|
||||||
@@ -1240,7 +1240,7 @@ socket_server_poll(struct socket_server *ss, struct socket_message * result, int
|
|||||||
if (ok > 0) {
|
if (ok > 0) {
|
||||||
return SOCKET_ACCEPT;
|
return SOCKET_ACCEPT;
|
||||||
} if (ok < 0 ) {
|
} if (ok < 0 ) {
|
||||||
return SOCKET_ERROR;
|
return SOCKET_ERR;
|
||||||
}
|
}
|
||||||
// when ok == 0, retry
|
// when ok == 0, retry
|
||||||
break;
|
break;
|
||||||
@@ -1261,7 +1261,7 @@ socket_server_poll(struct socket_server *ss, struct socket_message * result, int
|
|||||||
return SOCKET_UDP;
|
return SOCKET_UDP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (e->write && type != SOCKET_CLOSE && type != SOCKET_ERROR) {
|
if (e->write && type != SOCKET_CLOSE && type != SOCKET_ERR) {
|
||||||
// Try to dispatch write message next step if write flag set.
|
// Try to dispatch write message next step if write flag set.
|
||||||
e->read = false;
|
e->read = false;
|
||||||
--ss->event_index;
|
--ss->event_index;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
#define SOCKET_CLOSE 1
|
#define SOCKET_CLOSE 1
|
||||||
#define SOCKET_OPEN 2
|
#define SOCKET_OPEN 2
|
||||||
#define SOCKET_ACCEPT 3
|
#define SOCKET_ACCEPT 3
|
||||||
#define SOCKET_ERROR 4
|
#define SOCKET_ERR 4
|
||||||
#define SOCKET_EXIT 5
|
#define SOCKET_EXIT 5
|
||||||
#define SOCKET_UDP 6
|
#define SOCKET_UDP 6
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user