diff mbox

[v2,2/3] Separate inet_connect into inet_connect (blocking) and inet_nonblocking_connect

Message ID 1347448378-23915-3-git-send-email-owasserm@redhat.com
State New
Headers show

Commit Message

Orit Wasserman Sept. 12, 2012, 11:12 a.m. UTC
No need to add non blocking parameters to the blocking inet_connect

Signed-off-by: Orit Wasserman <owasserm@redhat.com>
---
 migration-tcp.c |    2 +-
 nbd.c           |    2 +-
 qemu-sockets.c  |   24 ++++++++++++++++++++----
 qemu_socket.h   |    4 +++-
 ui/vnc.c        |    2 +-
 5 files changed, 26 insertions(+), 8 deletions(-)

Comments

Markus Armbruster Sept. 13, 2012, 12:44 p.m. UTC | #1
Orit Wasserman <owasserm@redhat.com> writes:

> No need to add non blocking parameters to the blocking inet_connect
>
> Signed-off-by: Orit Wasserman <owasserm@redhat.com>
> ---
>  migration-tcp.c |    2 +-
>  nbd.c           |    2 +-
>  qemu-sockets.c  |   24 ++++++++++++++++++++----
>  qemu_socket.h   |    4 +++-
>  ui/vnc.c        |    2 +-
>  5 files changed, 26 insertions(+), 8 deletions(-)
>
> diff --git a/migration-tcp.c b/migration-tcp.c
> index ac891c3..7f6ad98 100644
> --- a/migration-tcp.c
> +++ b/migration-tcp.c
> @@ -88,7 +88,7 @@ int tcp_start_outgoing_migration(MigrationState *s, const char *host_port,
>      s->write = socket_write;
>      s->close = tcp_close;
>  
> -    s->fd = inet_connect(host_port, false, &in_progress, errp);
> +    s->fd = inet_nonblocking_connect(host_port, &in_progress, errp);
>      if (error_is_set(errp)) {
>          migrate_fd_error(s);
>          return -1;
> diff --git a/nbd.c b/nbd.c
> index 0dd60c5..206f75c 100644
> --- a/nbd.c
> +++ b/nbd.c
> @@ -162,7 +162,7 @@ int tcp_socket_outgoing(const char *address, uint16_t port)
>  
>  int tcp_socket_outgoing_spec(const char *address_and_port)
>  {
> -    return inet_connect(address_and_port, true, NULL, NULL);
> +    return inet_connect(address_and_port, NULL);
>  }
>  
>  int tcp_socket_incoming(const char *address, uint16_t port)
> diff --git a/qemu-sockets.c b/qemu-sockets.c
> index 68e4d30..4f5eca8 100644
> --- a/qemu-sockets.c
> +++ b/qemu-sockets.c
> @@ -518,16 +518,32 @@ int inet_listen(const char *str, char *ostr, int olen,
>      return sock;
>  }
>  
> -int inet_connect(const char *str, bool block, bool *in_progress, Error **errp)
> +int inet_connect(const char *str, Error **errp)
>  {
>      QemuOpts *opts;
>      int sock = -1;
>  
>      opts = qemu_opts_create(&dummy_opts, NULL, 0, NULL);
>      if (inet_parse(opts, str) == 0) {
> -        if (block) {
> -            qemu_opt_set(opts, "block", "on");
> -        }
> +        qemu_opt_set(opts, "block", "on");
> +        sock = inet_connect_opts(opts, NULL, errp);

Let's go one step further: make inet_connect_opts() take a bool block
argument, and drop the stupid QemuOpt "block".  That way, opts are again
for user options only.

> +    } else {
> +        error_set(errp, QERR_SOCKET_CREATE_FAILED);
> +    }
> +    qemu_opts_del(opts);
> +    return sock;
> +}
> +
> +
> +int inet_nonblocking_connect(const char *str, bool *in_progress,
> +                             Error **errp)
> +{
> +    QemuOpts *opts;
> +    int sock = -1;
> +
> +    opts = qemu_opts_create(&dummy_opts, NULL, 0, NULL);
> +    if (inet_parse(opts, str) == 0) {
> +        qemu_opt_set(opts, "block", "off");
>          sock = inet_connect_opts(opts, in_progress, errp);
>      } else {
>          error_set(errp, QERR_SOCKET_CREATE_FAILED);
[...]
Orit Wasserman Sept. 13, 2012, 4:40 p.m. UTC | #2
On 09/13/2012 03:44 PM, Markus Armbruster wrote:
> Orit Wasserman <owasserm@redhat.com> writes:
> 
>> No need to add non blocking parameters to the blocking inet_connect
>>
>> Signed-off-by: Orit Wasserman <owasserm@redhat.com>
>> ---
>>  migration-tcp.c |    2 +-
>>  nbd.c           |    2 +-
>>  qemu-sockets.c  |   24 ++++++++++++++++++++----
>>  qemu_socket.h   |    4 +++-
>>  ui/vnc.c        |    2 +-
>>  5 files changed, 26 insertions(+), 8 deletions(-)
>>
>> diff --git a/migration-tcp.c b/migration-tcp.c
>> index ac891c3..7f6ad98 100644
>> --- a/migration-tcp.c
>> +++ b/migration-tcp.c
>> @@ -88,7 +88,7 @@ int tcp_start_outgoing_migration(MigrationState *s, const char *host_port,
>>      s->write = socket_write;
>>      s->close = tcp_close;
>>  
>> -    s->fd = inet_connect(host_port, false, &in_progress, errp);
>> +    s->fd = inet_nonblocking_connect(host_port, &in_progress, errp);
>>      if (error_is_set(errp)) {
>>          migrate_fd_error(s);
>>          return -1;
>> diff --git a/nbd.c b/nbd.c
>> index 0dd60c5..206f75c 100644
>> --- a/nbd.c
>> +++ b/nbd.c
>> @@ -162,7 +162,7 @@ int tcp_socket_outgoing(const char *address, uint16_t port)
>>  
>>  int tcp_socket_outgoing_spec(const char *address_and_port)
>>  {
>> -    return inet_connect(address_and_port, true, NULL, NULL);
>> +    return inet_connect(address_and_port, NULL);
>>  }
>>  
>>  int tcp_socket_incoming(const char *address, uint16_t port)
>> diff --git a/qemu-sockets.c b/qemu-sockets.c
>> index 68e4d30..4f5eca8 100644
>> --- a/qemu-sockets.c
>> +++ b/qemu-sockets.c
>> @@ -518,16 +518,32 @@ int inet_listen(const char *str, char *ostr, int olen,
>>      return sock;
>>  }
>>  
>> -int inet_connect(const char *str, bool block, bool *in_progress, Error **errp)
>> +int inet_connect(const char *str, Error **errp)
>>  {
>>      QemuOpts *opts;
>>      int sock = -1;
>>  
>>      opts = qemu_opts_create(&dummy_opts, NULL, 0, NULL);
>>      if (inet_parse(opts, str) == 0) {
>> -        if (block) {
>> -            qemu_opt_set(opts, "block", "on");
>> -        }
>> +        qemu_opt_set(opts, "block", "on");
>> +        sock = inet_connect_opts(opts, NULL, errp);
> 
> Let's go one step further: make inet_connect_opts() take a bool block
> argument, and drop the stupid QemuOpt "block".  That way, opts are again
> for user options only.
Very good idea !
> 
>> +    } else {
>> +        error_set(errp, QERR_SOCKET_CREATE_FAILED);
>> +    }
>> +    qemu_opts_del(opts);
>> +    return sock;
>> +}
>> +
>> +
>> +int inet_nonblocking_connect(const char *str, bool *in_progress,
>> +                             Error **errp)
>> +{
>> +    QemuOpts *opts;
>> +    int sock = -1;
>> +
>> +    opts = qemu_opts_create(&dummy_opts, NULL, 0, NULL);
>> +    if (inet_parse(opts, str) == 0) {
>> +        qemu_opt_set(opts, "block", "off");
>>          sock = inet_connect_opts(opts, in_progress, errp);
>>      } else {
>>          error_set(errp, QERR_SOCKET_CREATE_FAILED);
> [...]
>
diff mbox

Patch

diff --git a/migration-tcp.c b/migration-tcp.c
index ac891c3..7f6ad98 100644
--- a/migration-tcp.c
+++ b/migration-tcp.c
@@ -88,7 +88,7 @@  int tcp_start_outgoing_migration(MigrationState *s, const char *host_port,
     s->write = socket_write;
     s->close = tcp_close;
 
-    s->fd = inet_connect(host_port, false, &in_progress, errp);
+    s->fd = inet_nonblocking_connect(host_port, &in_progress, errp);
     if (error_is_set(errp)) {
         migrate_fd_error(s);
         return -1;
diff --git a/nbd.c b/nbd.c
index 0dd60c5..206f75c 100644
--- a/nbd.c
+++ b/nbd.c
@@ -162,7 +162,7 @@  int tcp_socket_outgoing(const char *address, uint16_t port)
 
 int tcp_socket_outgoing_spec(const char *address_and_port)
 {
-    return inet_connect(address_and_port, true, NULL, NULL);
+    return inet_connect(address_and_port, NULL);
 }
 
 int tcp_socket_incoming(const char *address, uint16_t port)
diff --git a/qemu-sockets.c b/qemu-sockets.c
index 68e4d30..4f5eca8 100644
--- a/qemu-sockets.c
+++ b/qemu-sockets.c
@@ -518,16 +518,32 @@  int inet_listen(const char *str, char *ostr, int olen,
     return sock;
 }
 
-int inet_connect(const char *str, bool block, bool *in_progress, Error **errp)
+int inet_connect(const char *str, Error **errp)
 {
     QemuOpts *opts;
     int sock = -1;
 
     opts = qemu_opts_create(&dummy_opts, NULL, 0, NULL);
     if (inet_parse(opts, str) == 0) {
-        if (block) {
-            qemu_opt_set(opts, "block", "on");
-        }
+        qemu_opt_set(opts, "block", "on");
+        sock = inet_connect_opts(opts, NULL, errp);
+    } else {
+        error_set(errp, QERR_SOCKET_CREATE_FAILED);
+    }
+    qemu_opts_del(opts);
+    return sock;
+}
+
+
+int inet_nonblocking_connect(const char *str, bool *in_progress,
+                             Error **errp)
+{
+    QemuOpts *opts;
+    int sock = -1;
+
+    opts = qemu_opts_create(&dummy_opts, NULL, 0, NULL);
+    if (inet_parse(opts, str) == 0) {
+        qemu_opt_set(opts, "block", "off");
         sock = inet_connect_opts(opts, in_progress, errp);
     } else {
         error_set(errp, QERR_SOCKET_CREATE_FAILED);
diff --git a/qemu_socket.h b/qemu_socket.h
index 30ae6af..c47f2b0 100644
--- a/qemu_socket.h
+++ b/qemu_socket.h
@@ -43,7 +43,9 @@  int inet_listen_opts(QemuOpts *opts, int port_offset, Error **errp);
 int inet_listen(const char *str, char *ostr, int olen,
                 int socktype, int port_offset, Error **errp);
 int inet_connect_opts(QemuOpts *opts, bool *in_progress, Error **errp);
-int inet_connect(const char *str, bool block, bool *in_progress, Error **errp);
+int inet_connect(const char *str, Error **errp);
+int inet_nonblocking_connect(const char *str, bool *in_progress,
+                             Error **errp);
 int inet_dgram_opts(QemuOpts *opts);
 const char *inet_strfamily(int family);
 
diff --git a/ui/vnc.c b/ui/vnc.c
index 385e345..01b2daf 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -3061,7 +3061,7 @@  int vnc_display_open(DisplayState *ds, const char *display)
         if (strncmp(display, "unix:", 5) == 0)
             vs->lsock = unix_connect(display+5);
         else
-            vs->lsock = inet_connect(display, true, NULL, NULL);
+            vs->lsock = inet_connect(display, NULL);
         if (-1 == vs->lsock) {
             g_free(vs->display);
             vs->display = NULL;