diff options
| author | Artyom Poptsov <poptsov.artyom@gmail.com> | 2013-07-13 11:05:43 +0400 |
|---|---|---|
| committer | Artyom Poptsov <poptsov.artyom@gmail.com> | 2013-07-13 11:05:43 +0400 |
| commit | eff2be35dbcd507f77082e63231477303185034c (patch) | |
| tree | 63c3c3eba6bedd5d24ed2a50583334578188143f /TODO | |
| parent | Improve working with public keys represented as a SSH string. (diff) | |
| download | guile-ssh-eff2be35dbcd507f77082e63231477303185034c.tar.gz | |
Fix GC'ing of SSH objects.
The program doesn't crashes anymore during GC'ing of channels and
keys.
* src/session-type.c (free_session): Mark all related channels as
freed.
(guile_ssh_make_session): Initialize the channels array.
* src/key-type.c (mark_key_smob): Fix smob marking.
* src/channel-type.c (free_channel): Check if the channel has been
already freed along with the related SSH session.
(guile_ssh_make_channel): Store the reference to the channel in
the array of channels related to the SSH session.
* src/channel-type.h: Add is_channel_alive field to channel_data.
* TODO: Add to the repository.
Diffstat (limited to 'TODO')
| -rw-r--r-- | TODO | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -0,0 +1,9 @@ +-*- Mode: Outline -*- + +* Improve GC'ing of SSH channels. + Array of channel references stored in session_data can only grow for + now. Generally it means two things: a) the maximum number of + channels is limited by UINT32_MAX, and b) closed channels won't be + removed from the array. That is, if your program constantly opens + new channels for one session, then at some point you can run into + the problems with making new channels. |
