Télécharger
Développer
Compte
Télécharger
Développer
Connexion
Mot de passe oublié ?
Créer un compte
Langue
Aide
Langue
Aide
×
Connexion
Nom du compte
Mot de passe
×
Mot de passe oublié ?
Traduction statut du Français
Catégorie :
Logiciel
Peuple
PersonalForge
Magazine
Wiki
Recherche
OSDN
>
Trouver un logiciel
>
Terminals
>
Serial
>
Tera Term
>
Ticket List/Search
>
Ticket #10330
Tera Term
Description
Résumé du projet
Dashboard - Développeur
Page Web
Développeurs
Galerie d'images
Liste des flux RSS
Activité
Statistiques
Historique
Téléchargements
File Release
List of Releases
Stats
File Storage
Files
Stats
Code Source
Liste des dépôts de code
Subversion
Voir le référentiel
CVS
Voir le référentiel
Ticket
Liste des tickets
Liste des Jalons
Liste des types
Liste des composants
Liste des tickets/RSS fréquemment utilisés
Soumettre un nouveau ticket
Documents
Wiki
Page de garde
Index du titre
Modifications récentes
Doc Mgr
List Docs
Communication
Forums
Liste des forums
Forum d’aide (428)
Discussion-Ouverte (173)
Listes de diffusion
Liste de ML
ttssh2-commit
ttssh2-dev
ttssh2-users
Nouvelles
Ticket #10330
Liste des tickets
Soumettre un nouveau ticket
RSS
ポート転送の接続が多くなると落ちる
Date d'ouverture:
2007-04-25 17:18
Dernière mise à jour:
2007-05-07 22:20
monitor
ON
OFF
Rapporteur:
(Anonyme)
Propriétaire:
(Aucun)
Type:
Bogues
État:
Atteints
Composant:
(Aucun)
Jalon:
(Aucun)
Priorité:
5 - moyen
Sévérité:
5 - moyen
Résolution:
Fixed
Fichier:
2
Vote
Score:
0
No votes
0.0
% (
0
/
0
)
0.0
% (
0
/
0
)
0
0
Détails
Répondre
100 回ほど POP 接続をすると、teraterm が落ちます。
POP 接続はその都度閉じていますが、接続が閉じたときに
該当する channel を解放する処理がないようです。
そのため、channels を使い尽くしてしまうようです。
# used に 0 を代入する処理が見つかりませんでした。
また、ssh2_channel_new の返り値を見ていないところが
あり、本当に使用中の channel が CHANNEL_MAX を超えた
ときも落ちる可能性があります。
Ticket History (3/10 Histories)
Show older Histories
2007-04-25 19:17
Updated by:
(del#24082)
Commentaire
Répondre
Logged In: YES
user_id=24082
報告どうもありがとうございます。
SSH2_MSG_CHANNEL_CLOSEハンドラのhandle_SSH2_channel_close()
で、チャネルの解放処理が漏れていました。
OpenSSH 4.6p1では、channel_input_oclose()#channels.cに相当す
る部分です。
ssh2_channel_new()のほうも調査をいたします。
2007-04-26 11:12
Updated by:
(del#24082)
Commentaire
Répondre
Logged In: YES
user_id=24082
修正内容を検証するために、再現手順をもう少し詳しく教えてもら
えないでしょうか?
よろしくお願いします。
2007-04-26 12:10
Updated by:
(del#1144)
Commentaire
Répondre
Logged In: YES
user_id=1144
/ssh-L110:127.0.0.1:110 で接続し、POP 接続の(たぶん)101
回目に SSH_open_channel の中で落ちます。
CHANNEL_MAX を 少なくすると再現が簡単です。
channel_new のぶんだけパッチを作りました。
呼んでいるのは4カ所です。
local->remote fwd SSH_open_channel 1カ所
remote->local fwd handle_SSH2_channel_open 2カ所
認証 handle_SSH2_userauth_success 1カ所
handle_SSH2_userauth_success は fatal を出しています。
handle_SSH2_channel_open は、nonfatal を出して return FALSE
したあと、なぜか接続自体が切れます。
SSH_open_channel は void なので nonfatal を出して return
していますが、クライアントが返事を待ちっぱなしになります。
2007-04-26 12:10
Updated by:
(del#1144)
File
1838: channel_new.patch
is attached
2007-04-26 13:58
Updated by:
(del#24082)
Commentaire
Répondre
Logged In: YES
user_id=24082
>永田さん
パッチ作成いつもありがとうございます。
POP接続の件は、ローカルポートからの切断時にリークしているという
ことですね。
修正箇所は、accept_wnd_proc()#fwd.cのFD_CLOSEラベルから呼ば
れる、
closed_local_connection()に手を入れる必要がありそうです。
チャネル番号から ssh2_local_channel_lookup() を使って、SSH2
チャネル構造体を
取り出し、フリーする、といったところです。
2007-04-26 15:58
Updated by:
(del#1144)
Commentaire
Répondre
Logged In: YES
user_id=1144
closed_local_connection のあとに handle_SSH2_channel_close
に飛んでいてここで channel を使用しているので、
handle_SSH2_channel_close で解放するようにしました。
また、handle_SSH2_open_failure でも解放するようにしました。
解放を c->used = 0; としていますが、これで十分でしょうか。
ここでは channels[CHANNEL_MAX] の方をいじっていますが、
alloc 部分のソースを見ると pvar->fwd_state の channels や
num_channels を操作しており、解放の時にこれらをそのままに
しておいてよいのかわかりませんでした。
2007-04-26 15:58
Updated by:
(del#1144)
File
1839: channel_new2.patch
is attached
2007-04-26 19:21
Updated by:
(del#24082)
Commentaire
Répondre
Logged In: YES
user_id=24082
チャネルフリーの件は修正し、コミットしました。
handle_SSH2_open_failure()のほうですが、セッション自体が開け
ていないので、いらないような気がしますが、必要なら追加願いま
す。
2007-04-26 21:32
Updated by:
(del#1144)
Commentaire
Répondre
Logged In: YES
user_id=1144
ありがとうございます。
転送セッションは開けないものの SSH 接続が残るので、
POP3 チェッカーなどが転送先への接続リクエストを継続すると
使いっぱなしの channel が増えていくと思います。
ssh2_channel_new() の返り値をチェックするコードをコミット
しました。
下の方で書いた SSH_open_channel() で ssh2_channel_new()
に失敗したときに TeraTerm が終了するまで応答待ちになる件
ですが、sshd_config で AllowTcpForwarding no にしてから転送
したときにも同じことが起きるようです。
すぐに接続を切る方法はあるでしょうか。
2007-05-07 22:20
Updated by:
(del#1144)
Ticket Close date
is changed to
2007-05-07 22:20
Résolution
Update from
Aucun
to
Fixed
État
Update from
Ouvert
to
Atteints
Attachment File List (
2
)
Attachment File List
channel_new.patch
(2KB)
channel_new2.patch
(3KB)
Modifier
Ajouter un commentaire
You are not logged in.
I you are not logged in, your comment will be treated as an anonymous post. »
Connexion
Ajouter un commentaire
Aperçu
Soumettre
POP 接続はその都度閉じていますが、接続が閉じたときに
該当する channel を解放する処理がないようです。
そのため、channels を使い尽くしてしまうようです。
# used に 0 を代入する処理が見つかりませんでした。
また、ssh2_channel_new の返り値を見ていないところが
あり、本当に使用中の channel が CHANNEL_MAX を超えた
ときも落ちる可能性があります。