Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Q:OpenSSL libraryの使い方に ついて

526 views
Skip to first unread message

Yoshihiro Tabuchi

unread,
Sep 18, 2002, 4:04:24 AM9/18/02
to
 お世話になります。今、SSLを利用したHTTPクライアントを作成しており、OpenSSL
を利用しているのですが、少し困っています。ご教示寝返れば幸いです。
 環境はWindows98で、VisualC++で開発を行っております。ソースコードの取得とラ
イブラリの作成は何とか行うことが出来たのですが、いざ、サンプルコードを模倣し
て使ってみると、メモリーリークが発生します。

 こんな感じの流れで組んであります
--------------------------------------------------------------------
[Winsockを使って、connectまで行う]

SSL *ssl;
SSL_CTX *ctx;
int ssl_err;

SSL_load_error_strings();
SSL_library_init();
ctx = SSL_CTX_new(SSLv3_client_method());

ssl = SSL_new(ctx);
SSL_set_fd(ssl, sok);
ssl_err = SSL_connect(ssl);

[SSL_writeを使ってGETメッセージを送る]
[SSL_readを使ってメッセージを受け取る]

SSL_shutdown( ssl );
SSL_free( ssl );
SSL_CTX_free( ctx );

[ソケットの削除とWinsockのクリーンアップ]
--------------------------------------------------------------------
 調べてみると、SSL_library_initで大量のメモリーが確保されているらしく、それ
がメモリーリークの原因であることが分かりました。さらに、OpenSSLのサンプル
コードを調べて、(根拠はなかったんですが)SSL_CTX_freeの後に

ERR_free_strings();
ERR_remove_state(0);
EVP_cleanup();

 の3行を追加すると、メモリーをだいたい解放してくれたんですが、残り128byte
(72+20+16+20)ほどメモリーが解放されません。
 何か、適切な(わかりやすい)サンプルコードがあるページか、ずばり解決策をご
存じの方がいらっしゃったら、お教えくだされば幸いです。
 長文・乱文をご覧くださりありがとうございました。よろしくお願いいたします。

PS.
 これは、このNGに書くのは不適切と思いますが、Winsock2でイベントオブジェク
トに結びつけたソケットでSSLを利用しようとすると、エラーを起こしてしまうので
すが、Winsock2でブロッキングを起こさずにSSLを利用する方法をご存じの方がい
らっしゃったら、こちらも是非お教えください。

**************************************
*** 田淵義弘 in SPOONsoftware
*** E-Mail : tab...@spoonsoftware.com
*** HP : http://www.spoonsoftware.com
**************************************


0 new messages