Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
412db2e3
Commit
412db2e3
authored
Aug 14, 2017
by
devsaurus
Browse files
propagate error code for close
parent
40e0be29
Changes
1
Show whitespace changes
Inline
Side-by-side
components/modules/net.c
View file @
412db2e3
...
@@ -343,13 +343,17 @@ static void lnet_netconn_callback(struct netconn *netconn, enum netconn_evt evt,
...
@@ -343,13 +343,17 @@ static void lnet_netconn_callback(struct netconn *netconn, enum netconn_evt evt,
#include "lwip/priv/api_msg.h"
#include "lwip/priv/api_msg.h"
#define NETCONN_DELETE(conn) \
#define NETCONN_DELETE(conn) \
if (netconn_delete(conn) == ERR_OK) netconn_free(conn);
if (netconn_delete(conn) == ERR_OK) netconn_free(conn);
#define NETCONN_CLOSE(conn) netconn_close_wa(conn);
#define NETCONN_CLOSE(conn) netconn_close_wa(conn)
static void netconn_close_wa(struct netconn *conn) {
static err_t netconn_close_wa(struct netconn *conn) {
if (netconn_close(conn) != ERR_OK) {
err_t err = netconn_close(conn);
NETCONN_DELETE(conn);
if (err == ERR_OK) {
} else {
err = netconn_delete(conn);
if (err == ERR_OK) {
netconn_free(conn);
netconn_free(conn);
}
}
}
return err;
}
}
...
@@ -477,11 +481,11 @@ int net_listen( lua_State *L ) {
...
@@ -477,11 +481,11 @@ int net_listen( lua_State *L ) {
ud->closing = true;
ud->closing = true;
switch (ud->type) {
switch (ud->type) {
case TYPE_TCP_SERVER:
case TYPE_TCP_SERVER:
NETCONN_CLOSE(ud->netconn)
;
if (
NETCONN_CLOSE(ud->netconn)
== ERR_OK)
ud->netconn = NULL;
ud->netconn = NULL;
break;
break;
case TYPE_UDP_SOCKET:
case TYPE_UDP_SOCKET:
NETCONN_CLOSE(ud->netconn)
;
if (
NETCONN_CLOSE(ud->netconn)
== ERR_OK)
ud->netconn = NULL;
ud->netconn = NULL;
break;
break;
default: break;
default: break;
...
@@ -538,7 +542,7 @@ int net_connect( lua_State *L ) {
...
@@ -538,7 +542,7 @@ int net_connect( lua_State *L ) {
ud->self_ref = LUA_NOREF;
ud->self_ref = LUA_NOREF;
}
}
ud->closing = true;
ud->closing = true;
NETCONN_CLOSE(ud->netconn)
;
if (
NETCONN_CLOSE(ud->netconn)
== ERR_OK)
ud->netconn = NULL;
ud->netconn = NULL;
return lwip_lua_checkerr(L, err);
return lwip_lua_checkerr(L, err);
}
}
...
@@ -620,7 +624,7 @@ int net_send( lua_State *L ) {
...
@@ -620,7 +624,7 @@ int net_send( lua_State *L ) {
err_t err = netconn_bind(ud->netconn, IP_ADDR_ANY, 0);
err_t err = netconn_bind(ud->netconn, IP_ADDR_ANY, 0);
if (err != ERR_OK) {
if (err != ERR_OK) {
ud->closing = true;
ud->closing = true;
NETCONN_CLOSE(ud->netconn)
;
if (
NETCONN_CLOSE(ud->netconn)
== ERR_OK)
ud->netconn = NULL;
ud->netconn = NULL;
return lwip_lua_checkerr(L, err);
return lwip_lua_checkerr(L, err);
}
}
...
@@ -786,6 +790,7 @@ int net_getaddr( lua_State *L ) {
...
@@ -786,6 +790,7 @@ int net_getaddr( lua_State *L ) {
// Lua: client/server/socket:close()
// Lua: client/server/socket:close()
int net_close( lua_State *L ) {
int net_close( lua_State *L ) {
err_t err = ERR_OK;
lnet_userdata *ud = net_get_udata(L);
lnet_userdata *ud = net_get_udata(L);
if (!ud) return luaL_error(L, "invalid user data");
if (!ud) return luaL_error(L, "invalid user data");
if (ud->netconn) {
if (ud->netconn) {
...
@@ -794,7 +799,8 @@ int net_close( lua_State *L ) {
...
@@ -794,7 +799,8 @@ int net_close( lua_State *L ) {
case TYPE_TCP_SERVER:
case TYPE_TCP_SERVER:
case TYPE_UDP_SOCKET:
case TYPE_UDP_SOCKET:
ud->closing = true;
ud->closing = true;
NETCONN_CLOSE(ud->netconn);
err = NETCONN_CLOSE(ud->netconn);
if (err == ERR_OK)
ud->netconn = NULL;
ud->netconn = NULL;
break;
break;
default: break;
default: break;
...
@@ -809,7 +815,7 @@ int net_close( lua_State *L ) {
...
@@ -809,7 +815,7 @@ int net_close( lua_State *L ) {
ud->self_ref = LUA_NOREF;
ud->self_ref = LUA_NOREF;
lua_gc(L, LUA_GCRESTART, 0);
lua_gc(L, LUA_GCRESTART, 0);
}
}
return
0
;
return
lwip_lua_checkerr(L, err)
;
}
}
int net_delete( lua_State *L ) {
int net_delete( lua_State *L ) {
...
@@ -821,7 +827,7 @@ int net_delete( lua_State *L ) {
...
@@ -821,7 +827,7 @@ int net_delete( lua_State *L ) {
case TYPE_TCP_SERVER:
case TYPE_TCP_SERVER:
case TYPE_UDP_SOCKET:
case TYPE_UDP_SOCKET:
ud->closing = true;
ud->closing = true;
NETCONN_
CLOS
E(ud->netconn);
NETCONN_
DELET
E(ud->netconn);
ud->netconn = NULL;
ud->netconn = NULL;
break;
break;
default: break;
default: break;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment