in native/src/ssl.c [520:544]
static int jbs_write(BIO *b, const char *in, int inl)
{
jint ret = -1;
if (BIO_get_init(b) && in != NULL) {
BIO_JAVA *j = (BIO_JAVA *)BIO_get_data(b);
JNIEnv *e = NULL;
jbyteArray jb;
tcn_get_java_env(&e);
jb = (*e)->NewByteArray(e, inl);
if (!(*e)->ExceptionOccurred(e)) {
BIO_clear_retry_flags(b);
(*e)->SetByteArrayRegion(e, jb, 0, inl, (jbyte *)in);
ret = (*e)->CallIntMethod(e, j->cb.obj,
j->cb.mid[0], jb);
(*e)->ReleaseByteArrayElements(e, jb, (jbyte *)in, JNI_ABORT);
(*e)->DeleteLocalRef(e, jb);
}
}
/* From netty-tc-native, in the AF we were returning 0 */
if (ret == 0) {
BIO_set_retry_write(b);
ret = -1;
}
return ret;
}