diff options
author | Michael Pu <michael.pu@uwaterloo.ca> | 2024-03-01 20:42:59 -0500 |
---|---|---|
committer | Cecylia Bocovich <cohosh@torproject.org> | 2024-03-05 12:38:33 -0500 |
commit | 9cd362f42de16c2347781a1222eb18015956e6a4 (patch) | |
tree | 12adeb40ea0ff1eeaf031b3b9464a367f1a6c629 | |
parent | c4c22fa2a090575ba2985d62e6677276ab70a19d (diff) | |
download | snowflake-9cd362f42de16c2347781a1222eb18015956e6a4.tar.gz snowflake-9cd362f42de16c2347781a1222eb18015956e6a4.zip |
Move SQS client ID generation to Exchange
-rw-r--r-- | client/lib/rendezvous_sqs.go | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/client/lib/rendezvous_sqs.go b/client/lib/rendezvous_sqs.go index 00a69b3..423545f 100644 --- a/client/lib/rendezvous_sqs.go +++ b/client/lib/rendezvous_sqs.go @@ -19,12 +19,11 @@ import ( ) type sqsRendezvous struct { - transport http.RoundTripper - sqsClientID string - sqsClient sqsclient.SQSClient - sqsURL *url.URL - timeout time.Duration - numRetries int + transport http.RoundTripper + sqsClient sqsclient.SQSClient + sqsURL *url.URL + timeout time.Duration + numRetries int } func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey string, transport http.RoundTripper) (*sqsRendezvous, error) { @@ -33,13 +32,6 @@ func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey strin return nil, err } - var id [8]byte - _, err = rand.Read(id[:]) - if err != nil { - log.Fatal(err) - } - clientID := hex.EncodeToString(id[:]) - queueURL := sqsURL.String() hostName := sqsURL.Hostname() @@ -61,26 +53,32 @@ func newSQSRendezvous(sqsQueue string, sqsAccessKeyId string, sqsSecretKey strin client := sqs.NewFromConfig(cfg) log.Println("Queue URL: ", queueURL) - log.Println("SQS Client ID: ", clientID) return &sqsRendezvous{ - transport: transport, - sqsClientID: clientID, - sqsClient: client, - sqsURL: sqsURL, - timeout: time.Second, - numRetries: 5, + transport: transport, + sqsClient: client, + sqsURL: sqsURL, + timeout: time.Second, + numRetries: 5, }, nil } func (r *sqsRendezvous) Exchange(encPollReq []byte) ([]byte, error) { log.Println("Negotiating via SQS Queue rendezvous...") - _, err := r.sqsClient.SendMessage(context.TODO(), &sqs.SendMessageInput{ + var id [8]byte + _, err := rand.Read(id[:]) + if err != nil { + return nil, err + } + sqsClientID := hex.EncodeToString(id[:]) + log.Println("SQS Client ID for rendezvous: " + sqsClientID) + + _, err = r.sqsClient.SendMessage(context.TODO(), &sqs.SendMessageInput{ MessageAttributes: map[string]types.MessageAttributeValue{ "ClientID": { DataType: aws.String("String"), - StringValue: aws.String(r.sqsClientID), + StringValue: aws.String(sqsClientID), }, }, MessageBody: aws.String(string(encPollReq)), @@ -98,7 +96,7 @@ func (r *sqsRendezvous) Exchange(encPollReq []byte) ([]byte, error) { // may not be created yet. We will retry up to 5 times before we error out. var res *sqs.GetQueueUrlOutput res, err = r.sqsClient.GetQueueUrl(context.TODO(), &sqs.GetQueueUrlInput{ - QueueName: aws.String("snowflake-client-" + r.sqsClientID), + QueueName: aws.String("snowflake-client-" + sqsClientID), }) if err != nil { log.Println(err) |