OpenLDAP クライアント ライブラリを使用して LDAP サーバーに接続しています。問題は、しばらくアクティビティがない場合、サーバー (または途中のファイアウォール) が TCP 接続を切断することです。
「キープアライブ」の現在の実装は、時々 baseDN を検索するだけです - 何か良いアイデアはありますか?
OpenLDAP クライアント ライブラリを使用して LDAP サーバーに接続しています。問題は、しばらくアクティビティがない場合、サーバー (または途中のファイアウォール) が TCP 接続を切断することです。
「キープアライブ」の現在の実装は、時々 baseDN を検索するだけです - 何か良いアイデアはありますか?
LDAPAbandonが機能する可能性があります。
if (ldap_abandon(ld, 0, sctrls, cctrls) != LDAP_SUCCESS)
{
/* handle ldap error */
};
OpenLDAPメーリングリストでこれについての議論がありました:
http://www.openldap.org/lists/openldap-devel/200905/msg00008.html
簡単に言うと、放棄要求はサーバーにメッセージを送信しますが、サーバーは放棄要求に対する応答をクライアントに送り返しません。ゼロはLDAP要求の有効なMSGIDではありません。ゼロは無効なMSGIDであり、サーバーは放棄要求に応答しないため、理論的には、サーバーはmsgidゼロの放棄要求を無視します。これにより、TCPソケットでアクティビティが提供され、ファイアウォールが接続を切断するのを防ぎます。
見る:
LDAP_OPT_RECONNECT
OpenLdap では使用できません
唯一の代替手段は再接続のようです:
ldap_set_option( ld, LDAP_OPT_RECONNECT, LDAP_OPT_ON );