On 03/05/2012 12:03 PM, Amos Kong wrote: > Use tcp_client_start() in those two functions: > tcp_start_outgoing_migration() > net_socket_connect_init() > > Signed-off-by: Amos Kong <akong@xxxxxxxxxx> > --- > migration-tcp.c | 41 +++++++++++++---------------------------- > net/socket.c | 41 +++++++++++------------------------------ > 2 files changed, 24 insertions(+), 58 deletions(-) > > diff --git a/migration-tcp.c b/migration-tcp.c > index ecadd10..4f89bff 100644 > --- a/migration-tcp.c > +++ b/migration-tcp.c > @@ -81,43 +81,28 @@ static void tcp_wait_for_connect(void *opaque) > > int tcp_start_outgoing_migration(MigrationState *s, const char *host_port) > { > - struct sockaddr_in addr; > int ret; > - > - ret = parse_host_port(&addr, host_port); > - if (ret < 0) { > - return ret; > - } > + int fd; > > s->get_error = socket_errno; > s->write = socket_write; > s->close = tcp_close; > > - s->fd = qemu_socket(PF_INET, SOCK_STREAM, 0); > - if (s->fd == -1) { > - DPRINTF("Unable to open socket"); > - return -socket_error(); > - } > - > - socket_set_nonblock(s->fd); > - > - do { > - ret = connect(s->fd, (struct sockaddr *)&addr, sizeof(addr)); > - if (ret == -1) { > - ret = -socket_error(); > - } > - if (ret == -EINPROGRESS || ret == -EWOULDBLOCK) { > - qemu_set_fd_handler2(s->fd, NULL, NULL, tcp_wait_for_connect, s); > - return 0; > - } > - } while (ret == -EINTR); > - > - if (ret < 0) { > + ret = tcp_client_start(host_port, &fd); > + s->fd = fd; you don't need fd you can pass s->fd to the function. Orit > + if (ret == -EINPROGRESS || ret == -EWOULDBLOCK) { > + DPRINTF("connect in progress"); > + qemu_set_fd_handler2(s->fd, NULL, NULL, tcp_wait_for_connect, s); > + } else if (ret < 0) { > DPRINTF("connect failed\n"); > - migrate_fd_error(s); > + if (ret != -EINVAL) { > + migrate_fd_error(s); > + } > return ret; > + } else { > + migrate_fd_connect(s); > } > - migrate_fd_connect(s); > + > return 0; > } > > diff --git a/net/socket.c b/net/socket.c > index 5feb3d2..b7cd8ec 100644 > --- a/net/socket.c > +++ b/net/socket.c > @@ -434,41 +434,22 @@ static int net_socket_connect_init(VLANState *vlan, > const char *host_str) > { > NetSocketState *s; > - int fd, connected, ret, err; > + int fd, connected, ret; > struct sockaddr_in saddr; > > - if (parse_host_port(&saddr, host_str) < 0) > - return -1; > - > - fd = qemu_socket(PF_INET, SOCK_STREAM, 0); > - if (fd < 0) { > - perror("socket"); > - return -1; > - } > - socket_set_nonblock(fd); > - > - connected = 0; > - for(;;) { > - ret = connect(fd, (struct sockaddr *)&saddr, sizeof(saddr)); > - if (ret < 0) { > - err = socket_error(); > - if (err == EINTR || err == EWOULDBLOCK) { > - } else if (err == EINPROGRESS) { > - break; > + ret = tcp_client_start(host_str, &fd); > + if (ret == -EINPROGRESS || ret == -EWOULDBLOCK) { > + connected = 0; > #ifdef _WIN32 > - } else if (err == WSAEALREADY || err == WSAEINVAL) { > - break; > + } else if (ret == -WSAEALREADY || ret == -WSAEINVAL) { > + connected = 0; > #endif > - } else { > - perror("connect"); > - closesocket(fd); > - return -1; > - } > - } else { > - connected = 1; > - break; > - } > + } else if (ret < 0) { > + return -1; > + } else { > + connected = 1; > } > + > s = net_socket_fd_init(vlan, model, name, fd, connected); > if (!s) > return -1; > > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html