From fc36a02e69707c878f525164585f8df28b08d947 Mon Sep 17 00:00:00 2001 From: Alan Antonuk Date: Mon, 29 Dec 2014 22:50:37 -0800 Subject: Add blocks to allow compilation with C89 compilers. C89 compilers can't do mixed definitions and code. --- librabbitmq/amqp_tcp_socket.c | 164 ++++++++++++++++++++++-------------------- 1 file changed, 87 insertions(+), 77 deletions(-) diff --git a/librabbitmq/amqp_tcp_socket.c b/librabbitmq/amqp_tcp_socket.c index 5bece5b..721697a 100644 --- a/librabbitmq/amqp_tcp_socket.c +++ b/librabbitmq/amqp_tcp_socket.c @@ -97,108 +97,118 @@ amqp_tcp_socket_writev(void *base, struct iovec *iov, int iovcnt) } #if defined(_WIN32) - DWORD res; - /* Making the assumption here that WSAsend won't do a partial send - * unless an error occured, in which case we're hosed so it doesn't matter */ - if (WSASend(self->sockfd, (LPWSABUF)iov, iovcnt, &res, 0, NULL, NULL) == 0) { - self->internal_error = 0; - ret = AMQP_STATUS_OK; - } else { - self->internal_error = WSAGetLastError(); - ret = AMQP_STATUS_SOCKET_ERROR; + { + DWORD res; + /* Making the assumption here that WSAsend won't do a partial send + * unless an error occured, in which case we're hosed so it doesn't matter + */ + if (WSASend(self->sockfd, (LPWSABUF)iov, iovcnt, &res, 0, NULL, NULL) == + 0) { + self->internal_error = 0; + ret = AMQP_STATUS_OK; + } else { + self->internal_error = WSAGetLastError(); + ret = AMQP_STATUS_SOCKET_ERROR; + } + return ret; } - return ret; #elif defined(MSG_MORE) - int i; - for (i = 0; i < iovcnt - 1; ++i) { - ret = amqp_tcp_socket_send_inner(self, iov[i].iov_base, iov[i].iov_len, MSG_MORE); - if (ret != AMQP_STATUS_OK) { - goto exit; + { + int i; + for (i = 0; i < iovcnt - 1; ++i) { + ret = amqp_tcp_socket_send_inner(self, iov[i].iov_base, iov[i].iov_len, + MSG_MORE); + if (ret != AMQP_STATUS_OK) { + goto exit; + } } - } - ret = amqp_tcp_socket_send_inner(self, iov[i].iov_base, iov[i].iov_len, 0); + ret = amqp_tcp_socket_send_inner(self, iov[i].iov_base, iov[i].iov_len, 0); -exit: - return ret; + exit: + return ret; + } #elif defined(SO_NOSIGPIPE) || !defined(MSG_NOSIGNAL) - int i; - ssize_t len_left = 0; - + { + int i; + ssize_t len_left = 0; - struct iovec *iov_left = iov; - int iovcnt_left = iovcnt; + struct iovec *iov_left = iov; + int iovcnt_left = iovcnt; - for (i = 0; i < iovcnt; ++i) { - len_left += iov[i].iov_len; - } + for (i = 0; i < iovcnt; ++i) { + len_left += iov[i].iov_len; + } -start: - ret = writev(self->sockfd, iov_left, iovcnt_left); + start: + ret = writev(self->sockfd, iov_left, iovcnt_left); - if (ret < 0) { - self->internal_error = amqp_os_socket_error(); - if (EINTR == self->internal_error) { - goto start; - } else { + if (ret < 0) { self->internal_error = amqp_os_socket_error(); - ret = AMQP_STATUS_SOCKET_ERROR; - } - } else { - if (ret == len_left) { - self->internal_error = 0; - ret = AMQP_STATUS_OK; + if (EINTR == self->internal_error) { + goto start; + } else { + self->internal_error = amqp_os_socket_error(); + ret = AMQP_STATUS_SOCKET_ERROR; + } } else { - len_left -= ret; - for (i = 0; i < iovcnt_left; ++i) { - if (ret < (ssize_t)iov_left[i].iov_len) { - iov_left[i].iov_base = ((char*)iov_left[i].iov_base) + ret; - iov_left[i].iov_len -= ret; - - iovcnt_left -= i; - iov_left += i; - break; - } else { - ret -= iov_left[i].iov_len; + if (ret == len_left) { + self->internal_error = 0; + ret = AMQP_STATUS_OK; + } else { + len_left -= ret; + for (i = 0; i < iovcnt_left; ++i) { + if (ret < (ssize_t)iov_left[i].iov_len) { + iov_left[i].iov_base = ((char *)iov_left[i].iov_base) + ret; + iov_left[i].iov_len -= ret; + + iovcnt_left -= i; + iov_left += i; + break; + } else { + ret -= iov_left[i].iov_len; + } } + goto start; } - goto start; } - } - return ret; + return ret; + } #else - int i; - size_t bytes = 0; - void *bufferp; + { + int i; + size_t bytes = 0; + void *bufferp; - for (i = 0; i < iovcnt; ++i) { - bytes += iov[i].iov_len; - } + for (i = 0; i < iovcnt; ++i) { + bytes += iov[i].iov_len; + } - if (self->buffer_length < bytes) { - self->buffer = realloc(self->buffer, bytes); - if (NULL == self->buffer) { - self->buffer_length = 0; - self->internal_error = 0; - ret = AMQP_STATUS_NO_MEMORY; - goto exit; + if (self->buffer_length < bytes) { + self->buffer = realloc(self->buffer, bytes); + if (NULL == self->buffer) { + self->buffer_length = 0; + self->internal_error = 0; + ret = AMQP_STATUS_NO_MEMORY; + goto exit; + } + self->buffer_length = bytes; } - self->buffer_length = bytes; - } - bufferp = self->buffer; - for (i = 0; i < iovcnt; ++i) { - memcpy(bufferp, iov[i].iov_base, iov[i].iov_len); - bufferp += iov[i].iov_len; - } + bufferp = self->buffer; + for (i = 0; i < iovcnt; ++i) { + memcpy(bufferp, iov[i].iov_base, iov[i].iov_len); + bufferp += iov[i].iov_len; + } - ret = amqp_tcp_socket_send_inner(self, self->buffer, bytes, 0); + ret = amqp_tcp_socket_send_inner(self, self->buffer, bytes, 0); -exit: - return ret; + exit: + return ret; + } #endif } -- cgit v1.2.1