aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Pu <michael.pu@uwaterloo.ca>2024-03-01 20:42:59 -0500
committerCecylia Bocovich <cohosh@torproject.org>2024-03-05 12:38:33 -0500
commit9cd362f42de16c2347781a1222eb18015956e6a4 (patch)
tree12adeb40ea0ff1eeaf031b3b9464a367f1a6c629
parentc4c22fa2a090575ba2985d62e6677276ab70a19d (diff)
downloadsnowflake-9cd362f42de16c2347781a1222eb18015956e6a4.tar.gz
snowflake-9cd362f42de16c2347781a1222eb18015956e6a4.zip
Move SQS client ID generation to Exchange
-rw-r--r--client/lib/rendezvous_sqs.go44
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)