C-Kermit 9.0.305 Alpha.05 以降からの受信が行えない
発生する・しない環境の境目
C-Kermit 9.0.305 Alpha.04 | 9.0.305 Alpha.05 | |
Tera Term 4.72 | OK | OK |
4.73- | OK | NG |
cku305-alpha05 からは Long Packet (2バイト目が0) が送られてきている。
cku305-alpha04 0x030074E0 01 7b 22 44 23 23 69 6e 63 6c 75 64 65 20 22 63 .{"D##include "c 0x030074F0 6b 63 73 79 6d 2e 68 22 23 4d 23 4a 63 68 61 72 kcsym.h"#M#Jchar 0x03007500 20 2a 77 61 72 74 76 20 3d 20 22 57 61 72 74 20 *wartv = "Wart 0x03007510 56 65 72 73 69 6f 6e 20 32 2e 31 35 2c 20 31 38 Version 2.15, 18 0x03007520 20 53 65 70 74 65 6d 62 65 72 20 32 30 32 30 20 September 2020 0x03007530 22 3b 23 4d 23 4a 23 4d 23 4a 23 23 30 cd cd cd ";#M#J#M#J##0ヘヘヘ cku305-alpha05 0x02EAEA20 01 20 22 44 21 20 2a 23 23 69 6e 63 6c 75 64 65 . "D! *##include 0x02EAEA30 20 22 63 6b 63 73 79 6d 2e 68 22 23 4d 23 4a 63 "ckcsym.h"#M#Jc 0x02EAEA40 68 61 72 20 2a 77 61 72 74 76 20 3d 20 22 57 61 har *wartv = "Wa 0x02EAEA50 72 74 20 56 65 72 73 69 6f 6e 20 32 2e 31 35 2c rt Version 2.15, 0x02EAEA60 20 31 38 20 53 65 70 74 65 6d 62 65 72 20 32 30 18 September 20 0x02EAEA70 32 30 20 22 3b 23 4d 23 4a 23 4d 23 4a 23 23 cd 20 ";#M#J#M#J##ヘ
Tera Term は TERATERM.INI で KmtLongPacket=on としないと、Long Packet を扱わない。送信しない。
onになっていないと「私はLong Packetを受信する」とリモートに伝えないが、それでも送ってきたら受信している。
現在の仕様だとこの ticket は INVALID になりますが、KmtLongPacket 設定を見て ts->KermitOpt |= KmtOptLongPacket; しています。
無条件に有効にすることもできますが、なにかの副作用を心配してこうしたのだと思います。どうしましょうか?
C-Kermit 9.0.305 Alpha.05 以降は、Tera Term が「Long Packet に対応している」と応答していないのに Long Packet を送ってきています。
<<< 01 39 20 53 7E 90 20 40 2D 23 59 33 7E 5E 3E 4A .9 S~. @-#Y3~^>J 29 30 5F 5F 5F 4E 22 55 31 40 26 )0___N"U1@& MARK=1 LEN=25 SEQ#=0 TYPE=SendInitiate DATA_LEN=22 Data: MAXL=94 TIME=112 NPAD=0 PADC=0 EOL=2d QCTL=# QBIN=Y CHKT=3 REPT=~ CAPAS=5e WINDO=3e MAXLX1=4a MAXLX2=29 >>> 01 30 20 59 BF 2A 20 40 2D 23 4E 31 7E 22 20 4A .0 Y.* @-#N1~" J 2A 58 *X MARK=1 LEN=16 SEQ#=0 TYPE=ACK DATA_LEN=13
相手が C-Kermit 9.0.305 Alpha.04, C-Kermit 9.0.305 Alpha.05 で全く同じです。
C-Kermit 側のバグでしょうか?
止めずに受信するようにして試してみました。
サイズが大きくないので、サポートしていない Long Packet を意図的に送ってきている感じはしません。
Long Packet で MAXLEN が 4000 なのに 4001 のデータが飛んでくる(#44873)ことも併せて考えると、C-Kermit には
という感じがします。
途中経過です。
C-Kermit 側で採取した packet.log を送りましたが、コントロールフィールドに 8bit 文字(8進の220)が含まれている、よってログファイルが壊れている、と連絡がありました。
送ったのは採取したログファイルそのものであること、受信側(Tera Term)のログにもその文字が現れていること、その文字を送っているのは C-Kermit であることを伝えました。
01 39 20 53 7E 90 20 40 2D 23 59 33 7E 5E 3E 4A .9 S~. @-#Y3~^>J 29 30 5F 5F 5F 4E 22 55 31 40 26 )0___N"U1@& MARK=1 LEN=25 SEQ#=0 TYPE=SendInitiate DATA_LEN=22 Data: MAXL=94 TIME=112 NPAD=0 PADC=0 ...
(8進の220)= 0x90 = TIME=112
そしたら、調べてみるとの返事がありました。
Normal Packet の時に「リモート(Tera Term)の MAX + 1から3」で送ってくる(ゆえに Long Packet になる)バグがあるのではないか
こちらは次のリリースで直りそうです。
「Long Packet を受信する」と言っていないのに Long Packet を送ってきても、Tera Term は Long Pakcet を受信します。
なので、これが直っても「本当に Long Packet を受信しないソフト」に対してのみ効果がある修正ということになります。
Long Pakcet の時に「リモート(Tera Term)の MAXL + 1」で送ってくるバグがあるのではないか
こちらも最初から説明しているのですが、いまいち分かってもらえていないのか、今のところ直っていません。
説明(リクエスト)を続けています。
Long Pakcet の時に「リモート(Tera Term)の MAXL + 1」で送ってくるバグがあるのではないか
直してもらえました。おそらくC-Kermit 10.0 Beta.05 が出たら修正されていると思います。
10.0 Beta.05 が出ました。問題なさそうです。
https://www.kermitproject.org/ftp/kermit/test/tar/cku400-beta05.tar.gz
r10302 で 4-stable にマージしました。
Kermitでのファイル受信が行えない。ファイルの受信を行うと、Kermit受信ダイアログが出て最初のパケットを受け取った所で止まる。
バージョン
以下の組み合わせで発生
ローカル側が Tera Term 4.72 までや、リモート側が C-Kermit 9.0.302, 9.0.304, G-Kermit CU-1.00 では発生しない。