Commit Briefs
channel: truncate twrite messages based on msize
While there are a few problems around handling of msize, the easiest to address and, arguably, the most problematic is that of Twrite. We now truncate Twrite.Data to the correct length if it will overflow the msize limit negotiated on the session. ErrShortWrite is returned by the `Session.Write` method if written data is truncated. In addition, we now reject incoming messages from `ReadFcall` that overflow the msize. Such messages are probably terminal in practice, but can be detected with the `Overflow` function. Tread is also handled accordingly, such that the Count field will be rewritten such that the response doesn't overflow the msize. Signed-off-by: Stephen J Day <stephen.day@docker.com>
Merge pull request #33 from stevvooe/new-context
p9p: use new context package throughout
p9p: use new context package throughout
Signed-off-by: Stephen J Day <stephen.day@docker.com>
Merge pull request #28 from simonferquel/msize_negociation_fix
Fixes the MSize comparison when negociating msize with server
Fixes the MSize comparison when negociating msize with server
Signed-off-by: Simon Ferquel <simon.ferquel@docker.com>
Merge pull request #23 from dominikh/qtype
Specify type for all constants, not just the first
Merge pull request #24 from stevvooe/refactor-transport-close
transport: remove race condition on close
Specify type for all constants, not just the first
Closes #22 Signed-off-by: Dominik Honnef <dominik@honnef.co>
transport: remove race condition on close
Signed-off-by: Stephen J Day <stephen.day@docker.com>
Merge pull request #21 from nilium/fix-close-error-race
Fix race-y channel close/error assignment
Merge pull request #20 from docker/fix-alignment
Fix readme alignment
Fix race-y channel close/error assignment
Data race occurred when assigning to err and then subsequently reading it from anywhere else. Moving the channel close down could potentially help, but far easier to just gate both with a sync.Once since this isn't a code path that seems like it needs to be super-performant. Changes cause CloseWithError to be call-able once, ensuring that there's no case where err is written to while being read (as would happen when closing and reading c.err from another goroutine the moment c.closed is closed). Signed-off-by: Noel Cower <ncower@gmail.com>
Fix readme alignment
Signed-off-by: French Ben <frenchben@docker.com>
Merge pull request #19 from docker/badge-badge
Added badge badge
Merged master
Signed-off-by: French Ben <frenchben@docker.com>