Commit Graph

35 Commits

Author SHA1 Message Date
Pavel Borzenkov 9aa225fc15 Don't copy Server struct in sendPacket/sendError
Server struct contains Mutex which might be copied in inconsistent
state. Avoid this by declaring methods on pointer receiver.

This calms down go race detector.

Signed-off-by: Pavel Borzenkov <pavel.borzenkov@gmail.com>
2017-04-05 14:15:57 -07:00
John Eikenberry 5152c21cf9 integrate packageManager into servers 2017-03-23 16:15:04 -07:00
John Eikenberry 51cb116815 better name: packet -> requestPacket 2017-03-23 16:15:04 -07:00
John Eikenberry 7e76fd5451 close reader/writer when deleting request 2017-02-18 18:20:37 -08:00
John Eikenberry 117dcd5916 refactor request setup into init and update
More understandable and adds additional type safety.
2017-02-18 18:20:37 -08:00
John Eikenberry ce4586e8a5 convert request to be pass by value
Encapsulate stateful data into sub-structures with pointer references
from the Request structure. This allows me to pass by value in most
cases to keep non-stateful (write once) data data race free and tightly
controlling access to stateful data to ease locking.
2017-02-18 18:20:37 -08:00
John Eikenberry 889f6b990a getRequest should use an RLock 2017-02-18 18:20:37 -08:00
John Eikenberry f4432147d1 fix issue with leaking requests in handle cache 2017-02-18 18:20:37 -08:00
John Eikenberry 23acc34b25 change back to using int as handle key
Was using a filename as a placeholder for something that would allow for
stateless servers but decided the amount of work wasn't worth it at this
point. So I went back to the auto-inc number as it doesn't have the size
issues (max handle length is 256).
2017-02-18 18:20:37 -08:00
John Eikenberry bf94760e22 golinter suggested name fix 2017-02-18 18:20:37 -08:00
John Eikenberry 9962211713 linter fixes 2017-02-18 18:20:37 -08:00
John Eikenberry abd44045b6 comment out tracing/debugging prints 2017-02-18 18:20:37 -08:00
John Eikenberry 69cd74c3d1 os.ErrorNotExist should convert to ssh_FX_NO_SUCH_FILE 2017-02-18 18:20:37 -08:00
John Eikenberry 80a7e6e68a gofmt tweaks 2017-02-18 18:20:37 -08:00
John Eikenberry 60d6f54546 Add requestserver.Close() method 2017-02-18 18:20:37 -08:00
John Eikenberry f53058b17a require handlers as arg to NewRequestServer 2017-02-18 18:20:37 -08:00
John Eikenberry d235f09578 all paths should be absolute 2017-02-18 18:20:36 -08:00
John Eikenberry 43bb004893 formatting fixes 2017-02-18 18:20:36 -08:00
John Eikenberry 27cff420db remove old comments/notes 2017-02-18 18:20:36 -08:00
John Eikenberry e8d7a278de move realpath handling into request-server 2017-02-18 18:20:36 -08:00
John Eikenberry f6042b29bc remove redundant 'request' from handle method name 2017-02-18 18:20:36 -08:00
John Eikenberry f1ec5cd102 isOpener interface to simplify type checking/testing 2017-02-18 18:20:36 -08:00
John Eikenberry 2b0671ce69 clean up worker function 2017-02-18 18:20:36 -08:00
John Eikenberry e307459f45 factor out response struct 2017-02-18 18:20:36 -08:00
John Eikenberry 42095a108c move request.populate call out of handler
makes handler testing much simpler as it only needs a populated request
instead of faked packets.
2017-02-18 18:20:36 -08:00
John Eikenberry f3ebdef6de factor out request channels 2017-02-18 18:20:36 -08:00
John Eikenberry a253a470f0 move open handling to packet level 2017-02-18 18:20:36 -08:00
John Eikenberry cdfae2dc1d pass/store handlers on request vs server 2017-02-18 18:20:36 -08:00
John Eikenberry fd475710b5 add response channel from req to packet handler
working to decouple request handling from packet handling. adding a
response channel means I don't need to handle sending packets.

eliminated need for cur_pkt and sendError() on request objects so far.
2017-02-18 18:20:36 -08:00
John Eikenberry 39e544ecfe make RequestServer.Handlers public 2017-02-18 18:20:36 -08:00
John Eikenberry 37052567c8 name fixes 2017-02-18 18:20:36 -08:00
John Eikenberry e19ab67571 fleshed out processing handlers 2017-02-18 18:20:36 -08:00
John Eikenberry 06735900ce reworked handler/interfaces to new minimal set 2017-02-18 18:20:36 -08:00
John Eikenberry 06bf237860 reworked in branch and liked it 2017-02-18 18:20:36 -08:00
John Eikenberry d1634cd6a7 initial request server commit
builds but doesn't run
2017-02-18 18:20:36 -08:00