Windows.Forms版GUIでフォームのハンドルを常に作成するようにした

Windows.Forms.Formは非表示で起動するとハンドルが作られずにアクセスした時にInvalidOperationExceptionを投げてくるので、非表示でもHandleプロパティを読み出して強制的にハンドルを作らせるようにした。
視聴リクエストのtipパラメータが不正な場合に落ちるのを修正した

視聴リクエストのtipパラメータに不正な値が入っていた場合に落ちるようになっていたので、ちゃんとチェックしてIPアドレスとポートの組み、またはIPアドレスが入ってた場合のみ通すようにした。
不正な値が入っている場合は指定無しと同等の動作をするようにした。
ログファイルの書き出し方法を変更した

TextWriterListenerでログファイルを書き出していたがずっとファイルを掴んで削除やリネームができなかったので、DefaultTraceListenerのLogFileNameプロパティでファイルを書き出すようにした。
DefaultTraceListenerのLogFileNameプロパティではファイル名変更や削除も問題なくできた。
その対応を簡単にするためDebugが有効の時にだけTraceListenerに追加していたDefaultTraceListenerを常に追加しておくようにした。
HTML UIのリレーツリー表示で視聴数・リレーが0のノードで視聴・リレー数が表示されていなかったのを修正した

JavaScriptの型変換だと数値の0もfalseになって、視聴・リレー数が表示されなくなっていたのでちゃんとnullと比較するようにした。
PCP_QUITを受け取ったあとに接続エラーになってしまうことがあるのを修正した

PCPSourceStreamでPCP_QUITを受け取ったあとにもう1パケット受信処理を行うようになっていたが、そこで接続が切れているとPCP_QUITでの接続終了でなく接続エラー扱いにされてしまっていた。
PCP_QUITを受信した場合は次のパケット受信を行わず正常終了するようにした。
接続が切れている時に0バイトを延々と受信してしまうのを修正した

HTTPOutputStreamで接続が既に切れているにもかかわらず、0バイトを受信し続けるだけで接続されている状態になることがあったので、OutputStreamで0バイト受信した場合は接続終了として扱うようにした。
Bumped version up to 1.4.1

ドキュメントも更新しておいた。
SourceStreamが複数回同時に接続開始すると落ちるのを修正した

SourceStreamのスレッドが死んでいる状態でSourceStreamBase.Startが複数スレッドで同時に呼ばれると、スレッド開始処理が競合して落ちるようになっていたので、ロックしてDoStartは同時に呼ばれないようにした。
DoStartの内部さえ競合しなければなんとか動くっぽい。
同じチャンネル終了通知が連続で出ないようにした

終了したチャンネルの再接続が行われるとその度に同じ終了通知が大量に出てしまうので、
全く同じ内容の通知は1分間は発生させないようにした。
Atomから文字列を取り出す時に壊れたデータでもUTF-8として仮定するようにした

PeerCastではAtomに入れる文字列をバイト単位でぶち切ることがあり、マルチバイト文字の途中でも切られてしまう。
マルチバイト文字の途中で切れるとUTF-8としてもShiftJISとしても壊れてる扱いされてデコード失敗して空文字になっていたが、途中まで表示できるものはできるだけ拾いたいのでUTF-8と仮定して壊れた文字は置き換えで表示するようにした。
非同期での送受信を管理するStreamConnectionクラスを追加した
SourceStreamBaseをStreamConnectionを使うようにした

SourceStreamBaseの送受信管理部分を切り出したStreamConnectionに置き換えた。
Revert "SourceStreamBaseをStreamConnectionを使うようにした"

This reverts commit e1550b82c8cdabbb6d88d4691be8241ca0699f83.
中途半端な整理では上手く動かなくなったので一旦元に戻して後程大きく整理しなおすことにした。
GUIで選択しているチャンネルが無くなったらチャンネル情報をクリアするようにした

Windows.Forms版のGUIで選択しているチャンネルが無くなった時に、下の接続一覧・チャンネル情報・リレーツリーが残ったままになっていたのを、選択が無い場合には全て表示をクリアするようにした。
HTML UIでのリレーツリー表示で常にローカルアドレスを表示するようになっていたのを修正した

HTML UIでのリレーツリー表示でノードのアドレスを表示する箇所が、ノードのグローバルアドレスがあるかどうかに関係なく常にローカルのアドレスを表示するようになっていたので、GUIと同様にグローバルアドレスが使える時にはグローバルアドレスを表示するようにした。
GUIでウィンドウの位置とサイズを保存するようにした

Windows.Forms版のGUIでウィンドウの位置とサイズを保存するようにした。
ウィンドウが有効なデスクトップのいずれからも外れていた場合はデフォルトの位置とサイズに戻る。
Bumped version up to 1.4.2

バージョン番号とドキュメントを更新した。
APIHostのテストが動くように修正した
StreamConnectionを閉じる時にはエラーを記録しないようにした

StreamConnection.Closeを実行中にエラーを記録すると、基のストリームを閉じる以上ほぼ確実にエラーが記録されてしまうので、Close実行中のエラーは無視して記録しないようにした。
SourceStreamの実装を接続毎に内部的に接続管理オブジェクトを作りなおすようにした

SourceStreamBaseの実装が一つのオブジェクトで何度もの接続を管理するようになっていたが、
再接続との競合が問題になったため接続毎に作り直すSourceConnectionBaseクラスを作るようにした。
PCPSourceStreamとHTTPSourceStreamを合わせて作り直した。