vhost-user: disconnect on HUP
In some cases, qemu_chr_fe_read_all() on HUP event doesn't raise CHR_EVENT_CLOSED because the read/recv function returns -1 on disconnected peers (for example with tch_chr_recv, an ECONNRESET errno overwritten as EIO). It is simpler to explicitely disconnect on HUP, rising CHR_EVENT_CLOSED if it wasn't disconnected already. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
		
							parent
							
								
									d9d261142d
								
							
						
					
					
						commit
						9c7d18b3a5
					
				| @ -188,12 +188,8 @@ static gboolean net_vhost_user_watch(GIOChannel *chan, GIOCondition cond, | ||||
|                                            void *opaque) | ||||
| { | ||||
|     VhostUserState *s = opaque; | ||||
|     uint8_t buf[1]; | ||||
| 
 | ||||
|     /* We don't actually want to read anything, but CHR_EVENT_CLOSED will be
 | ||||
|      * raised as a side-effect of the read. | ||||
|      */ | ||||
|     qemu_chr_fe_read_all(s->chr, buf, sizeof(buf)); | ||||
|     qemu_chr_disconnect(s->chr); | ||||
| 
 | ||||
|     return FALSE; | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Marc-André Lureau
						Marc-André Lureau