From 2c741648e327305f053f01e9b8e6624f9057d17e Mon Sep 17 00:00:00 2001
From: Konstantin Osipov <kostja@tarantool.org>
Date: Mon, 10 Dec 2018 21:42:54 +0300
Subject: [PATCH] sio: remove exceptions

Propagate exceptions up to the caller. Functions sio_sendto(),
sio_recvfrom().

In scope of #3234
---
 src/coio.cc | 5 ++++-
 src/sio.cc  | 4 ++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/coio.cc b/src/coio.cc
index c5bdf4b254..245376285e 100644
--- a/src/coio.cc
+++ b/src/coio.cc
@@ -525,6 +525,8 @@ coio_sendto_timeout(struct ev_io *coio, const void *buf, size_t sz, int flags,
 					 flags, dest_addr, addrlen);
 		if (nwr > 0)
 			return nwr;
+		if (nwr < 0 && ! sio_wouldblock(errno))
+			diag_raise();
 		if (! ev_is_active(coio)) {
 			ev_io_set(coio, coio->fd, EV_WRITE);
 			ev_io_start(loop(), coio);
@@ -568,7 +570,8 @@ coio_recvfrom_timeout(struct ev_io *coio, void *buf, size_t sz, int flags,
 					   src_addr, &addrlen);
 		if (nrd >= 0)
 			return nrd;
-
+		if (! sio_wouldblock(errno))
+			diag_raise();
 		if (! ev_is_active(coio)) {
 			ev_io_set(coio, coio->fd, EV_READ);
 			ev_io_start(loop(), coio);
diff --git a/src/sio.cc b/src/sio.cc
index 0c874404ec..e1ad1c1298 100644
--- a/src/sio.cc
+++ b/src/sio.cc
@@ -265,7 +265,7 @@ sio_sendto(int fd, const void *buf, size_t len, int flags,
 	ssize_t n = sendto(fd, buf, len, flags, (struct sockaddr*)dest_addr,
 	                   addrlen);
 	if (n < 0 && !sio_wouldblock(errno))
-		tnt_raise(SocketError, sio_socketname(fd), "sendto(%zd)", len);
+		diag_set(SocketError, sio_socketname(fd), "sendto(%zd)", len);
 	return n;
 }
 
@@ -276,7 +276,7 @@ sio_recvfrom(int fd, void *buf, size_t len, int flags,
 	ssize_t n = recvfrom(fd, buf, len, flags, (struct sockaddr*)src_addr,
 	                     addrlen);
 	if (n < 0 && !sio_wouldblock(errno))
-		tnt_raise(SocketError, sio_socketname(fd), "recvfrom(%zd)", len);
+		diag_set(SocketError, sio_socketname(fd), "recvfrom(%zd)", len);
 	return n;
 }
 
-- 
GitLab