Skip to content

Commit

Permalink
#228: TODO for #116 and #254; several cleanups
Browse files Browse the repository at this point in the history
  • Loading branch information
krizhanovsky committed Sep 12, 2015
1 parent 13814de commit f3fc64d
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 36 deletions.
2 changes: 1 addition & 1 deletion tempesta_db/core/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ __do_close_table(TDB *db)

tdb_htrie_exit(db->hdr);

TDB_LOG("Close table %s\n", db->tbl_name);
TDB_LOG("Close table '%s'\n", db->tbl_name);

kfree(db);
}
Expand Down
4 changes: 1 addition & 3 deletions tempesta_fw/cfg.c
Original file line number Diff line number Diff line change
Expand Up @@ -1500,8 +1500,6 @@ tfw_cfg_stop_mods(struct list_head *mod_list)
{
TfwCfgMod *mod;

TFW_DBG("stopping modules...\n");

MOD_FOR_EACH_REVERSE(mod, mod_list) {
mod_stop(mod);
spec_cleanup(mod->specs);
Expand Down Expand Up @@ -1719,7 +1717,7 @@ tfw_cfg_if_exit(void)
{
TfwCfgMod *mod, *tmp;

TFW_DBG("stopping and unregistering all cfg modules\n");
TFW_DBG("stopping and unregistering all cfg modules...\n");

if (tfw_cfg_mods_are_started)
tfw_cfg_stop_mods(&tfw_cfg_mods);
Expand Down
17 changes: 4 additions & 13 deletions tempesta_fw/server.c
Original file line number Diff line number Diff line change
Expand Up @@ -192,10 +192,9 @@ DEBUG_EXPORT_SYMBOL(tfw_sg_set_sched);
* @cb is called under spin-lock, so can't sleep.
* @cb is considered as updater, so write lock is used.
*/
int
tfw_sg_for_each_srv(int (*cb)(TfwServer *srv))
void
tfw_sg_for_each_srv(void (*cb)(TfwServer *srv))
{
int r = 0;
TfwServer *srv;
TfwSrvGroup *sg;

Expand All @@ -204,21 +203,13 @@ tfw_sg_for_each_srv(int (*cb)(TfwServer *srv))
list_for_each_entry(sg, &sg_list, list) {
write_lock(&sg->lock);

list_for_each_entry(srv, &sg->srv_list, list) {
r = cb(srv);
if (r) {
write_unlock(&sg->lock);
goto out;
}
}
list_for_each_entry(srv, &sg->srv_list, list)
cb(srv);

write_unlock(&sg->lock);
}

out:
write_unlock(&sg_lock);

return r;
}

/**
Expand Down
2 changes: 1 addition & 1 deletion tempesta_fw/server.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ void tfw_sg_add(TfwSrvGroup *sg, TfwServer *srv);
void tfw_sg_del(TfwSrvGroup *sg, TfwServer *srv);
void tfw_sg_update(TfwSrvGroup *sg);
int tfw_sg_set_sched(TfwSrvGroup *sg, const char *sched);
int tfw_sg_for_each_srv(int (*cb)(TfwServer *srv));
void tfw_sg_for_each_srv(void (*cb)(TfwServer *srv));
void tfw_sg_release_all(void);

#endif /* __SERVER_H__ */
8 changes: 8 additions & 0 deletions tempesta_fw/sock_clnt.c
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,14 @@ tfw_listen_sock_stop_all(void)
ss_release(ls->sk);
ls->sk = NULL;
}

/*
* TODO #116, #254
* Now all listening sockets are closed, so no new connection can
* appear. Close all established client connections. After that we
* can safely close server connections since there are no their users
* any more.
*/
}

/*
Expand Down
30 changes: 12 additions & 18 deletions tempesta_fw/sock_srv.c
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ tfw_sock_srv_disconnect(TfwSrvConnection *srv_conn)
* not-yet-established connections in the TfwServer->conn_list.
*/

static int
static void
tfw_sock_srv_connect_srv(TfwServer *srv)
{
TfwSrvConnection *srv_conn;
Expand All @@ -361,35 +361,32 @@ tfw_sock_srv_connect_srv(TfwServer *srv)
if (tfw_sock_srv_connect_try(srv_conn))
__mod_retry_timer(srv_conn);
}

return 0;
}

static int
/**
* There should be no server socket users when the function is called.
*/
static void
tfw_sock_srv_disconnect_srv(TfwServer *srv)
{
TfwSrvConnection *srv_conn;

list_for_each_entry(srv_conn, &srv->conn_list, conn.list) {
local_bh_disable();
list_for_each_entry(srv_conn, &srv->conn_list, conn.list)
tfw_sock_srv_disconnect(srv_conn);
local_bh_enable();
}

return 0;
}

static int
tfw_sock_srv_connect_all(void)
{
return tfw_sg_for_each_srv(tfw_sock_srv_connect_srv);
tfw_sg_for_each_srv(tfw_sock_srv_connect_srv);

return 0;
}

static void
tfw_sock_srv_disconnect_all(void)
{
int r = tfw_sg_for_each_srv(tfw_sock_srv_disconnect_srv);
BUG_ON(r);
tfw_sg_for_each_srv(tfw_sock_srv_disconnect_srv);
}

/*
Expand Down Expand Up @@ -457,7 +454,7 @@ tfw_sock_srv_add_conns(TfwServer *srv, int conns_n)
return 0;
}

static int
static void
tfw_sock_srv_delete_conns(TfwServer *srv)
{
TfwSrvConnection *srv_conn, *tmp;
Expand All @@ -466,15 +463,12 @@ tfw_sock_srv_delete_conns(TfwServer *srv)
tfw_connection_unlink_peer(&srv_conn->conn);
tfw_srv_conn_free(srv_conn);
}

return 0;
}

static void
tfw_sock_srv_delete_all_conns(void)
{
int r = tfw_sg_for_each_srv(tfw_sock_srv_delete_conns);
BUG_ON(r);
tfw_sg_for_each_srv(tfw_sock_srv_delete_conns);
}

/*
Expand Down

0 comments on commit f3fc64d

Please sign in to comment.