Delete AF_UNIX socket after close
Since version 2.12.0 AF_UNIX socket created for QMP exchange is not deleted on instance shutdown. This is due to the fact that function qio_channel_socket_finalize() is called after qio_channel_socket_close(). Signed-off-by: Pavel Balaev <mail@void.so> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
		
							parent
							
								
									9fc53a10f8
								
							
						
					
					
						commit
						d66f78e1ea
					
				| @ -685,8 +685,10 @@ qio_channel_socket_close(QIOChannel *ioc, | ||||
|                          Error **errp) | ||||
| { | ||||
|     QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc); | ||||
|     int rc = 0; | ||||
| 
 | ||||
|     if (sioc->fd != -1) { | ||||
|         SocketAddress *addr = socket_local_address(sioc->fd, errp); | ||||
| #ifdef WIN32 | ||||
|         WSAEventSelect(sioc->fd, NULL, 0); | ||||
| #endif | ||||
| @ -697,8 +699,22 @@ qio_channel_socket_close(QIOChannel *ioc, | ||||
|             return -1; | ||||
|         } | ||||
|         sioc->fd = -1; | ||||
| 
 | ||||
|         if (addr && addr->type == SOCKET_ADDRESS_TYPE_UNIX | ||||
|             && addr->u.q_unix.path) { | ||||
|             if (unlink(addr->u.q_unix.path) < 0 && errno != ENOENT) { | ||||
|                 error_setg_errno(errp, errno, | ||||
|                                  "Failed to unlink socket %s", | ||||
|                                  addr->u.q_unix.path); | ||||
|                 rc = -1; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if (addr) { | ||||
|             qapi_free_SocketAddress(addr); | ||||
|         } | ||||
|     } | ||||
|     return 0; | ||||
|     return rc; | ||||
| } | ||||
| 
 | ||||
| static int | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Pavel Balaev
						Pavel Balaev