diff --git a/server/core/dcb.c b/server/core/dcb.c
index 036b75cae..17b1204b8 100644
--- a/server/core/dcb.c
+++ b/server/core/dcb.c
@@ -760,134 +760,138 @@ dcb_connect(SERVER *server, SESSION *session, const char *protocol)
* the last iteration of while loop. 0 is returned if no data available.
*/
int dcb_read(
- DCB *dcb,
- GWBUF **head,
- int maxbytes)
+ DCB *dcb,
+ GWBUF **head,
+ int maxbytes)
{
- GWBUF *buffer = NULL;
- int bytesavailable;
- int nsingleread = 0;
- int nreadtotal = 0;
+ GWBUF *buffer = NULL;
+ int bytesavailable;
+ int nsingleread = 0;
+ int nreadtotal = 0;
- CHK_DCB(dcb);
+ CHK_DCB(dcb);
- if (dcb->fd <= 0)
- {
- LOGIF(LE, (skygw_log_write_flush(
- LOGFILE_ERROR,
- "%lu [dcb_read] Error : Read failed, dcb is %s.",
- pthread_self(),
- dcb->fd == DCBFD_CLOSED ? "closed" : "cloned, not readable")));
- return 0;
- }
+ if (dcb->fd <= 0)
+ {
+ /* */
+ LOGIF(LE, (skygw_log_write_flush(
+ LOGFILE_ERROR,
+ "%lu [dcb_read] Error : Read failed, dcb is %s.",
+ pthread_self(),
+ dcb->fd == DCBFD_CLOSED ? "closed" : "cloned, not readable")));
+ /* */
+ return 0;
+ }
- while (0 == maxbytes || nreadtotal < maxbytes)
+ while (0 == maxbytes || nreadtotal < maxbytes)
+ {
+ int bufsize;
+
+ if (-1 == ioctl(dcb->fd, FIONREAD, &bytesavailable))
{
- int bufsize;
-
- if (-1 == ioctl(dcb->fd, FIONREAD, &bytesavailable))
- {
- LOGIF(LE, (skygw_log_write_flush(
- LOGFILE_ERROR,
- "%lu [dcb_read] Error : ioctl FIONREAD for dcb %p in "
- "state %s fd %d failed due error %d, %s.",
- pthread_self(),
- dcb,
- STRDCBSTATE(dcb->state),
- dcb->fd,
- errno,
- strerror(errno))));
- return -1;
- }
+ /* */
+ LOGIF(LE, (skygw_log_write_flush(
+ LOGFILE_ERROR,
+ "%lu [dcb_read] Error : ioctl FIONREAD for dcb %p in "
+ "state %s fd %d failed due error %d, %s.",
+ pthread_self(),
+ dcb,
+ STRDCBSTATE(dcb->state),
+ dcb->fd,
+ errno,
+ strerror(errno))));
+ /* */
+ return -1;
+ }
- if (bytesavailable == 0 && nreadtotal == 0)
- {
- /** Handle closed client socket */
- if (dcb_isclient(dcb))
- {
- char c;
- int l_errno = 0;
- int r = -1;
+ if (bytesavailable == 0)
+ {
+ /** Handle closed client socket */
+ if (nreadtotal == 0 && dcb_isclient(dcb))
+ {
+ char c;
+ int l_errno = 0;
+ int r = -1;
- /* try to read 1 byte, without consuming the socket buffer */
- r = recv(dcb->fd, &c, sizeof(char), MSG_PEEK);
- l_errno = errno;
+ /* try to read 1 byte, without consuming the socket buffer */
+ r = recv(dcb->fd, &c, sizeof(char), MSG_PEEK);
+ l_errno = errno;
- if (r <= 0 &&
- l_errno != EAGAIN &&
- l_errno != EWOULDBLOCK &&
- l_errno != 0)
- {
- return -1;
- }
- }
- return 0;
- }
- else if (bytesavailable == 0)
+ if (r <= 0 &&
+ l_errno != EAGAIN &&
+ l_errno != EWOULDBLOCK &&
+ l_errno != 0)
{
- return 0;
+ return -1;
}
+ }
+ return 0;
+ }
- dcb->last_read = hkheartbeat;
+ dcb->last_read = hkheartbeat;
- bufsize = MIN(bytesavailable, MAX_BUFFER_SIZE);
- if (maxbytes) bufsize = MIN(bufsize, maxbytes);
+ bufsize = MIN(bytesavailable, MAX_BUFFER_SIZE);
+ if (maxbytes) bufsize = MIN(bufsize, maxbytes);
- if ((buffer = gwbuf_alloc(bufsize)) == NULL)
- {
- /*<
- * This is a fatal error which should cause shutdown.
- * Todo shutdown if memory allocation fails.
- */
- LOGIF(LE, (skygw_log_write_flush(
- LOGFILE_ERROR,
- "%lu [dcb_read] Error : Failed to allocate read buffer "
- "for dcb %p fd %d, due %d, %s.",
- pthread_self(),
- dcb,
- dcb->fd,
- errno,
- strerror(errno))));
-
- return -1;
- }
- GW_NOINTR_CALL(nsingleread = read(dcb->fd, GWBUF_DATA(buffer), bufsize);
- dcb->stats.n_reads++);
+ if ((buffer = gwbuf_alloc(bufsize)) == NULL)
+ {
+ /*<
+ * This is a fatal error which should cause shutdown.
+ * Todo shutdown if memory allocation fails.
+ */
+ /* */
+ LOGIF(LE, (skygw_log_write_flush(
+ LOGFILE_ERROR,
+ "%lu [dcb_read] Error : Failed to allocate read buffer "
+ "for dcb %p fd %d, due %d, %s.",
+ pthread_self(),
+ dcb,
+ dcb->fd,
+ errno,
+ strerror(errno))));
+ /* */
+ return -1;
+ }
+ GW_NOINTR_CALL(nsingleread = read(dcb->fd, GWBUF_DATA(buffer), bufsize);
+ dcb->stats.n_reads++);
- if (nsingleread <= 0)
- {
- if (errno != 0 && errno != EAGAIN && errno != EWOULDBLOCK)
- {
- LOGIF(LE, (skygw_log_write_flush(
- LOGFILE_ERROR,
- "%lu [dcb_read] Error : Read failed, dcb %p in state "
- "%s fd %d, due %d, %s.",
- pthread_self(),
- dcb,
- STRDCBSTATE(dcb->state),
- dcb->fd,
- errno,
- strerror(errno))));
- }
- gwbuf_free(buffer);
- return nsingleread;
- }
- nreadtotal += nsingleread;
-
- LOGIF(LD, (skygw_log_write(
- LOGFILE_DEBUG,
- "%lu [dcb_read] Read %d bytes from dcb %p in state %s "
- "fd %d.",
+ if (nsingleread <= 0)
+ {
+ if (errno != 0 && errno != EAGAIN && errno != EWOULDBLOCK)
+ {
+ /* */
+ LOGIF(LE, (skygw_log_write_flush(
+ LOGFILE_ERROR,
+ "%lu [dcb_read] Error : Read failed, dcb %p in state "
+ "%s fd %d, due %d, %s.",
pthread_self(),
- nsingleread,
dcb,
STRDCBSTATE(dcb->state),
- dcb->fd)));
- /*< Append read data to the gwbuf */
- *head = gwbuf_append(*head, buffer);
- } /*< while (0 == maxbytes || nreadtotal < maxbytes) */
+ dcb->fd,
+ errno,
+ strerror(errno))));
+ /* */
+ }
+ gwbuf_free(buffer);
+ return nsingleread;
+ }
+ nreadtotal += nsingleread;
+ /* */
+ LOGIF(LD, (skygw_log_write(
+ LOGFILE_DEBUG,
+ "%lu [dcb_read] Read %d bytes from dcb %p in state %s "
+ "fd %d.",
+ pthread_self(),
+ nsingleread,
+ dcb,
+ STRDCBSTATE(dcb->state),
+ dcb->fd)));
+ /* */
+ /*< Append read data to the gwbuf */
+ *head = gwbuf_append(*head, buffer);
+ } /*< while (0 == maxbytes || nreadtotal < maxbytes) */
- return nsingleread;
+ return nsingleread;
}
/**
@@ -1101,6 +1105,7 @@ int dcb_read_SSL(
return_n:
return nread;
}
+
/**
* General purpose routine to write to a DCB
*