svcicon と neticon を更新しました。
http://tricklib.com/cxx/ex/svcicon/
2007-10-02 次の二つの修正を行いました。
- 通知アイコン登録のリトライ回数の増加、及び、リトライループに1秒のWaitを追加。
- 表記の修正("トレイアイコン"→"通知アイコン", "システムトレイ"→"通知領域")。
http://tricklib.com/cxx/ex/neticon/
2007-10-02 次の四つの修正を行いました。
- 通知アイコン登録のリトライ回数の増加、及び、リトライループに1秒のWaitを追加。
- 表記の修正("トレイアイコン"→"通知アイコン", "システムトレイ"→"通知領域")。
- "OK"オーバーレイアイコンの変更(再生マーク→チェックマーク)。
- ソケットをクローズする前に接続をシャットダウンする処理を追加。
通知アイコン登録のリトライについては、KB418138 に対するいままでの対策では不十分だったようで、かなりスペックのいいマシンでも Windows のスタートアップ時では通知アイコンの登録にそれでもまだ失敗することがあったので処理を強化しました。
表記の修正に関しては「Windowsプログラミングの極意」(Raymond Chen著、原題:THE OLD NEW THING)によると"トレイアイコン"だの"システムトレイ"だのと言った名前は明確な間違いで、正しくはそれぞれ"通知アイコン"および"通知領域"(追記:本文中では"通知エリア"となっていますが、WindowsのGUI上での表現は"通知領域"となっているのでそれに倣いました。)とのことなので修正しました。
ソケットのシャットダウンに関しては、neticon による生存確認が IDS によっては SYNフラッド攻撃(DoS攻撃のひとつ) と見做されるようなので本来必要ないハズなのですがダメ元で接続をシャットダウンする処理を追加しました。SYNフラッド攻撃と見做されるということはクライアント(neticon)がACKを返していないということになるのですが、connect()関数から呼び出し元に制御が返ってきている時点で本来なら接続が確立されていて且つそれはクライアントがACKを返していること意味するわけでどうにも腑に落ちません。