s->sock = NULL;
apr_socket_close(as);
}
-
+
apr_pool_destroy(s->pool);
}
if (tosend <= TCN_BUFFER_SZ) {
jbyte sb[TCN_BUFFER_SZ];
(*e)->GetByteArrayRegion(e, buf, offset, tosend, &sb[0]);
- ss = (*s->net->send)(s->opaque, sb, &nbytes);
+ ss = (*s->net->send)(s->opaque, (const char *)&sb[0], &nbytes);
}
else {
jbyte *sb = (jbyte *)malloc(nbytes);
if (sb == NULL)
return -APR_ENOMEM;
(*e)->GetByteArrayRegion(e, buf, offset, tosend, sb);
- ss = (*s->net->send)(s->opaque, sb, &nbytes);
+ ss = (*s->net->send)(s->opaque, (const char *)sb, &nbytes);
free(sb);
}
if (ss == APR_SUCCESS)
tcn_socket_t *s = J2P(sock, tcn_socket_t *);
apr_size_t nbytes = (apr_size_t)toread;
apr_status_t ss;
+ apr_interval_time_t pt;
+ apr_interval_time_t nt = J2T(timeout);
UNREFERENCED(o);
TCN_ASSERT(sock != 0);
TCN_ASSERT(s->opaque != NULL);
TCN_ASSERT(buf != NULL);
- if ((ss = (*s->net->timeout_set)(s->opaque, J2T(timeout))) != APR_SUCCESS)
- goto cleanup;
+ if ((ss = (*s->net->timeout_get)(s->opaque, &pt)) != APR_SUCCESS) {
+ TCN_ERROR_WRAP(ss);
+ return -(jint)ss;
+ }
+ if (pt != nt) {
+ if ((ss = (*s->net->timeout_set)(s->opaque, nt)) != APR_SUCCESS)
+ goto cleanup;
+ }
if (toread <= TCN_BUFFER_SZ) {
jbyte sb[TCN_BUFFER_SZ];
- if ((ss = (*s->net->recv)(s->opaque, sb, &nbytes)) == APR_SUCCESS)
+ if ((ss = (*s->net->recv)(s->opaque, (char *)&sb[0], &nbytes)) == APR_SUCCESS)
(*e)->SetByteArrayRegion(e, buf, offset, (jsize)nbytes, &sb[0]);
}
else {
jbyte *sb = (jbyte *)malloc(nbytes);
if (sb == NULL)
return -APR_ENOMEM;
- if ((ss = (*s->net->recv)(s->opaque, sb, &nbytes)) == APR_SUCCESS)
+ if ((ss = (*s->net->recv)(s->opaque, (char *)sb, &nbytes)) == APR_SUCCESS)
(*e)->SetByteArrayRegion(e, buf, offset, (jsize)nbytes, &sb[0]);
free(sb);
}
+ if (pt != nt) {
+ if ((ss = (*s->net->timeout_set)(s->opaque, pt)) != APR_SUCCESS)
+ goto cleanup;
+ }
+
#ifdef TCN_DO_STATISTICS
if (ss == APR_SUCCESS) {
sp_max_recv = TCN_MAX(sp_max_recv, nbytes);
apr_status_t ss;
apr_size_t nbytes = (apr_size_t)len;
char *bytes;
+ apr_interval_time_t pt;
+ apr_interval_time_t nt = J2T(timeout);
UNREFERENCED(o);
if (!sock) {
bytes = (char *)(*e)->GetDirectBufferAddress(e, buf);
TCN_ASSERT(bytes != NULL);
- if ((ss = (*s->net->timeout_set)(s->opaque, J2T(timeout))) != APR_SUCCESS)
- return -(jint)ss;
+ if ((ss = (*s->net->timeout_get)(s->opaque, &pt)) != APR_SUCCESS) {
+ TCN_ERROR_WRAP(ss);
+ return -(jint)ss;
+ }
+ if (pt != nt) {
+ if ((ss = (*s->net->timeout_set)(s->opaque, nt)) != APR_SUCCESS) {
+ TCN_ERROR_WRAP(ss);
+ return -(jint)ss;
+ }
+ }
ss = (*s->net->recv)(s->opaque, bytes + offset, &nbytes);
+ if (pt != nt) {
+ if ((ss = (*s->net->timeout_set)(s->opaque, pt)) != APR_SUCCESS) {
+ TCN_ERROR_WRAP(ss);
+ return -(jint)ss;
+ }
+ }
+
#ifdef TCN_DO_STATISTICS
if (ss == APR_SUCCESS) {
sp_max_recv = TCN_MAX(sp_max_recv, nbytes);
tcn_socket_t *s = J2P(sock, tcn_socket_t *);
apr_status_t ss;
apr_size_t nbytes = (apr_size_t)len;
+ apr_interval_time_t pt;
+ apr_interval_time_t nt = J2T(timeout);
UNREFERENCED_STDARGS;
UNREFERENCED(o);
TCN_ASSERT(s->opaque != NULL);
- if ((ss = (*s->net->timeout_set)(s->opaque, J2T(timeout))) != APR_SUCCESS)
- return -(jint)ss;
+ if ((ss = (*s->net->timeout_get)(s->opaque, &pt)) != APR_SUCCESS) {
+ TCN_ERROR_WRAP(ss);
+ return -(jint)ss;
+ }
+ if (pt != nt) {
+ if ((ss = (*s->net->timeout_set)(s->opaque, nt)) != APR_SUCCESS) {
+ TCN_ERROR_WRAP(ss);
+ return -(jint)ss;
+ }
+ }
ss = (*s->net->recv)(s->opaque, s->jrbbuff + offset, &nbytes);
+ if (pt != nt) {
+ if ((ss = (*s->net->timeout_set)(s->opaque, pt)) != APR_SUCCESS) {
+ TCN_ERROR_WRAP(ss);
+ return -(jint)ss;
+ }
+ }
+
#ifdef TCN_DO_STATISTICS
if (ss == APR_SUCCESS) {
sp_max_recv = TCN_MAX(sp_max_recv, nbytes);
if (!sock) {
tcn_ThrowAPRException(e, APR_ENOTSOCK);
return APR_ENOTSOCK;
- }
+ }
return (jint)(*s->net->timeout_set)(s->opaque, J2T(timeout));
}
if (!sock) {
tcn_ThrowAPRException(e, APR_ENOTSOCK);
return 0;
- }
+ }
TCN_ASSERT(s->opaque != NULL);
TCN_THROW_IF_ERR((*s->net->timeout_get)(s->opaque, &timeout), timeout);