[ruby-core:114882] [Ruby master Misc#19899] Ruby3.3.-preview2: Behaviour changes of Socket.recv when the sever closes the connection

Issue #19899 has been reported by jbeschi (jacopo beschi). ---------------------------------------- Misc #19899: Ruby3.3.-preview2: Behaviour changes of Socket.recv when the sever closes the connection https://bugs.ruby-lang.org/issues/19899 * Author: jbeschi (jacopo beschi) * Status: Open * Priority: Normal ---------------------------------------- I noticed that `Socket#recv` now returns `nil` instead of `""` when the server closes the connection, is it expected? If yes, I suggest mentioning it to the [release page](https://www.ruby-lang.org/en/news/2023/09/14/ruby-3-3-0-preview2-released/). Example: ``` ruby # server.rb require "socket" port = 3030 server = TCPServer.new("", port) while(conn = server.accept) #serves forever conn.print "hello" conn.close end # client.rb require 'socket' port = 3030 socket = TCPSocket.new("localhost", port) 2.times do res = socket.recv(1012) puts "received:" p res end socket.close ``` ``` jacopo-37s-mb 3.2.0 ~ ruby client.rb received: "hello" received: "" jacopo-37s-mb 3.2.0 ~ rbenv local 3.3.0-preview2 jacopo-37s-mb 3.3.0-preview2 ~ ruby client.rb received: "hello" received: nil ``` Thanks! -- https://bugs.ruby-lang.org/

Issue #19899 has been updated by alanwu (Alan Wu). Looks to be an intentional change from [Bug #19012]. CC @byroot ---------------------------------------- Misc #19899: Ruby3.3.0-preview2: Behaviour changes of Socket.recv when the sever closes the connection https://bugs.ruby-lang.org/issues/19899#change-104778 * Author: jbeschi (jacopo beschi) * Status: Open * Priority: Normal ---------------------------------------- I noticed that `Socket#recv` now returns `nil` instead of `""` when the server closes the connection, is it expected? If yes, I suggest mentioning it to the [release page](https://www.ruby-lang.org/en/news/2023/09/14/ruby-3-3-0-preview2-released/). Example: ``` ruby # server.rb require "socket" port = 3030 server = TCPServer.new("", port) while(conn = server.accept) #serves forever conn.print "hello" conn.close end # client.rb require 'socket' port = 3030 socket = TCPSocket.new("localhost", port) 2.times do res = socket.recv(1012) puts "received:" p res end socket.close ``` ``` jacopo-37s-mb 3.2.0 ~ ruby client.rb received: "hello" received: "" jacopo-37s-mb 3.2.0 ~ rbenv local 3.3.0-preview2 jacopo-37s-mb 3.3.0-preview2 ~ ruby client.rb received: "hello" received: nil ``` Thanks! -- https://bugs.ruby-lang.org/

Issue #19899 has been updated by byroot (Jean Boussier). It is intentional yes. I'll add it to NEWS.md. ---------------------------------------- Misc #19899: Ruby3.3.0-preview2: Behaviour changes of Socket.recv when the sever closes the connection https://bugs.ruby-lang.org/issues/19899#change-104779 * Author: jbeschi (jacopo beschi) * Status: Open * Priority: Normal ---------------------------------------- I noticed that `Socket#recv` now returns `nil` instead of `""` when the server closes the connection, is it expected? If yes, I suggest mentioning it to the [release page](https://www.ruby-lang.org/en/news/2023/09/14/ruby-3-3-0-preview2-released/). Example: ``` ruby # server.rb require "socket" port = 3030 server = TCPServer.new("", port) while(conn = server.accept) #serves forever conn.print "hello" conn.close end # client.rb require 'socket' port = 3030 socket = TCPSocket.new("localhost", port) 2.times do res = socket.recv(1012) puts "received:" p res end socket.close ``` ``` jacopo-37s-mb 3.2.0 ~ ruby client.rb received: "hello" received: "" jacopo-37s-mb 3.2.0 ~ rbenv local 3.3.0-preview2 jacopo-37s-mb 3.3.0-preview2 ~ ruby client.rb received: "hello" received: nil ``` Thanks! -- https://bugs.ruby-lang.org/

Issue #19899 has been updated by alanwu (Alan Wu). Status changed from Open to Closed NEWS entry added in commit:2e4e4c82c28. Thanks for the report! ---------------------------------------- Misc #19899: Ruby3.3.0-preview2: Behaviour changes of Socket.recv when the sever closes the connection https://bugs.ruby-lang.org/issues/19899#change-104781 * Author: jbeschi (jacopo beschi) * Status: Closed * Priority: Normal ---------------------------------------- I noticed that `Socket#recv` now returns `nil` instead of `""` when the server closes the connection, is it expected? If yes, I suggest mentioning it to the [release page](https://www.ruby-lang.org/en/news/2023/09/14/ruby-3-3-0-preview2-released/). Example: ``` ruby # server.rb require "socket" port = 3030 server = TCPServer.new("", port) while(conn = server.accept) #serves forever conn.print "hello" conn.close end # client.rb require 'socket' port = 3030 socket = TCPSocket.new("localhost", port) 2.times do res = socket.recv(1012) puts "received:" p res end socket.close ``` ``` jacopo-37s-mb 3.2.0 ~ ruby client.rb received: "hello" received: "" jacopo-37s-mb 3.2.0 ~ rbenv local 3.3.0-preview2 jacopo-37s-mb 3.3.0-preview2 ~ ruby client.rb received: "hello" received: nil ``` Thanks! -- https://bugs.ruby-lang.org/
participants (3)
-
alanwu (Alan Wu)
-
byroot (Jean Boussier)
-
jbeschi (jacopo beschi)