仙石浩明の日記

2006年8月18日

stone 2.3c リリース

stone 2.3c を リリースした。 現時点ではスナップショット扱いであるが、重大なバグが発見されない限り、 このバージョンを stone 2.3 に代えて正式リリースとする予定 (今度こそ!)。 stone 2.3b からの 変更点は以下の通り

depth 値に依存せずに root CA 識別名を指定できるように

stone の SSL 認証 (3) で説明したように、 root CA から数えた階層数で「re数字=正規表現」を指定できるようにした。 root CA を「-1」とし、root CA の子CA が「-2」、以下順に数字が減っていく。

busy loop が起きるバグを修正

stone 2.3b のバグ」 に書いたように、 stone 2.3b には SSL 接続が確立する前に TCP 接続が切れてしまうと、 まれに busy loop が発生するバグがあった。 stone.c 2.2.3.12 で修正済み。

さらに、万一 busy loop が起きたときに、それを検知するコードを追加した。 stone.c 2.2.3.13 には、 busy loop の誤検出するケースがあったので、 stone.c 2.2.3.14 で修正した。

SSL_accept 前に EOF となった場合にエラーを出さない

TCP レベルのヘルスチェックを行なっている場合、 SSL プロトコルを喋らずに shutdown する設定で運用するケースがある。 このような場合に、stone が SSL エラーとして出力してしまうと、 ログが無意味に肥大化してしまう。 そこで accept 直後に EOF になった場合は DEBUG メッセージのみ出力し、 エラーは出力しないようにした (stone.c 2.2.3.13)。

SSL close notify を送信できていなくてもエラーを出さない

SSL close notify を送信する前に通信相手が接続を切ってしまうケースがある。 あまり好ましいことではないが、 SSL セッションの再利用ができなくなる点を除けば実害はなく、 行儀が悪い通信相手のためにエラーログを肥大化させるのは割が合わないので、 これもエラーメッセージから DEBUG メッセージへ降格した (stone.c 2.2.3.13)。

「/udp」指定を転送元、転送先とで区別

従来は、転送先あるいは転送元のどちらかに「/udp」を指定していれば、 udp の中継を行なっていた。 今後は、udp の中継を行なう場合は、両方に「/udp」を指定する必要がある。 片方のみ「/udp」を指定した場合は、 udp から tcp への、あるいはその逆の変換を行なう指定とする予定(未実装)。

Filed under: stone 開発日記 — hiroaki_sengoku @ 08:25

4件のコメント »

  1. こんにちは。
    2.3cのssl.cの203行目の「func(arg)\」は「func(arg);\」ではないでしょうか? (セミコロンを追加)
    Solaris9だと-DPTHREADと-lpthreadを削除した状態でコンパイルしないと正常に動作しないのですが、この状態だと上記のセミコロンのところでコンパイルエラーになりました。

    コメント by おぎのゆうすけ — 2006年8月23日 @ 17:33

  2. う、本当だ… ご指摘ありがとうございます。
    thread 無しで stone を使うのはお勧めできないので、
    チェックしていませんでした。
    Solaris9にも pthread はあると思うのですが、
    どのような異常動作が起きますでしょうか?

    コメント by 仙石浩明 — 2006年8月24日 @ 14:51

  3. ものすごく遅くなってしまいましたが。
    (コメントの場所が分からずレスに気付いていませんでした(^^;)
    以下のような動作となります。
    % uname -a
    SunOS kumasun 5.9 Generic_118558-25 sun4u sparc SUNW,Ultra-1
    このような Solaris で make を実行。
    % make solaris-ssl
    stoneを起動する。
    % stone http://www.google.com:80 10000
    Sep 6 09:53:25.776208 1 start (2.3c) [24284]
    Sep 6 09:53:27.346491 1 stone 3: 66.102.7.99:80 <- 0.0.0.0:10000
    別のターミナルで telnet を実行。
    % telnet localhost 10000
    Trying 127.0.0.1…
    Connected to localhost.
    Escape character is ‘^]’.
    Connection to localhost closed by foreign host.
    %
    その時の stone のログ
    Sep 6 09:53:34.808320 2 3 TCP 5: can’t connect err=0: to 66.102.7.99:80
    …(続く)

    コメント by おぎのゆうすけ — 2006年9月6日 @ 10:12

  4. …(続き)
    文字数制限にひっかかって投稿できなかったので、メールでお送りしました。

    コメント by おぎのゆうすけ — 2006年9月6日 @ 10:29

この投稿へのコメントの RSS フィード。

コメントする