From 8eb0ca32b2d447c1499ad0bfbc0527edeff55d90 Mon Sep 17 00:00:00 2001 From: Vlad Glagolev Date: Sat, 18 Sep 2010 17:47:49 +0400 Subject: gvfs: fixed work with openssh 5.6 (cherry picked from commit c5cbb54dd1bf2129c4cf41097f48d2badfd10e80) --- gnome2-libs/gvfs/DETAILS | 1 + gnome2-libs/gvfs/HISTORY | 5 ++++ gnome2-libs/gvfs/PRE_BUILD | 4 +++ gnome2-libs/gvfs/openssh56.patch | 56 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100755 gnome2-libs/gvfs/PRE_BUILD create mode 100644 gnome2-libs/gvfs/openssh56.patch diff --git a/gnome2-libs/gvfs/DETAILS b/gnome2-libs/gvfs/DETAILS index 92c69deaf5..e26a2e12dc 100755 --- a/gnome2-libs/gvfs/DETAILS +++ b/gnome2-libs/gvfs/DETAILS @@ -1,5 +1,6 @@ SPELL=gvfs VERSION=1.6.3 + PATCHLEVEL=1 BRANCH=`echo $VERSION|cut -d . -f 1,2` SOURCE=$SPELL-$VERSION.tar.bz2 SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELL-$VERSION" diff --git a/gnome2-libs/gvfs/HISTORY b/gnome2-libs/gvfs/HISTORY index a7f49603a0..f0bbab663b 100644 --- a/gnome2-libs/gvfs/HISTORY +++ b/gnome2-libs/gvfs/HISTORY @@ -1,3 +1,8 @@ +2010-09-18 Vlad Glagolev + * PRE_BUILD: added, to apply patch + * openssh56.patch: added, to fix a bug with openssh 5.6 release + (gnome bug #629184) + 2010-07-13 Ladislav Hagara * DETAILS: 1.6.3 diff --git a/gnome2-libs/gvfs/PRE_BUILD b/gnome2-libs/gvfs/PRE_BUILD new file mode 100755 index 0000000000..b7dd25a1a4 --- /dev/null +++ b/gnome2-libs/gvfs/PRE_BUILD @@ -0,0 +1,4 @@ +default_pre_build && +cd "$SOURCE_DIRECTORY" && + +patch -p0 < "$SPELL_DIRECTORY/openssh56.patch" diff --git a/gnome2-libs/gvfs/openssh56.patch b/gnome2-libs/gvfs/openssh56.patch new file mode 100644 index 0000000000..d3a146e966 --- /dev/null +++ b/gnome2-libs/gvfs/openssh56.patch @@ -0,0 +1,56 @@ +--- daemon/gvfsbackendsftp.c ++++ daemon/gvfsbackendsftp.c +@@ -24,6 +24,7 @@ + #include + + #include ++#include + #include + #include + #include +@@ -852,6 +853,9 @@ handle_login (GVfsBackend *backend, + const gchar *authtype = NULL; + gchar *object = NULL; + char *prompt; ++ /* ++ * TODO: compare this with sshfs.c where the prompt appears on stdin_fd ++ */ + + if (op_backend->client_vendor == SFTP_VENDOR_SSH) + prompt_fd = stderr_fd; +@@ -864,14 +868,13 @@ handle_login (GVfsBackend *backend, + ret_val = TRUE; + while (1) + { +- FD_ZERO (&ifds); +- FD_SET (stdout_fd, &ifds); +- FD_SET (prompt_fd, &ifds); +- +- tv.tv_sec = SFTP_READ_TIMEOUT; +- tv.tv_usec = 0; ++ struct pollfd fds[2]; ++ fds[0].fd = stdout_fd; ++ fds[0].events = POLLIN; ++ fds[1].fd = prompt_fd; ++ fds[1].events = POLLIN; + +- ret = select (MAX (stdout_fd, prompt_fd)+1, &ifds, NULL, NULL, &tv); ++ ret = poll(fds, 2, SFTP_READ_TIMEOUT); + + if (ret <= 0) + { +@@ -882,11 +885,11 @@ handle_login (GVfsBackend *backend, + break; + } + +- if (FD_ISSET (stdout_fd, &ifds)) ++ if (fds[0].revents) + break; /* Got reply to initial INIT request */ + +- g_assert (FD_ISSET (prompt_fd, &ifds)); +- ++ if (!(fds[1].revents & POLLIN)) ++ continue; + + len = g_input_stream_read (prompt_stream, + buffer, sizeof (buffer) - 1, -- cgit v1.2.3