Commit Graph

173 Commits

Author SHA1 Message Date
Lucas Clemente
2feb376e67 fix a race condition where the session timer could have fired early 2016-05-20 16:49:39 +02:00
Marten Seemann
57066faef9 add seperate PacketPacker method to pack a ConnectionClose packet
fixes #134
2016-05-20 20:49:29 +07:00
Marten Seemann
d571c0bfd5 remove stream from BlockManager when a WindowUpdate increases its offset
fixes #130
2016-05-20 12:26:10 +07:00
Marten Seemann
c748a8dfc0 create FlowController interface 2016-05-19 19:49:33 +07:00
Lucas Clemente
f96282b4d4 don't set RTO and small packet timeout when we can't actually send
fixes #126
2016-05-19 14:24:35 +02:00
Lucas Clemente
bd6d893cc4 replace time.After in session with a single timer
fixes #128, fixes #127
2016-05-19 14:24:35 +02:00
Marten Seemann
9930de68c8 send stream-level Blocked frames at the right time
fixes #110
2016-05-19 11:53:51 +07:00
Lucas Clemente
838291cd14 don't set the small packets timer when no packet is ready for sending 2016-05-18 23:22:23 +02:00
Lucas Clemente
4822def788 implement timeout-based retransmission (RTO)
fixes #56
2016-05-18 23:21:33 +02:00
Lucas Clemente
753f219638 implement RTO computation in sentPacketHandler
ref #56
2016-05-18 20:50:22 +02:00
Lucas Clemente
a0228a9049 move congestion control from session to ackhandler
this simplifies things a bit, especially in prep for #56
2016-05-18 19:35:31 +02:00
Lucas Clemente
7a97f34fac don't panic 🤓
fixes #93
2016-05-18 18:29:42 +02:00
Marten Seemann
f147ebc9bb implement basic connection level flow control
fixes #39
2016-05-18 17:30:08 +07:00
Lucas Clemente
d6ef71a54c simplify and reorganize session tests 2016-05-17 19:37:16 +02:00
Lucas Clemente
2864c97a70 remove outdated TODOs 2016-05-17 19:24:49 +02:00
Lucas Clemente
8451fcf39b slightly simplify public reset writing 2016-05-17 19:24:49 +02:00
Marten Seemann
1ef224d9bf make the BlockedFrame queue thread-safe 2016-05-18 00:20:43 +07:00
Marten Seemann
b9e141d277 make the FlowController thread-safe 2016-05-18 00:11:52 +07:00
Lucas Clemente
15e7fe6c73 don't block the server when too many packets are queued in a session
fixes #35
2016-05-17 16:52:55 +02:00
Lucas Clemente
68b529a54c refactor session to remove second Close parameter
fixes #102
2016-05-17 14:56:33 +02:00
Marten Seemann
42f3091e1b send Blocked frames for flow control blocked streams
fixes #100
2016-05-17 19:00:11 +07:00
Lucas Clemente
078b563526 don't ignore window updates for unknown streams, see #108 2016-05-17 13:11:57 +02:00
Lucas Clemente
90abb40ffc ignore data for closed streams 2016-05-17 12:56:29 +02:00
Lucas Clemente
d0e6b993bb use new error codes throughout the server
fixes #86
2016-05-17 12:49:59 +02:00
Lucas Clemente
466d50345a move error conversion from session to qerr.ToQuicError 2016-05-17 10:38:34 +02:00
Lucas Clemente
bfaa4200df move all error things to new qerr package, replacing errorcodes 2016-05-17 10:38:34 +02:00
Lucas Clemente
69e302812d move ErrorCode type to errorcodes package 2016-05-17 00:25:51 +02:00
Lucas Clemente
dd13836aa9 rename NewQuicError to Error 2016-05-17 00:11:48 +02:00
Lucas Clemente
f624592198 remove unused error codes and name the constants according to go style
ref #86
2016-05-16 20:41:56 +02:00
Marten Seemann
d5c7a62066 don't send internal error messages to the client
fixes #107
2016-05-16 19:14:11 +07:00
Marten Seemann
0d4dd8869d detect stream flow control violations
fixes #97
2016-05-16 18:15:40 +07:00
Marten Seemann
de871f0a4f ignore WindowUpdate frames for already closed streams
fixes #104
2016-05-16 13:36:35 +07:00
Lucas Clemente
d469a19b62 rename {New,GetOrCreate}Stream stream to {,GetOr}OpenStream 2016-05-15 18:51:23 +02:00
Lucas Clemente
af522c1538 privatize session.updateReceiveFlowControlWindow
ref #60
2016-05-15 18:50:04 +02:00
Lucas Clemente
a10d58c8ca privatize session.run
ref #60
2016-05-15 18:49:09 +02:00
Lucas Clemente
2fb42afc8a privatize session.queueStreamFrame
ref #60
2016-05-15 18:49:01 +02:00
Lucas Clemente
028615b8f0 privatize session.handlePacket
ref #60
2016-05-15 18:48:11 +02:00
Lucas Clemente
ce1f7b2aaf privatize closeCallback
ref #60
2016-05-15 15:58:35 +02:00
Lucas Clemente
9cc4bb3ccf privatize publicHeader
ref #60
2016-05-15 15:44:14 +02:00
Lucas Clemente
f79f7f7724 privatize newSession
ref #60
2016-05-15 15:33:36 +02:00
Lucas Clemente
b558bb8a75 privatize packetHandler
ref #60
2016-05-15 15:32:41 +02:00
Lucas Clemente
5fab9b5326 privatize windowUpdateManager
ref #60
2016-05-15 15:29:21 +02:00
Lucas Clemente
d4de18c472 only delete streams once we are done reading AND writing
fixes #98
2016-05-15 15:03:02 +02:00
Marten Seemann
089582dd9f improve sending of WindowUpdate frames
fixes #96
2016-05-15 18:05:15 +07:00
Marten Seemann
a3ff4dd891 send WindowUpdate frames
fixes #19
2016-05-15 16:48:42 +07:00
Lucas Clemente
d1272650c3 add support for http client uploads
fixes #27
2016-05-13 13:01:45 +02:00
Lucas Clemente
c0c7650431 improve debug log 2016-05-13 12:14:52 +02:00
Marten Seemann
ba799cef01 delay transmission of small packets to wait for new data
fixes #9, fixes #61
2016-05-13 17:06:30 +07:00
Marten Seemann
c0c7be16e3 add method to get ACK from ReceivedPacketHandler without dequeueing it 2016-05-13 15:55:56 +07:00
Lucas Clemente
c7126137d1 queue undecryptable packets for later decryption & possibly send PRST
fixes #38, fixes #69, fixes #73
2016-05-12 16:46:18 +02:00