]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/extended.c
Add tls.c
[openldap] / libraries / libldap / extended.c
index 4f3f464562fefe8bc7ef1c92b5487af0c8d327cf..a8ca02b29ef469a8ebdb3df7387c5ee35520f735 100644 (file)
@@ -40,6 +40,7 @@ ldap_extended_operation(
        int                             *msgidp )
 {
        BerElement *ber;
+       int rc;
 
        Debug( LDAP_DEBUG_TRACE, "ldap_extended_operation\n", 0, 0, 0 );
 
@@ -65,10 +66,19 @@ ldap_extended_operation(
                return( ld->ld_errno );
        }
 
-       if ( ber_printf( ber, "{it{tstO}", /* '}' */
-               ++ld->ld_msgid, LDAP_REQ_EXTENDED, LDAP_TAG_EXOP_REQ_OID,
-                       reqoid, LDAP_TAG_EXOP_REQ_VALUE, reqdata ) == -1 )
-       {
+       if ( reqdata != NULL ) {
+               rc = ber_printf( ber, "{it{tstO}", /* '}' */
+                       ++ld->ld_msgid, LDAP_REQ_EXTENDED,
+                       LDAP_TAG_EXOP_REQ_OID, reqoid,
+                       LDAP_TAG_EXOP_REQ_VALUE, reqdata );
+
+       } else {
+               rc = ber_printf( ber, "{it{ts}", /* '}' */
+                       ++ld->ld_msgid, LDAP_REQ_EXTENDED,
+                       LDAP_TAG_EXOP_REQ_OID, reqoid );
+       }
+
+       if( rc == -1 ) {
                ld->ld_errno = LDAP_ENCODING_ERROR;
                ber_free( ber, 1 );
                return( ld->ld_errno );