From 8016bd8d2869a25c7736b6e0b93ac9d50376b77b Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Fri, 23 Apr 2010 08:28:10 +0000 Subject: [PATCH] telnet and rexec have been broken. PR 49173. Based on patch submitted by James Wartell git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@937187 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 4 ++++ .../apache/tools/ant/taskdefs/optional/net/RExecTask.java | 6 ++++-- .../apache/tools/ant/taskdefs/optional/net/TelnetTask.java | 6 ++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/WHATSNEW b/WHATSNEW index b002ada38..de5401409 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -90,6 +90,10 @@ Fixed bugs: to a link inside the current directory without a leading ".". Bugzilla Report 49137 + * and failed to find the expected strings when + waiting for responses and thus always failed. + Bugzilla Report 49173 + Other changes: -------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java index a85b0224c..b6e4b9515 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java @@ -205,14 +205,15 @@ public class RExecTask extends Task { StringBuffer sb = new StringBuffer(); int windowStart = -s.length(); if (timeout == null || timeout.intValue() == 0) { - while (windowStart++ < 0 + while (windowStart < 0 || !sb.substring(windowStart).equals(s)) { sb.append((char) is.read()); + windowStart++; } } else { Calendar endTime = Calendar.getInstance(); endTime.add(Calendar.SECOND, timeout.intValue()); - while (windowStart++ < 0 + while (windowStart < 0 || !sb.substring(windowStart).equals(s)) { while (Calendar.getInstance().before(endTime) && is.available() == 0) { @@ -224,6 +225,7 @@ public class RExecTask extends Task { getLocation()); } sb.append((char) is.read()); + windowStart++; } } log(sb.toString(), Project.MSG_INFO); diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java index a982764de..14357ea05 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java @@ -342,14 +342,15 @@ public class TelnetTask extends Task { StringBuffer sb = new StringBuffer(); int windowStart = -s.length(); if (timeout == null || timeout.intValue() == 0) { - while (windowStart++ < 0 + while (windowStart < 0 || !sb.substring(windowStart).equals(s)) { sb.append((char) is.read()); + windowStart++; } } else { Calendar endTime = Calendar.getInstance(); endTime.add(Calendar.SECOND, timeout.intValue()); - while (windowStart++ < 0 + while (windowStart < 0 || !sb.substring(windowStart).equals(s)) { while (Calendar.getInstance().before(endTime) && is.available() == 0) { @@ -363,6 +364,7 @@ public class TelnetTask extends Task { getLocation()); } sb.append((char) is.read()); + windowStart++; } } log(sb.toString(), Project.MSG_INFO);