[#56982] [ruby-trunk - Bug #8854][Open] Update URL for bug reports — "stomar (Marcus Stollsteimer)" <redmine@...>
7 messages
2013/09/03
[#57038] [ruby-trunk - Feature #3620] Add Queue, SIzedQueue and ConditionVariable implementations in C in addition to ruby ones — "Glass_saga (Masaki Matsushita)" <glass.saga@...>
4 messages
2013/09/05
[#57040] Re: [ruby-trunk - Feature #3620] Add Queue, SIzedQueue and ConditionVariable implementations in C in addition to ruby ones
— SASADA Koichi <ko1@...>
2013/09/05
(2013/09/05 20:52), Glass_saga (Masaki Matsushita) wrote:
[#57058] [ruby-trunk - Bug #8875][Open] Select is not usable with SSLSocket — "headius (Charles Nutter)" <headius@...>
11 messages
2013/09/07
[#57092] [ruby-trunk - Bug #8883][Open] Rational canonicalization unexpectedly converts to Fixnum — "melquiades (Paul Cantrell)" <cantrell@...>
16 messages
2013/09/09
[#57111] [ruby-trunk - Feature #8887][Open] min(n), max(n), min_by(n), max_by(n) — "akr (Akira Tanaka)" <akr@...>
13 messages
2013/09/10
[#57117] [ruby-trunk - Feature #8890][Open] [PATCH] Eliminate less-than-zero checks for unsigned variables — "tonyo (Anton Ovchinnikov)" <revolver112@...>
5 messages
2013/09/10
[#57134] [CommonRuby - Feature #8896][Open] #tap with missing block — "prijutme4ty (Ilya Vorontsov)" <prijutme4ty@...>
5 messages
2013/09/11
[#57138] [ruby-trunk - Feature #8897][Open] client side TCP fast open — "Glass_saga (Masaki Matsushita)" <glass.saga@...>
5 messages
2013/09/11
[#57195] [ruby-trunk - Feature #8897][Assigned] client side TCP fast open
— "Glass_saga (Masaki Matsushita)" <glass.saga@...>
2013/09/14
[#57186] [ruby-trunk - Feature #8909][Open] Expand "f" frozen suffix to literal arrays and hashes — "headius (Charles Nutter)" <headius@...>
37 messages
2013/09/14
[#57224] [ruby-trunk - Feature #8909] Expand "f" frozen suffix to literal arrays and hashes
— "headius (Charles Nutter)" <headius@...>
2013/09/15
[#57262] [ruby-trunk - Feature #8921][Open] Allow select, reject, etc to accept a regex — "kyledecot (Kyle Decot)" <kyle.decot@...>
13 messages
2013/09/18
[#57264] [ruby-trunk - Feature #8921] Allow select, reject, etc to accept a regex
— "kyledecot (Kyle Decot)" <kyle.decot@...>
2013/09/18
[#57265] Re: [ruby-trunk - Feature #8921] Allow select, reject, etc to accept a regex
— Fuad Saud <fuadksd@...>
2013/09/18
Shouldn't select/reject use threequals?
[#57292] [ruby-trunk - Feature #8931][Open] Update URL in REPORTBUG_MSG — "zzak (Zachary Scott)" <e@...>
4 messages
2013/09/20
[#57315] [ruby-trunk - Feature #8938][Open] it keyword — "Sing9898 (Sing Lou)" <3b06e8d4@...>
5 messages
2013/09/23
[#57367] [ruby-trunk - Feature #8951][Open] Please add a hash-to-hash alternative of the map method to Hash — "behrangsa (Behrang Saeedzadeh)" <behrangsa@...>
8 messages
2013/09/25
[#57385] [ruby-trunk - Bug #8953][Open] `str =~ /pattern/` does not call =~ method if (1) str is a String, (2) /pattern/ is a Regexp literal — "gfx (Goro Fuji)" <gfuji@...>
12 messages
2013/09/26
[#57394] [ruby-trunk - Bug #8955][Open] LocalJumpError - no block given (yield) after implementation of class hierarchy method cache invalidation — "mfla (Morten Fla)" <mmflaa@...>
4 messages
2013/09/26
[#57462] [ruby-trunk - misc #8962][Open] [DOC] add step to enable Generational GC merits in README.EXT* — "tad (Tadashi Saito)" <redmine@...>
6 messages
2013/09/28
[ruby-core:57048] [ruby-trunk - Feature #8871][Open] Server side TCP fast open
From:
"Glass_saga (Masaki Matsushita)" <glass.saga@...>
Date:
2013-09-06 16:05:18 UTC
List:
ruby-core #57048
Issue #8871 has been reported by Glass_saga (Masaki Matsushita).
----------------------------------------
Feature #8871: Server side TCP fast open
https://bugs.ruby-lang.org/issues/8871
Author: Glass_saga (Masaki Matsushita)
Status: Open
Priority: Normal
Assignee:
Category: ext
Target version: current: 2.1.0
I propose that ruby support server side TCP fast open (TFO).
TCP fast open reduces step of the handshake process.
detailed information about TCP fast open: http://lwn.net/Articles/508865/
# example
## server side
require "socket"
serv = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM)
serv.setsockopt(Socket::SOL_TCP, Socket::TCP_FASTOPEN, 5)
addrinfo = Addrinfo.new(Socket.sockaddr_in(8888, "localhost"))
serv.bind(addrinfo)
serv.listen(1)
loop do
socket, addrinfo = serv.accept
p socket, addrinfo
p socket.gets
end
## client side (Python)
#!/usr/bin/env python
import sys, socket
HOST = "localhost"
PORT = 8888
TCP_FASTOPEN = 23
MSG_FASTOPEN = 0x20000000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# sendto with MSG_FASTOPEN flag
s.sendto("Hello, world!", MSG_FASTOPEN, (HOST, PORT))
s.close()
# tcpdump result
% sudo tcpdump -i lo port 8888
## without TFO
00:46:43.029704 IP localhost.35653 > localhost.8888: Flags [S], seq 1189386786, win 43690, options [mss 65495,sackOK,TS val 476896037 ecr 0,nop,wscale 7], length 0
00:46:43.029735 IP localhost.35653 > localhost.8888: Flags [.], ack 2201113579, win 342, options [nop,nop,TS val 476896037 ecr 476896037], length 0
00:46:43.029782 IP localhost.35653 > localhost.8888: Flags [P.], seq 0:13, ack 1, win 342, options [nop,nop,TS val 476896037 ecr 476896037], length 13
00:46:43.029808 IP localhost.35653 > localhost.8888: Flags [F.], seq 13, ack 1, win 342, options [nop,nop,TS val 476896037 ecr 476896037], length 0
4 packets captured
8 packets received by filter
0 packets dropped by kernel
## with TFO
00:47:01.787766 IP localhost.36567 > localhost.8888: Flags [S], seq 2471392232:2471392245, win 43690, options [mss 65495,sackOK,TS val 476900726 ecr 0,nop,wscale 7,Unknown Option 254f989ccf497eb7eb6ea2e], length 13
00:47:01.787814 IP localhost.36567 > localhost.8888: Flags [.], ack 874717749, win 342, options [nop,nop,TS val 476900726 ecr 476900726], length 0
00:47:01.788029 IP localhost.36567 > localhost.8888: Flags [F.], seq 0, ack 1, win 342, options [nop,nop,TS val 476900726 ecr 476900726], length 0
3 packets captured
6 packets received by filter
0 packets dropped by kernel
--
http://bugs.ruby-lang.org/