見出し画像

TWPCAP:二度目のパニックやタイムゾーンで悩む

完全に猫は起こしにきてくれなくなりました。自力で5時ぐらいに起きてリビングに行くと老猫は「遅かったな、ご飯と抱っこ」と言っていました。
しばらく稼働していたTWPCAPがまたパニックで停止していました。

panic: runtime error: index out of range [45] with length 45

goroutine 36 [running]:
main.getCipherSuite(...)
	/twpcap/tls.go:529
main.updateTLS(0xc000b02630, 0xc000618c20, 0xd, 0xc000618c30, 0x9, 0x1bb, 0x1c9c)
	/twpcap/tls.go:471 +0x672
main.checkPacket(0x72fbd8, 0xc000a58420)
	/twpcap/pcap.go:163 +0x7c7
main.startPcap(0x72d0b8, 0xc00018a000)
	/twpcap/pcap.go:30 +0x2f7
created by main.main
	/twpcap/main.go:92 +0x331

前回と同じ場所でした。よくソースコードを読むと長さの判定条件が間違っていました。インデックスと長さが同じになる条件も除外する必要がありました。この修正は、

です。=を一つ追加しただけです。
TWPCAPのソースを読んだついでに、いくつか気になっていたことを修正しました。

*DNSのレポートにサーバーのアドレスを含める
*ログの変数名を統一する
   サーバーのアドレスがip=になっているものをsv=にするなど

Linux環境で起動した時にログのタイムゾーンがおかしい場合がある問題を調べました。どうもTZとというタイムゾーンを示す環境変数が"JST"ではだあめで、"Asia/Tokyo"にする必要があることがわかりました。

TZ="Asia/Tokyo" twpcap 

のように起動して解決できました。

いろいろ修正したTWPCAPをテストしていますが、DNSのレポートにサーバーのアドレスを含めたことで新たな謎が浮かび上がってきました。
でも、今朝は、ここで時間切れです。この謎解きは、明日のお楽しみ

明日に続く

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。