[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [meek/master] Read the requestSpec outside of roundTrip.
commit 3c386e18948a161c925563dfb47212221ee85258
Author: David Fifield <david@xxxxxxxxxxxxxxx>
Date: Sat Mar 30 12:10:19 2019 -0600
Read the requestSpec outside of roundTrip.
The difference here is that we don't send a JSON error response as a
result of errors at this stage.
---
webextension/native/main.go | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/webextension/native/main.go b/webextension/native/main.go
index cbb48bf..e5f3a74 100644
--- a/webextension/native/main.go
+++ b/webextension/native/main.go
@@ -181,19 +181,10 @@ func sendWebExtensionMessage(w io.Writer, message []byte) error {
// browser. Wait for the browser to send back a webExtensionRoundTripResponse
// (which actually happens in inFromBrowserLoop--that function uses the ID to
// find this goroutine again). Return a responseSpec object or an error.
-func roundTrip(conn net.Conn, outToBrowserChan chan<- []byte) (responseSpec, error) {
- err := conn.SetReadDeadline(time.Now().Add(localReadTimeout))
- if err != nil {
- return nil, err
- }
- req, err := readRequestSpec(conn)
- if err != nil {
- return nil, err
- }
-
+func roundTrip(req requestSpec, outToBrowserChan chan<- []byte) (responseSpec, error) {
// Generate an ID that will allow us to match a response to this request.
idRaw := make([]byte, 8)
- _, err = rand.Read(idRaw)
+ _, err := rand.Read(idRaw)
if err != nil {
return nil, err
}
@@ -251,7 +242,16 @@ type errorResponseSpec struct {
func handleConn(conn net.Conn, outToBrowserChan chan<- []byte) error {
defer conn.Close()
- resp, err := roundTrip(conn, outToBrowserChan)
+ err := conn.SetReadDeadline(time.Now().Add(localReadTimeout))
+ if err != nil {
+ return err
+ }
+ req, err := readRequestSpec(conn)
+ if err != nil {
+ return err
+ }
+
+ resp, err := roundTrip(req, outToBrowserChan)
if err != nil {
resp = &errorResponseSpec{Error: err.Error()}
}
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits