*BIG* verify code reorganisation.
[oweals/openssl.git] / crypto / bio / bio_lib.c
index d8cb83aaabaf8c592588cfefeba7d48a7dacda8b..ffdec3725d6da049984ac4cff696357ccd0e9c31 100644 (file)
@@ -201,13 +201,7 @@ int BIO_write(BIO *b, const void *in, int inl)
 
        if (i > 0) b->num_write+=(unsigned long)i;
 
-       /* This is evil and not thread safe.  If the BIO has been freed,
-        * we must not call the callback.  The only way to be able to
-        * determine this is the reference count which is now invalid since
-        * the memory has been free()ed.
-        */
-       if (b->references <= 0) abort();
-       if (cb != NULL) /* && (b->references >= 1)) */
+       if (cb != NULL)
                i=(int)cb(b,BIO_CB_WRITE|BIO_CB_RETURN,in,inl,
                        0L,(long)i);
        return(i);
@@ -238,6 +232,8 @@ int BIO_puts(BIO *b, const char *in)
 
        i=b->method->bputs(b,in);
 
+       if (i > 0) b->num_write+=(unsigned long)i;
+
        if (cb != NULL)
                i=(int)cb(b,BIO_CB_PUTS|BIO_CB_RETURN,in,0,
                        0L,(long)i);