vnc: fix "info vnc" with "-vnc ..., reverse=on"
When reverse connection is in use, there is no active VNC server
socket.  Because of this, getsockopt(-1, ...) is attempted and
the following error is emitted:
    $ socat TCP-LISTEN:5900,reuseaddr TCP-LISTEN:5901,reuseaddr &
    $ x86_64-softmmu/qemu-system-x86_64 -vnc localhost:5900,reverse -monitor stdio
    QEMU 1.2.50 monitor - type 'help' for more information
    (qemu) info vnc
    An undefined error has occurred
Because however the host, family, service and auth fields are
optional, we can just exit if there is no active server socket.
    $ x86_64-softmmu/qemu-system-x86_64 -vnc localhost:5900,reverse -monitor stdio
    QEMU 1.2.50 monitor - type 'help' for more information
    (qemu) info vnc
    Server:
    Client:
         address: 127.0.0.1:5900
      x509_dname: none
        username: none
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
			
			
This commit is contained in:
		
							parent
							
								
									2f5368017f
								
							
						
					
					
						commit
						417b0b8890
					
				
							
								
								
									
										4
									
								
								ui/vnc.c
								
								
								
								
							
							
						
						
									
										4
									
								
								ui/vnc.c
								
								
								
								
							| 
						 | 
					@ -372,6 +372,10 @@ VncInfo *qmp_query_vnc(Error **errp)
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (vnc_display->lsock == -1) {
 | 
				
			||||||
 | 
					            return info;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (getsockname(vnc_display->lsock, (struct sockaddr *)&sa,
 | 
					        if (getsockname(vnc_display->lsock, (struct sockaddr *)&sa,
 | 
				
			||||||
                        &salen) == -1) {
 | 
					                        &salen) == -1) {
 | 
				
			||||||
            error_set(errp, QERR_UNDEFINED_ERROR);
 | 
					            error_set(errp, QERR_UNDEFINED_ERROR);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue