l_dbus_remove_watch(dbus_get_bus(),
join_pending->disc_watch);
- acceptor_cancel(&mesh);
-
mesh_agent_remove(join_pending->agent);
if (failed) {
mgmt_unref(mgmt_mesh);
if (join_pending) {
- /* The Join() call failed since it has not been completed */
- reply = dbus_error(join_pending->msg, MESH_ERROR_FAILED,
+
+ if (join_pending->msg) {
+ reply = dbus_error(join_pending->msg, MESH_ERROR_FAILED,
"Failed. Exiting");
- l_dbus_send(dbus_get_bus(), reply);
+ l_dbus_send(dbus_get_bus(), reply);
+ }
+ acceptor_cancel(&mesh);
free_pending_join_call(true);
}
if (join_pending->msg)
l_dbus_message_unref(join_pending->msg);
+ acceptor_cancel(&mesh);
join_pending->disc_watch = 0;
free_pending_join_call(true);