SSH X転送設定のメニュー表示
とりあえずソースを見た感じ:
転送設定は、INIから読んだ設定をそのまま持ってるメモリ領域(1)と、接続に使うために分解したあとのメモリ領域(2)があって、UIでの設定は(2)を編集しています。
SSH切断時には(2)の設定を初期化するので、TCP切断後にウィンドウを閉じない設定をしていて切断後にUIで設定しに行くと、空の状態になります。
接続時には改めて(1)から(2)を生成し直すので、見えなくなった設定が復活したように見えそうです。
呼び出し構造メモ FWDUI_load_settings() { copy pvar->settings.DefaultForwarding to pvar->fwd_state.requests[] call FWDUI_save_settings() } FWDUI_load_settings() is called by TTXReadINIFile(), TTXOpenTCP(), TTXParseParam() and read_ssh_options_from_user_file() FWDUI_save_settings() { copy pvar->fwd_state.requests[] to pvar->settings.DefaultForwarding } FWDUI_save_settings() is called by end_fwd_dlg() and FWDUI_load_settings() TTXCloseTCP() { call uninit_TTSSH() { call FWD_end() { free(pvar->fwd_state.requests) // ここで設定を消している } } call init_TTSSH() { 初期化はしているけど、設定の読み込みはしていない } } TTXOpenTCP() { call FWDUI_load_settings() }
UIが(2)を編集対象としているのに、(2)がクリアされていて(1)の内容を反映していないという状態が出来る事が問題なように思います。
対処は、
のどちらかでよさそうです。
UI関連の初期化という意味では後者の方がよさそうですが、起動時はコピーした内容が参照される事なく TTXReadINIFile() の呼び出し時に再度上書きされるのがちょっと無駄になりますね。
まあ、この程度ならば気にする必要はなさそうですが。
報告者です。4.100-RC1で修正確認いたしました。 ご対応いただきありがとうございます。
『設定(S)』-『SSH転送(O)』-『Xクライアントアプリケーションの転送』を有効にして使用しています。
SSHでサーバーにログイン・ログアウト後、再度上記のメニューを開くとチェックが外れています。
表示上は外れていますが内部的には有効のままのようで、『キャンセル』を選択すると次回のログイン時もX転送は有効です。
『OK』を選択すると外れた状態が反映され、X転送が無効になります。