Commit df06d085 authored by Vysheng's avatar Vysheng

Some more clear

parent c03d91a5
...@@ -967,6 +967,7 @@ extern char *downloads_directory; ...@@ -967,6 +967,7 @@ extern char *downloads_directory;
extern char *config_directory; extern char *config_directory;
extern char *binlog_file_name; extern char *binlog_file_name;
extern char *lua_file; extern char *lua_file;
extern struct event *term_ev;
void do_clear (int arg_num, struct arg args[], struct in_ev *ev) { void do_clear (int arg_num, struct arg args[], struct in_ev *ev) {
tgl_free_all (); tgl_free_all ();
...@@ -980,6 +981,9 @@ void do_clear (int arg_num, struct arg args[], struct in_ev *ev) { ...@@ -980,6 +981,9 @@ void do_clear (int arg_num, struct arg args[], struct in_ev *ev) {
free (config_directory); free (config_directory);
free (binlog_file_name); free (binlog_file_name);
free (lua_file); free (lua_file);
clear_history ();
event_free (term_ev);
event_base_free (tgl_state.ev_base);
do_halt (0); do_halt (0);
} }
......
...@@ -153,28 +153,28 @@ static void stdin_read_callback_line (evutil_socket_t fd, short what, void *arg) ...@@ -153,28 +153,28 @@ static void stdin_read_callback_line (evutil_socket_t fd, short what, void *arg)
stdin_read_callback_all (2, what, arg); stdin_read_callback_all (2, what, arg);
} }
struct event *term_ev = 0;
void net_loop (int flags, int (*is_end)(void)) { void net_loop (int flags, int (*is_end)(void)) {
delete_stdin_event = 0; delete_stdin_event = 0;
if (verbosity >= E_DEBUG) { if (verbosity >= E_DEBUG) {
logprintf ("Starting netloop\n"); logprintf ("Starting netloop\n");
} }
struct event *ev = 0;
if (flags & 3) { if (flags & 3) {
if (flags & 1) { if (flags & 1) {
ev = event_new (tgl_state.ev_base, 0, EV_READ | EV_PERSIST, stdin_read_callback_char, 0); term_ev = event_new (tgl_state.ev_base, 0, EV_READ | EV_PERSIST, stdin_read_callback_char, 0);
} else { } else {
ev = event_new (tgl_state.ev_base, 0, EV_READ | EV_PERSIST, stdin_read_callback_line, 0); term_ev = event_new (tgl_state.ev_base, 0, EV_READ | EV_PERSIST, stdin_read_callback_line, 0);
} }
event_add (ev, 0); event_add (term_ev, 0);
} }
int last_get_state = time (0); int last_get_state = time (0);
while (!is_end || !is_end ()) { while (!is_end || !is_end ()) {
event_base_loop (tgl_state.ev_base, EVLOOP_ONCE); event_base_loop (tgl_state.ev_base, EVLOOP_ONCE);
if (ev && delete_stdin_event) { if (term_ev && delete_stdin_event) {
event_free (ev); event_free (term_ev);
ev = 0; term_ev = 0;
} }
#ifdef USE_LUA #ifdef USE_LUA
...@@ -202,8 +202,8 @@ void net_loop (int flags, int (*is_end)(void)) { ...@@ -202,8 +202,8 @@ void net_loop (int flags, int (*is_end)(void)) {
} }
} }
if (ev) { if (term_ev) {
event_free (ev); event_free (term_ev);
} }
if (verbosity >= E_DEBUG) { if (verbosity >= E_DEBUG) {
......
...@@ -1443,3 +1443,7 @@ void tgls_free_dc (struct tgl_dc *DC) { ...@@ -1443,3 +1443,7 @@ void tgls_free_dc (struct tgl_dc *DC) {
if (DC->ev) { event_free (DC->ev); } if (DC->ev) { event_free (DC->ev); }
tfree (DC, sizeof (*DC)); tfree (DC, sizeof (*DC));
} }
void tgls_free_pubkey (void) {
RSA_free (pubKey);
}
...@@ -56,4 +56,5 @@ void tgln_insert_msg_id (struct tgl_session *S, long long id); ...@@ -56,4 +56,5 @@ void tgln_insert_msg_id (struct tgl_session *S, long long id);
void tglmp_on_start (void); void tglmp_on_start (void);
void tgl_dc_authorize (struct tgl_dc *DC); void tgl_dc_authorize (struct tgl_dc *DC);
void tgls_free_dc (struct tgl_dc *DC); void tgls_free_dc (struct tgl_dc *DC);
void tgls_free_pubkey (void);
#endif #endif
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include "tree.h" #include "tree.h"
#include "loop.h" #include "loop.h"
#include <openssl/aes.h> #include <openssl/aes.h>
#include <openssl/bn.h>
#include <openssl/sha.h> #include <openssl/sha.h>
#include "queries.h" #include "queries.h"
#include "binlog.h" #include "binlog.h"
...@@ -1882,6 +1883,8 @@ void tgl_free_all (void) { ...@@ -1882,6 +1883,8 @@ void tgl_free_all (void) {
for (i = 0; i <= tgl_state.max_dc_num; i++) if (tgl_state.DC_list[i]) { for (i = 0; i <= tgl_state.max_dc_num; i++) if (tgl_state.DC_list[i]) {
tgls_free_dc (tgl_state.DC_list[i]); tgls_free_dc (tgl_state.DC_list[i]);
} }
BN_CTX_free (tgl_state.BN_ctx);
tgls_free_pubkey ();
} }
int tgl_print_stat (char *s, int len) { int tgl_print_stat (char *s, int len) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment