Project

General

Profile

Actions

Bug #8668

closed

Net::Telnet waitfor('Waittime'=>0) may wait forever

Added by scottj97 (Scott Johnson) almost 11 years ago. Updated over 7 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0p247 (2013-06-27 revision 41674) [armv6l-linux-eabihf]
Backport:
[ruby-core:56118]

Description

waitfor('Waittime'=>0) says it will not wait once the expected prompt has matched, yet if the remote end continues to send data, it will in fact wait, possibly forever.

Line 555 of net/telnet.rb (from 2.0.0) is:

  until(prompt === line and not IO::select([@sock], nil, nil, waittime))

Which means even though prompt has matched, it will still call IO::select, and if new data has arrived, it will make another pass through this loop. In my case there is constantly new data arriving (though it is only telnet control data) and so the loop never exits even though the prompt was matched long ago.

I fixed this with:

  until(prompt === line and (waittime==0 or not IO::select([@sock], nil, nil, waittime)))

Though I don't know what other implications that change might have.

Updated by scottj97 (Scott Johnson) almost 11 years ago

There is a related bug with 'Timeout': if the remote end keeps sending data (even if only telnet control codes), but it never matches the prompt, waitfor() will wait forever.

Updated by hsbt (Hiroshi SHIBATA) over 7 years ago

  • Status changed from Open to Rejected
  • Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN to 2.1: UNKNOWN

net-telnet has been extracted https://github.com/ruby/net-telnet

Actions

Also available in: Atom PDF

Like0
Like0Like0