Bläddra i källkod

Fix: don't retry or log when context cancelled

Rod Hynes 9 år sedan
förälder
incheckning
10c6328fc5
1 ändrade filer med 13 tillägg och 7 borttagningar
  1. 13 7
      psiphon/meekConn.go

+ 13 - 7
psiphon/meekConn.go

@@ -528,13 +528,13 @@ func (meek *MeekConn) relay() {
 
 
 		receivedPayloadSize, err := meek.roundTrip(sendPayload[:sendPayloadSize])
 		receivedPayloadSize, err := meek.roundTrip(sendPayload[:sendPayloadSize])
 
 
-		select {
-		case <-meek.runContext.Done():
-			// In this case, meek.roundTrip encountered Done(). Exit without logging error.
-			return
-		default:
-		}
 		if err != nil {
 		if err != nil {
+			select {
+			case <-meek.runContext.Done():
+				// In this case, meek.roundTrip encountered Done(). Exit without logging error.
+				return
+			default:
+			}
 			NoticeAlert("%s", common.ContextError(err))
 			NoticeAlert("%s", common.ContextError(err))
 			go meek.Close()
 			go meek.Close()
 			return
 			return
@@ -655,6 +655,12 @@ func (meek *MeekConn) roundTrip(sendPayload []byte) (int64, error) {
 
 
 		response, err := meek.transport.RoundTrip(request)
 		response, err := meek.transport.RoundTrip(request)
 		if err != nil {
 		if err != nil {
+			select {
+			case <-meek.runContext.Done():
+				// Exit without retrying and without logging error.
+				return 0, common.ContextError(err)
+			default:
+			}
 			NoticeAlert("meek round trip failed: %s", err)
 			NoticeAlert("meek round trip failed: %s", err)
 			// ...continue to retry
 			// ...continue to retry
 		}
 		}
@@ -666,7 +672,7 @@ func (meek *MeekConn) roundTrip(sendPayload []byte) (int64, error) {
 				response.Body.Close()
 				response.Body.Close()
 				return 0, common.ContextError(
 				return 0, common.ContextError(
 					fmt.Errorf(
 					fmt.Errorf(
-						"unexpected status code: %d instead of %d ",
+						"unexpected status code: %d instead of %d",
 						response.StatusCode, expectedStatusCode))
 						response.StatusCode, expectedStatusCode))
 			}
 			}