Bug #9949

Net::FTP#gettextfile truncates last line when missing newline before EOF

Added by Andrew Vit about 1 year ago. Updated about 1 year ago.

[ruby-core:63205]
Status:Closed
Priority:Normal
Assignee:Shugo Maeda
ruby -v:ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] Backport:2.0.0: DONE, 2.1: DONE

Description

Capturing a file from FTP using the default ftp.get (assuming binary is false) causes text files to get truncated before the last occurrence of "\n". This means that files missing a newline before EOF are corrupted.

Net::FTP.open(host, username, password) do |ftp|
  puts ftp.gettextfile(filename, nil)
end

Tested with "\n" in different positions to characterize the incorrect behaviour:

file: "<xml></xml>"   output: ""
file: "<xml>\n</xml>" output: "<xml>"
file: "<xml></xml>\n" output: "<xml></xml>"

Behaviour looks correct in 1.9.3, returns full file content in all cases. Regression exists in ruby 2.0 and 2.1. Tested with:

ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13]
ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-darwin13.1.0]

Associated revisions

Revision 46457
Added by Shugo Maeda about 1 year ago

  • lib/net/ftp.rb (gets, readline): read lines without LF properly.
    [Bug #9949]

  • test/net/ftp/test_buffered_socket.rb: related test.

Revision 46457
Added by Shugo Maeda about 1 year ago

  • lib/net/ftp.rb (gets, readline): read lines without LF properly.
    [Bug #9949]

  • test/net/ftp/test_buffered_socket.rb: related test.

Revision 46618
Added by Tomoyuki Chikanaga about 1 year ago

merge revision(s) r46457,r46458: [Backport #9949]

* lib/net/ftp.rb (gets, readline): read lines without LF properly.
   [Bug #9949]

* test/net/ftp/test_buffered_socket.rb: related test.

Revision 46735
Added by Usaku NAKAMURA about 1 year ago

merge revision(s) 46457,46458: [Backport #9949]

* lib/net/ftp.rb (gets, readline): read lines without LF properly.
   [Bug #9949]

* test/net/ftp/test_buffered_socket.rb: related test.

History

#1 Updated by Shugo Maeda about 1 year ago

  • Status changed from Open to Assigned
  • Assignee set to Shugo Maeda

#2 Updated by Shugo Maeda about 1 year ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

Applied in changeset r46457.


  • lib/net/ftp.rb (gets, readline): read lines without LF properly.
    [Bug #9949]

  • test/net/ftp/test_buffered_socket.rb: related test.

#3 Updated by Tomoyuki Chikanaga about 1 year ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN to 2.0.0: REQUIRED, 2.1: REQUIRED

#4 Updated by Tomoyuki Chikanaga about 1 year ago

  • Backport changed from 2.0.0: REQUIRED, 2.1: REQUIRED to 2.0.0: REQUIRED, 2.1: DONE

Backported into ruby_2_1 branch at r46618.

#5 Updated by Usaku NAKAMURA about 1 year ago

  • Backport changed from 2.0.0: REQUIRED, 2.1: DONE to 2.0.0: DONE, 2.1: DONE

backported into ruby_2_0_0 at r46735.

Also available in: Atom PDF