On Wed, Oct 10, 2018 at 01:09:17PM +0200, Neels Hofmeyr wrote:
when a telnet vty closes, append all history to $history_path/$program_name.history ok, simple enough.
Yet it adds potentially large I/O to the server process, which would block until the history is written. That might be undesirable...
you cannot do a blocking write. The "history save procedure" would not be different and should be written via non-blocking file writes using the select() loop abstraction.
Could also flush the history to file every time it reaches a given size to make sure of light I/O load.
I don't expect the history of a human user at the VTY session every to reach a size where one would have to worry about that. We're talking about kilobytes here.
I sometimes invoke the vty with 'watch', or otherwise scripted, to keep showing the lchan summary, for example. That would produce a history entry for every single invocation, cause disk I/O and spam the history file. Do we need to enable history explicitly in each vty session? Or a a "no history" command per vty-session?
I would say explicit "no history"
A client-side impl is much simpler from that angle. It just keeps so much cruft out of the server process, and "all we need" is a readline() that knows vty special characters.
ACK. And we already have a [special] telnet client for nanoBTSs around on git.osmocom.org in http://git.osmocom.org/libtelnet/
I would currently argue more in favor of a client based solution