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