From 403bffe8a295d0b5cc3aa0e8679eb65a3d4c12e6 Mon Sep 17 00:00:00 2001 From: Dustin Kirkland Date: Wed, 16 Jun 2010 12:42:46 -0500 Subject: [PATCH] usr/bin/byobu-launcher: handle nasty recursion, if ssh'ing to localhost, and byobu-launches-by-default, LP: #595137 --- debian/changelog | 3 ++- usr/bin/byobu-launcher | 24 +++++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index b4ec961d..28af0272 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ byobu (2.80) unreleased; urgency=low - * UNRELEASED + * usr/bin/byobu-launcher: handle nasty recursion, if ssh'ing to localhost, + and byobu-launches-by-default, LP: #595137 -- Dustin Kirkland Fri, 04 Jun 2010 16:05:03 -0500 diff --git a/usr/bin/byobu-launcher b/usr/bin/byobu-launcher index b0b219e6..70311aab 100755 --- a/usr/bin/byobu-launcher +++ b/usr/bin/byobu-launcher @@ -19,10 +19,32 @@ if [ ! -r "$HOME/.byobu/disable-autolaunch" ]; then if printf "$TERM" | grep -qs "screen"; then + # Handle nesting printf "$(gettext 'Do you want to launch byobu in a nested session?') [y/N]: " answer=$(head -n1) if [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then - exec /usr/bin/byobu "$@" + # Prevent nasty launch recursion, if ssh'ing to localhost + if [ -n "$SSH_CONNECTION" ]; then + # This is an SSH session + from=$(echo "$SSH_CONNECTION" | awk '{print $1}') + to=$(echo "$SSH_CONNECTION" | awk '{print $3}') + if [ "$from" = "$to" ]; then + # We have ssh'd from this machine, to this machine + if screen -ls | grep -qs '(Attached)$'; then + # And there is already an attached screen session + # Exit to prevent recursion + false + else + exec /usr/bin/byobu "$@" + fi + else + exec /usr/bin/byobu "$@" + fi + else + exec /usr/bin/byobu "$@" + fi + else + false fi else exec /usr/bin/byobu "$@"