diff mbox

vnc: generalize "VNC server running on ..." message

Message ID 1465214470-12515-1-git-send-email-pbonzini@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Paolo Bonzini June 6, 2016, 12:01 p.m. UTC
The message is useful whenever the user specifies "-vnc to=XX".
Move it to ui/vnc.c.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 include/ui/console.h |  7 -------
 ui/vnc.c             | 16 ++++++++--------
 vl.c                 |  7 -------
 3 files changed, 8 insertions(+), 22 deletions(-)

Comments

Daniel P. Berrangé June 6, 2016, 12:06 p.m. UTC | #1
On Mon, Jun 06, 2016 at 02:01:10PM +0200, Paolo Bonzini wrote:
> The message is useful whenever the user specifies "-vnc to=XX".
> Move it to ui/vnc.c.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  include/ui/console.h |  7 -------
>  ui/vnc.c             | 16 ++++++++--------
>  vl.c                 |  7 -------
>  3 files changed, 8 insertions(+), 22 deletions(-)
> 
> diff --git a/include/ui/console.h b/include/ui/console.h
> index 52a5f65..7c1fdba 100644
> --- a/include/ui/console.h
> +++ b/include/ui/console.h
> @@ -460,7 +460,6 @@ void vnc_display_add_client(const char *id, int csock, bool skipauth);
>  #ifdef CONFIG_VNC
>  int vnc_display_password(const char *id, const char *password);
>  int vnc_display_pw_expire(const char *id, time_t expires);
> -char *vnc_display_local_addr(const char *id);
>  QemuOpts *vnc_parse(const char *str, Error **errp);
>  int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp);
>  #else
> @@ -482,12 +481,6 @@ static inline int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp)
>      error_setg(errp, "VNC support is disabled");
>      return -1;
>  }
> -static inline char *vnc_display_local_addr(const char *id)
> -{
> -    /* This must never be called if CONFIG_VNC is disabled */
> -    error_report("VNC support is disabled");
> -    abort();
> -}
>  #endif
>  
>  /* curses.c */
> diff --git a/ui/vnc.c b/ui/vnc.c
> index c862fdc..a2bf535 100644
> --- a/ui/vnc.c
> +++ b/ui/vnc.c
> @@ -3207,15 +3207,11 @@ int vnc_display_pw_expire(const char *id, time_t expires)
>      return 0;
>  }
>  
> -char *vnc_display_local_addr(const char *id)
> +static void vnc_display_print_local_addr(VncDisplay *vs)
>  {
> -    VncDisplay *vs = vnc_display_find(id);
>      SocketAddress *addr;
> -    char *ret;
>      Error *err = NULL;
>  
> -    assert(vs);
> -
>      addr = qio_channel_socket_get_local_address(vs->lsock, &err);
>      if (!addr) {
>          return NULL;
> @@ -3225,11 +3221,9 @@ char *vnc_display_local_addr(const char *id)
>          qapi_free_SocketAddress(addr);
>          return NULL;
>      }
> -    ret = g_strdup_printf("%s;%s", addr->u.inet.data->host,
> +    printf("VNC server running on '%s:%s;\n", addr->u.inet.data->host,
>                            addr->u.inet.data->port);
>      qapi_free_SocketAddress(addr);
> -
> -    return ret;
>  }
>  
>  static QemuOptsList qemu_vnc_opts = {
> @@ -3515,6 +3509,7 @@ void vnc_display_open(const char *id, Error **errp)
>      const char *vnc;
>      char *h;
>      const char *credid;
> +    int show_vnc_port = 0;
>      bool sasl = false;
>  #ifdef CONFIG_VNC_SASL
>      int saslErr;
> @@ -3594,6 +3589,7 @@ void vnc_display_open(const char *id, Error **errp)
>              if (to) {
>                  inet->has_to = true;
>                  inet->to = to + 5900;
> +                show_vnc_port = 1;
>              }
>              inet->ipv4 = ipv4;
>              inet->has_ipv4 = has_ipv4;
> @@ -3838,6 +3834,10 @@ void vnc_display_open(const char *id, Error **errp)
>          }
>      }
>  
> +    if (show_vnc_port) {
> +        vnc_display_print_local_addr(vs);
> +    }
> +
>      qapi_free_SocketAddress(saddr);
>      qapi_free_SocketAddress(wsaddr);
>      return;

By calling this from vnc_display_open, you'll cause it to
print to stdout, even when using QMP, because qmp_change_vnc_listen
calls vnc_display_open.

Regards,
Daniel
Paolo Bonzini June 6, 2016, 2:08 p.m. UTC | #2
On 06/06/2016 14:06, Daniel P. Berrange wrote:
>> > @@ -3838,6 +3834,10 @@ void vnc_display_open(const char *id, Error **errp)
>> >          }
>> >      }
>> >  
>> > +    if (show_vnc_port) {
>> > +        vnc_display_print_local_addr(vs);
>> > +    }
>> > +
>> >      qapi_free_SocketAddress(saddr);
>> >      qapi_free_SocketAddress(wsaddr);
>> >      return;
> By calling this from vnc_display_open, you'll cause it to
> print to stdout, even when using QMP, because qmp_change_vnc_listen
> calls vnc_display_open.

Hmm, yes.  Markus, what's the best thing to do?  Some kind of
monitor_printf?

