summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Antonuk <alan.antonuk@gmail.com>2014-12-29 22:50:37 -0800
committerAlan Antonuk <alan.antonuk@gmail.com>2014-12-29 22:50:37 -0800
commitfc36a02e69707c878f525164585f8df28b08d947 (patch)
tree82c4de05215ba30f7c4a450483b6720475cbfc8d
parentee54e274fe3c8d41bba0f274b997a587bff2482b (diff)
downloadrabbitmq-c-fc36a02e69707c878f525164585f8df28b08d947.tar.gz
Add blocks to allow compilation with C89 compilers.
C89 compilers can't do mixed definitions and code.
-rw-r--r--librabbitmq/amqp_tcp_socket.c164
1 files 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
}