summaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
authorArtyom Poptsov <poptsov.artyom@gmail.com>2013-07-13 11:05:43 +0400
committerArtyom Poptsov <poptsov.artyom@gmail.com>2013-07-13 11:05:43 +0400
commiteff2be35dbcd507f77082e63231477303185034c (patch)
tree63c3c3eba6bedd5d24ed2a50583334578188143f /TODO
parentImprove working with public keys represented as a SSH string. (diff)
downloadguile-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--TODO9
1 files changed, 9 insertions, 0 deletions
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..58684be
--- /dev/null
+++ b/TODO
@@ -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.