Thanks,

Paolo
Markus Armbruster June 6, 2016, 3:07 p.m. UTC | #3
Paolo Bonzini <pbonzini@redhat.com> writes:

> On 06/06/2016 14:06, Daniel P. Berrange wrote:
>>> > @@ -3838,6 +3834,10 @@ void vnc_display_open(const char *id, Error **errp)
>>> >          }
>>> >      }
>>> >  
>>> > +    if (show_vnc_port) {
>>> > +        vnc_display_print_local_addr(vs);
>>> > +    }
>>> > +
>>> >      qapi_free_SocketAddress(saddr);
>>> >      qapi_free_SocketAddress(wsaddr);
>>> >      return;
>> By calling this from vnc_display_open, you'll cause it to
>> print to stdout, even when using QMP, because qmp_change_vnc_listen
>> calls vnc_display_open.
>
> Hmm, yes.  Markus, what's the best thing to do?  Some kind of
> monitor_printf?

Would error_printf_unless_qmp() do?  We already use it in
vnc_display_password().
diff mbox

Patch

diff --git a/include/ui/console.h b/include/ui/console.h
index 52a5f65..7c1fdba 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -460,7 +460,6 @@  void vnc_display_add_client(const char *id, int csock, bool skipauth);
 #ifdef CONFIG_VNC
 int vnc_display_password(const char *id, const char *password);
 int vnc_display_pw_expire(const char *id, time_t expires);
-char *vnc_display_local_addr(const char *id);
 QemuOpts *vnc_parse(const char *str, Error **errp);
 int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp);
 #else
@@ -482,12 +481,6 @@  static inline int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp)
     error_setg(errp, "VNC support is disabled");
     return -1;
 }
-static inline char *vnc_display_local_addr(const char *id)
-{
-    /* This must never be called if CONFIG_VNC is disabled */
-    error_report("VNC support is disabled");
-    abort();
-}
 #endif
 
 /* curses.c */
diff --git a/ui/vnc.c b/ui/vnc.c
index c862fdc..a2bf535 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -3207,15 +3207,11 @@  int vnc_display_pw_expire(const char *id, time_t expires)
     return 0;
 }
 
-char *vnc_display_local_addr(const char *id)
+static void vnc_display_print_local_addr(VncDisplay *vs)
 {
-    VncDisplay *vs = vnc_display_find(id);
     SocketAddress *addr;
-    char *ret;
     Error *err = NULL;
 
-    assert(vs);
-
     addr = qio_channel_socket_get_local_address(vs->lsock, &err);
     if (!addr) {
         return NULL;
@@ -3225,11 +3221,9 @@  char *vnc_display_local_addr(const char *id)
         qapi_free_SocketAddress(addr);
         return NULL;
     }
-    ret = g_strdup_printf("%s;%s", addr->u.inet.data->host,
+    printf("VNC server running on '%s:%s;\n", addr->u.inet.data->host,
                           addr->u.inet.data->port);
     qapi_free_SocketAddress(addr);
-
-    return ret;
 }
 
 static QemuOptsList qemu_vnc_opts = {
@@ -3515,6 +3509,7 @@  void vnc_display_open(const char *id, Error **errp)
     const char *vnc;
     char *h;
     const char *credid;
+    int show_vnc_port = 0;
     bool sasl = false;
 #ifdef CONFIG_VNC_SASL
     int saslErr;
@@ -3594,6 +3589,7 @@  void vnc_display_open(const char *id, Error **errp)
             if (to) {
                 inet->has_to = true;
                 inet->to = to + 5900;
+                show_vnc_port = 1;
             }
             inet->ipv4 = ipv4;
             inet->has_ipv4 = has_ipv4;
@@ -3838,6 +3834,10 @@  void vnc_display_open(const char *id, Error **errp)
         }
     }
 
+    if (show_vnc_port) {
+        vnc_display_print_local_addr(vs);
+    }
+
     qapi_free_SocketAddress(saddr);
     qapi_free_SocketAddress(wsaddr);
     return;
diff --git a/vl.c b/vl.c
index 17e6b5e..d47d558 100644
--- a/vl.c
+++ b/vl.c
@@ -2960,7 +2960,6 @@  int main(int argc, char **argv, char **envp)
     const char *qtest_log = NULL;
     const char *pid_file = NULL;
     const char *incoming = NULL;
-    int show_vnc_port = 0;
     bool defconfig = true;
     bool userconfig = true;
     bool nographic = false;
@@ -4219,7 +4218,6 @@  int main(int argc, char **argv, char **envp)
         display_type = DT_COCOA;
 #elif defined(CONFIG_VNC)
         vnc_parse("localhost:0,to=99,id=default", &error_abort);
-        show_vnc_port = 1;
 #else
         display_type = DT_NONE;
 #endif
@@ -4566,11 +4564,6 @@  int main(int argc, char **argv, char **envp)
     /* init remote displays */
     qemu_opts_foreach(qemu_find_opts("vnc"),
                       vnc_init_func, NULL, NULL);
-    if (show_vnc_port) {
-        char *ret = vnc_display_local_addr("default");
-        printf("VNC server running on '%s'\n", ret);
-        g_free(ret);
-    }
 
     if (using_spice) {
         qemu_spice_display_init();