File xenconsole-no-multiple-connections.patch of Package xen.31421

Index: xen-4.8.0-testing/tools/console/client/main.c
===================================================================
--- xen-4.8.0-testing.orig/tools/console/client/main.c
+++ xen-4.8.0-testing/tools/console/client/main.c
@@ -101,6 +101,7 @@ static int get_pty_fd(struct xs_handle *
  * Assumes there is already a watch set in the store for this path. */
 {
 	struct timeval tv;
+	struct flock lock;
 	fd_set watch_fdset;
 	int xs_fd = xs_fileno(xs), pty_fd = -1;
 	int start, now;
@@ -124,6 +125,14 @@ static int get_pty_fd(struct xs_handle *
 				pty_fd = open(pty_path, O_RDWR | O_NOCTTY);
 				if (pty_fd == -1)
 					warn("Could not open tty `%s'", pty_path);
+				else {
+					memset(&lock, 0, sizeof(lock));
+					lock.l_type = F_WRLCK;
+					lock.l_whence = SEEK_SET;
+					if (fcntl(pty_fd, F_SETLK, &lock) != 0)
+						err(errno, "Could not lock tty '%s'",
+						    pty_path);
+				}
 			}
 			free(pty_path);
 		}
openSUSE Build Service is sponsored by