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
ab950ff5
Commit
ab950ff5
authored
Mar 25, 2016
by
philip
Browse files
Removed useless checks before calling luaL_unref
parent
426e805c
Changes
1
Hide whitespace changes
Inline
Side-by-side
app/modules/mqtt.c
View file @
ab950ff5
...
@@ -125,10 +125,8 @@ static void mqtt_socket_disconnected(void *arg) // tcp only
...
@@ -125,10 +125,8 @@ static void mqtt_socket_disconnected(void *arg) // tcp only
mud
->
pesp_conn
=
NULL
;
mud
->
pesp_conn
=
NULL
;
}
}
if
(
mud
->
self_ref
!=
LUA_NOREF
){
// TODO: should we unref the client and delete it?
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
self_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
self_ref
);
mud
->
self_ref
=
LUA_NOREF
;
// unref this, and the mqtt.socket userdata will delete it self
mud
->
self_ref
=
LUA_NOREF
;
// unref this, and the mqtt.socket userdata will delete it self
}
}
}
if
(
call_back
){
if
(
call_back
){
...
@@ -832,35 +830,21 @@ static int mqtt_delete( lua_State* L )
...
@@ -832,35 +830,21 @@ static int mqtt_delete( lua_State* L )
// -------
// -------
// free (unref) callback ref
// free (unref) callback ref
if
(
LUA_NOREF
!=
mud
->
cb_connect_ref
){
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_connect_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_connect_ref
);
mud
->
cb_connect_ref
=
LUA_NOREF
;
mud
->
cb_connect_ref
=
LUA_NOREF
;
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_connect_fail_ref
);
}
mud
->
cb_connect_fail_ref
=
LUA_NOREF
;
if
(
LUA_NOREF
!=
mud
->
cb_connect_fail_ref
){
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_disconnect_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_connect_fail_ref
);
mud
->
cb_disconnect_ref
=
LUA_NOREF
;
mud
->
cb_connect_fail_ref
=
LUA_NOREF
;
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_message_ref
);
}
mud
->
cb_message_ref
=
LUA_NOREF
;
if
(
LUA_NOREF
!=
mud
->
cb_disconnect_ref
){
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_suback_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_disconnect_ref
);
mud
->
cb_suback_ref
=
LUA_NOREF
;
mud
->
cb_disconnect_ref
=
LUA_NOREF
;
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_puback_ref
);
}
mud
->
cb_puback_ref
=
LUA_NOREF
;
if
(
LUA_NOREF
!=
mud
->
cb_message_ref
){
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_message_ref
);
mud
->
cb_message_ref
=
LUA_NOREF
;
}
if
(
LUA_NOREF
!=
mud
->
cb_suback_ref
){
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_suback_ref
);
mud
->
cb_suback_ref
=
LUA_NOREF
;
}
if
(
LUA_NOREF
!=
mud
->
cb_puback_ref
){
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_puback_ref
);
mud
->
cb_puback_ref
=
LUA_NOREF
;
}
lua_gc
(
L
,
LUA_GCSTOP
,
0
);
lua_gc
(
L
,
LUA_GCSTOP
,
0
);
if
(
LUA_NOREF
!=
mud
->
self_ref
){
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
self_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
self_ref
);
mud
->
self_ref
=
LUA_NOREF
;
mud
->
self_ref
=
LUA_NOREF
;
}
lua_gc
(
L
,
LUA_GCRESTART
,
0
);
lua_gc
(
L
,
LUA_GCRESTART
,
0
);
NODE_DBG
(
"leave mqtt_delete.
\n
"
);
NODE_DBG
(
"leave mqtt_delete.
\n
"
);
return
0
;
return
0
;
...
@@ -1069,8 +1053,7 @@ static int mqtt_socket_connect( lua_State* L )
...
@@ -1069,8 +1053,7 @@ static int mqtt_socket_connect( lua_State* L )
// call back function when a connection is obtained, tcp only
// call back function when a connection is obtained, tcp only
if
((
stack
<=
top
)
&&
(
lua_type
(
L
,
stack
)
==
LUA_TFUNCTION
||
lua_type
(
L
,
stack
)
==
LUA_TLIGHTFUNCTION
)){
if
((
stack
<=
top
)
&&
(
lua_type
(
L
,
stack
)
==
LUA_TFUNCTION
||
lua_type
(
L
,
stack
)
==
LUA_TLIGHTFUNCTION
)){
lua_pushvalue
(
L
,
stack
);
// copy argument (func) to the top of stack
lua_pushvalue
(
L
,
stack
);
// copy argument (func) to the top of stack
if
(
mud
->
cb_connect_ref
!=
LUA_NOREF
)
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_connect_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_connect_ref
);
mud
->
cb_connect_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
mud
->
cb_connect_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
stack
++
;
stack
++
;
}
}
...
@@ -1078,15 +1061,13 @@ static int mqtt_socket_connect( lua_State* L )
...
@@ -1078,15 +1061,13 @@ static int mqtt_socket_connect( lua_State* L )
// call back function when a connection fails
// call back function when a connection fails
if
((
stack
<=
top
)
&&
(
lua_type
(
L
,
stack
)
==
LUA_TFUNCTION
||
lua_type
(
L
,
stack
)
==
LUA_TLIGHTFUNCTION
)){
if
((
stack
<=
top
)
&&
(
lua_type
(
L
,
stack
)
==
LUA_TFUNCTION
||
lua_type
(
L
,
stack
)
==
LUA_TLIGHTFUNCTION
)){
lua_pushvalue
(
L
,
stack
);
// copy argument (func) to the top of stack
lua_pushvalue
(
L
,
stack
);
// copy argument (func) to the top of stack
if
(
mud
->
cb_connect_fail_ref
!=
LUA_NOREF
)
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_connect_fail_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_connect_fail_ref
);
mud
->
cb_connect_fail_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
mud
->
cb_connect_fail_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
stack
++
;
stack
++
;
}
}
lua_pushvalue
(
L
,
1
);
// copy userdata to the top of stack
lua_pushvalue
(
L
,
1
);
// copy userdata to the top of stack
if
(
mud
->
self_ref
!=
LUA_NOREF
)
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
self_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
self_ref
);
mud
->
self_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
mud
->
self_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
espconn_status
=
espconn_regist_connectcb
(
pesp_conn
,
mqtt_socket_connected
);
espconn_status
=
espconn_regist_connectcb
(
pesp_conn
,
mqtt_socket_connected
);
...
@@ -1191,16 +1172,13 @@ static int mqtt_socket_on( lua_State* L )
...
@@ -1191,16 +1172,13 @@ static int mqtt_socket_on( lua_State* L )
lua_pushvalue
(
L
,
3
);
// copy argument (func) to the top of stack
lua_pushvalue
(
L
,
3
);
// copy argument (func) to the top of stack
if
(
sl
==
7
&&
c_strcmp
(
method
,
"connect"
)
==
0
){
if
(
sl
==
7
&&
c_strcmp
(
method
,
"connect"
)
==
0
){
if
(
mud
->
cb_connect_ref
!=
LUA_NOREF
)
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_connect_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_connect_ref
);
mud
->
cb_connect_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
mud
->
cb_connect_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
}
else
if
(
sl
==
7
&&
c_strcmp
(
method
,
"offline"
)
==
0
){
}
else
if
(
sl
==
7
&&
c_strcmp
(
method
,
"offline"
)
==
0
){
if
(
mud
->
cb_disconnect_ref
!=
LUA_NOREF
)
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_disconnect_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_disconnect_ref
);
mud
->
cb_disconnect_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
mud
->
cb_disconnect_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
}
else
if
(
sl
==
7
&&
c_strcmp
(
method
,
"message"
)
==
0
){
}
else
if
(
sl
==
7
&&
c_strcmp
(
method
,
"message"
)
==
0
){
if
(
mud
->
cb_message_ref
!=
LUA_NOREF
)
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_message_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_message_ref
);
mud
->
cb_message_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
mud
->
cb_message_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
}
else
{
}
else
{
lua_pop
(
L
,
1
);
lua_pop
(
L
,
1
);
...
@@ -1298,8 +1276,7 @@ static int mqtt_socket_unsubscribe( lua_State* L ) {
...
@@ -1298,8 +1276,7 @@ static int mqtt_socket_unsubscribe( lua_State* L ) {
if
(
lua_type
(
L
,
stack
)
==
LUA_TFUNCTION
||
lua_type
(
L
,
stack
)
==
LUA_TLIGHTFUNCTION
)
{
// TODO: this will overwrite the previous one.
if
(
lua_type
(
L
,
stack
)
==
LUA_TFUNCTION
||
lua_type
(
L
,
stack
)
==
LUA_TLIGHTFUNCTION
)
{
// TODO: this will overwrite the previous one.
lua_pushvalue
(
L
,
stack
);
// copy argument (func) to the top of stack
lua_pushvalue
(
L
,
stack
);
// copy argument (func) to the top of stack
if
(
mud
->
cb_unsuback_ref
!=
LUA_NOREF
)
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_unsuback_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_unsuback_ref
);
mud
->
cb_unsuback_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
mud
->
cb_unsuback_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
}
}
...
@@ -1414,8 +1391,7 @@ static int mqtt_socket_subscribe( lua_State* L ) {
...
@@ -1414,8 +1391,7 @@ static int mqtt_socket_subscribe( lua_State* L ) {
if
(
lua_type
(
L
,
stack
)
==
LUA_TFUNCTION
||
lua_type
(
L
,
stack
)
==
LUA_TLIGHTFUNCTION
)
{
// TODO: this will overwrite the previous one.
if
(
lua_type
(
L
,
stack
)
==
LUA_TFUNCTION
||
lua_type
(
L
,
stack
)
==
LUA_TLIGHTFUNCTION
)
{
// TODO: this will overwrite the previous one.
lua_pushvalue
(
L
,
stack
);
// copy argument (func) to the top of stack
lua_pushvalue
(
L
,
stack
);
// copy argument (func) to the top of stack
if
(
mud
->
cb_suback_ref
!=
LUA_NOREF
)
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_suback_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_suback_ref
);
mud
->
cb_suback_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
mud
->
cb_suback_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
}
}
...
@@ -1490,8 +1466,7 @@ static int mqtt_socket_publish( lua_State* L )
...
@@ -1490,8 +1466,7 @@ static int mqtt_socket_publish( lua_State* L )
if
(
lua_type
(
L
,
stack
)
==
LUA_TFUNCTION
||
lua_type
(
L
,
stack
)
==
LUA_TLIGHTFUNCTION
){
if
(
lua_type
(
L
,
stack
)
==
LUA_TFUNCTION
||
lua_type
(
L
,
stack
)
==
LUA_TLIGHTFUNCTION
){
lua_pushvalue
(
L
,
stack
);
// copy argument (func) to the top of stack
lua_pushvalue
(
L
,
stack
);
// copy argument (func) to the top of stack
if
(
mud
->
cb_puback_ref
!=
LUA_NOREF
)
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_puback_ref
);
luaL_unref
(
L
,
LUA_REGISTRYINDEX
,
mud
->
cb_puback_ref
);
mud
->
cb_puback_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
mud
->
cb_puback_ref
=
luaL_ref
(
L
,
LUA_REGISTRYINDEX
);
}
}
...
...
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