Ticket #38314

SSH X転送設定のメニュー表示

Open Date: 2018-06-02 18:24 Last Update: 2018-06-06 23:15

Reporter:
(Anonymous)
Owner:
Type:
Status:
Open [Owner assigned]
Component:
MileStone:
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

『設定(S)』-『SSH転送(O)』-『Xクライアントアプリケーションの転送』を有効にして使用しています。

SSHでサーバーにログイン・ログアウト後、再度上記のメニューを開くとチェックが外れています。

表示上は外れていますが内部的には有効のままのようで、『キャンセル』を選択すると次回のログイン時もX転送は有効です。

『OK』を選択すると外れた状態が反映され、X転送が無効になります。

Attachment File List

No attachments

Ticket History (3/8 Histories)

2018-06-02 18:24 Updated by: None
  • New Ticket "SSH X転送設定のメニュー表示" created
2018-06-02 21:11 Updated by: maya
  • Resolution Update from None to Accepted
  • Component Update from (None) to TTSSH
2018-06-02 23:25 Updated by: maya
Comment

とりあえずソースを見た感じ:

転送設定は、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()
}
2018-06-06 15:52 Updated by: doda
Comment

UIが(2)を編集対象としているのに、(2)がクリアされていて(1)の内容を反映していないという状態が出来る事が問題なように思います。

対処は、

  • TTXCloseTCP()で、init_TTSSH() の後に FWDUI_load_settings() を呼ぶ
  • init_TTSSH()か、またはその中で呼ばれるFWDUI_init() で FWDUI_load_settings() を呼ぶ

のどちらかでよさそうです。

2018-06-06 15:57 Updated by: doda
Comment

UI関連の初期化という意味では後者の方がよさそうですが、起動時はコピーした内容が参照される事なく TTXReadINIFile() の呼び出し時に再度上書きされるのがちょっと無駄になりますね。

まあ、この程度ならば気にする必要はなさそうですが。

2018-06-06 17:56 Updated by: doda
  • Owner Update from (None) to doda
  • Milestone Update from (None) to Tera Term 4.100
2018-06-06 19:00 Updated by: doda
  • Resolution Update from Accepted to Fixed
Comment

r7127 で修正してみました。

2018-06-06 23:15 Updated by: maya
Comment

doda への返信

r7127 で修正してみました。

ありがとうございます。

FWD_end()で設定をまるごとクリアするのではなく、設定は維持してステータスだけ初期状態に戻せばよいのでは、と考えていましたが、DefaultForwardingが持っているのを読み直せばよかったんですね。

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login