projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix reference count bug leading to memory corruption on duplicate deletions.
[silc.git]
/
lib
/
silcclient
/
client.c
diff --git
a/lib/silcclient/client.c
b/lib/silcclient/client.c
index 7811bfa131963d5947f7e73c006f771cede605db..3ab7ba17b4aa96fc872496dce38c17ae078227d7 100644
(file)
--- a/
lib/silcclient/client.c
+++ b/
lib/silcclient/client.c
@@
-55,7
+55,7
@@
static void silc_client_connection_finished(SilcFSMThread fsm,
SilcClient client = silc_fsm_get_state_context(fsm);
/* Signal client that we have finished */
SilcClient client = silc_fsm_get_state_context(fsm);
/* Signal client that we have finished */
- silc_atomic_sub_int
16
(&client->internal->conns, 1);
+ silc_atomic_sub_int
32
(&client->internal->conns, 1);
client->internal->connection_closed = TRUE;
SILC_FSM_EVENT_SIGNAL(&client->internal->wait_event);
client->internal->connection_closed = TRUE;
SILC_FSM_EVENT_SIGNAL(&client->internal->wait_event);
@@
-529,7
+529,7
@@
SILC_FSM_STATE(silc_client_st_run)
/* A connection finished */
SILC_LOG_DEBUG(("Event: connection closed"));
client->internal->connection_closed = FALSE;
/* A connection finished */
SILC_LOG_DEBUG(("Event: connection closed"));
client->internal->connection_closed = FALSE;
- if (silc_atomic_get_int
16
(&client->internal->conns) == 0 &&
+ if (silc_atomic_get_int
32
(&client->internal->conns) == 0 &&
client->internal->stop)
SILC_FSM_EVENT_SIGNAL(&client->internal->wait_event);
return SILC_FSM_CONTINUE;
client->internal->stop)
SILC_FSM_EVENT_SIGNAL(&client->internal->wait_event);
return SILC_FSM_CONTINUE;
@@
-538,7
+538,7
@@
SILC_FSM_STATE(silc_client_st_run)
if (client->internal->stop) {
/* Stop client libarry. If we have running connections, wait until
they finish first. */
if (client->internal->stop) {
/* Stop client libarry. If we have running connections, wait until
they finish first. */
- if (silc_atomic_get_int
16
(&client->internal->conns) == 0) {
+ if (silc_atomic_get_int
32
(&client->internal->conns) == 0) {
SILC_LOG_DEBUG(("Event: stop"));
silc_fsm_next(fsm, silc_client_st_stop);
}
SILC_LOG_DEBUG(("Event: stop"));
silc_fsm_next(fsm, silc_client_st_stop);
}
@@
-674,7
+674,7
@@
silc_client_add_connection(SilcClient client,
silc_fsm_start(thread, silc_client_connection_st_start);
SILC_LOG_DEBUG(("New connection %p", conn));
silc_fsm_start(thread, silc_client_connection_st_start);
SILC_LOG_DEBUG(("New connection %p", conn));
- silc_atomic_add_int
16
(&client->internal->conns, 1);
+ silc_atomic_add_int
32
(&client->internal->conns, 1);
return conn;
}
return conn;
}
@@
-938,7
+938,7
@@
SilcClient silc_client_alloc(SilcClientOperations *ops,
nickname_format[sizeof(new_client->internal->
params->nickname_format) - 1] = 0;
nickname_format[sizeof(new_client->internal->
params->nickname_format) - 1] = 0;
- silc_atomic_init
16
(&new_client->internal->conns, 0);
+ silc_atomic_init
32
(&new_client->internal->conns, 0);
return new_client;
}
return new_client;
}
@@
-966,7
+966,7
@@
void silc_client_free(SilcClient client)
silc_dlist_uninit(client->internal->ftp_sessions);
if (client->internal->lock)
silc_mutex_free(client->internal->lock);
silc_dlist_uninit(client->internal->ftp_sessions);
if (client->internal->lock)
silc_mutex_free(client->internal->lock);
- silc_atomic_uninit
16
(&client->internal->conns);
+ silc_atomic_uninit
32
(&client->internal->conns);
silc_free(client->username);
silc_free(client->hostname);
silc_free(client->realname);
silc_free(client->username);
silc_free(client->hostname);
silc_free(client->realname);