* [Qemu-devel] [PATCH] report a error message if -net socket can not connect to server
@ 2015-12-04 6:01 Li Zhijian
0 siblings, 0 replies; only message in thread
From: Li Zhijian @ 2015-12-04 6:01 UTC (permalink / raw
To: jasowang, qemu-devel; +Cc: Li Zhijian
From: Li Zhijian <lizhijan@cn.fujitsu.com>
-netdev socket,connect=xx:xx now is asynchronous to connect
listening server, if we don't start listening server before
connecting, no error is detected but we can connect to listening
server forever.
Just report a error message in this case?
Signed-off-by: Li Zhijian <lizhijan@cn.fujitsu.com>
---
net/socket.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/net/socket.c b/net/socket.c
index e8605d4..a82da36 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -46,6 +46,7 @@ typedef struct NetSocketState {
IOHandler *send_fn; /* differs between SOCK_STREAM/SOCK_DGRAM */
bool read_poll; /* waiting to receive data? */
bool write_poll; /* waiting to transmit data? */
+ bool connected; /* connect socket is connected */
} NetSocketState;
static void net_socket_accept(void *opaque);
@@ -424,6 +425,21 @@ err:
static void net_socket_connect(void *opaque)
{
NetSocketState *s = opaque;
+ int err = -1;
+ socklen_t len = sizeof(err);
+
+ if (s->listen_fd == -1 && !s->connected) {
+ if (getsockopt(s->fd, SOL_SOCKET, SO_ERROR, &err, &len)) {
+ error_report("get socket opt error %s", strerror(errno));
+ /* FIXME: cleanup and exit ? */
+ } else if (err) {
+ errno = err;
+ error_report("net socket is not connected %s\n", strerror(errno));
+ /* FIXME: cleanup and exit ? */
+ } else {
+ s->connected = true;
+ }
+ }
s->send_fn = net_socket_send;
net_socket_read_poll(s, true);
}
@@ -451,6 +467,7 @@ static NetSocketState *net_socket_fd_init_stream(NetClientState *peer,
s->fd = fd;
s->listen_fd = -1;
+ s->connected = is_connected;
/* Disable Nagle algorithm on TCP sockets to reduce latency */
socket_set_nodelay(fd);
--
1.7.12.4
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2015-12-04 6:03 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-04 6:01 [Qemu-devel] [PATCH] report a error message if -net socket can not connect to server Li Zhijian
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).