|
|
|
@ -294,12 +294,25 @@ static G_GNUC_WARN_UNUSED_RESULT gboolean connection_try_read(liConnection *con)
|
|
|
|
|
goffset transferred;
|
|
|
|
|
transferred = con->raw_in->length;
|
|
|
|
|
|
|
|
|
|
if (NULL == con->raw_in_buffer && NULL != con->wrk->network_read_buf) {
|
|
|
|
|
/* reuse worker buf if needed */
|
|
|
|
|
con->raw_in_buffer = con->wrk->network_read_buf;
|
|
|
|
|
con->wrk->network_read_buf = NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (con->srv_sock->read_cb) {
|
|
|
|
|
res = con->srv_sock->read_cb(con);
|
|
|
|
|
} else {
|
|
|
|
|
res = li_network_read(con->mainvr, con->sock_watcher.fd, con->raw_in, &con->raw_in_buffer);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (NULL == con->wrk->network_read_buf && NULL != con->raw_in_buffer
|
|
|
|
|
&& 1 == g_atomic_int_get(&con->raw_in_buffer->refcount)) {
|
|
|
|
|
/* move buffer back to worker if we didn't use it */
|
|
|
|
|
con->wrk->network_read_buf = con->raw_in_buffer;
|
|
|
|
|
con->raw_in_buffer = NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
transferred = con->raw_in->length - transferred;
|
|
|
|
|
if (transferred > 0) connection_update_io_timeout(con);
|
|
|
|
|
|
|
|
|
|