From 177b91f7b3b77e506e176cccd50bc0f3980c570d Mon Sep 17 00:00:00 2001
From: Benjamin Wenger <ben@elixxir.ioo>
Date: Mon, 11 Apr 2022 13:51:56 -0700
Subject: [PATCH] added a num request parts field to signle use for forwards
 compatibility

---
 single/message/request.go      | 27 ++++++++++++++++++++-------
 single/message/request_test.go |  2 +-
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/single/message/request.go b/single/message/request.go
index f4397053a..9054aeef1 100644
--- a/single/message/request.go
+++ b/single/message/request.go
@@ -125,17 +125,18 @@ func (m Request) SetPayload(b []byte) {
 }
 
 const (
-	nonceSize         = 8
-	maxPartsSize      = 1
-	sizeSize          = 2
-	transmitPlMinSize = nonceSize + maxPartsSize + sizeSize
+	nonceSize            = 8
+	numRequestPartsSize  = 1
+	maxResponsePartsSize = 1
+	sizeSize             = 2
+	transmitPlMinSize    = nonceSize + maxResponsePartsSize + sizeSize
 )
 
 // RequestPayload is the structure of Request's payload.
 type RequestPayload struct {
 	data             []byte // Serial of all contents e
 	nonce            []byte
-	nunRequestParts  []byte
+	numRequestParts  []byte //number fo parts in the request, currently always 1
 	maxResponseParts []byte // Max number of messages expected in response
 	size             []byte // Size of the contents
 	contents         []byte
@@ -165,10 +166,12 @@ func mapRequestPayload(data []byte) RequestPayload {
 	mp := RequestPayload{
 		data:             data,
 		nonce:            data[:nonceSize],
-		maxResponseParts: data[nonceSize : nonceSize+maxPartsSize],
-		size:             data[nonceSize+maxPartsSize : transmitPlMinSize],
+		numRequestParts:  data[nonceSize : nonceSize+numRequestPartsSize],
+		maxResponseParts: data[nonceSize+numRequestPartsSize : nonceSize+maxResponsePartsSize+numRequestPartsSize],
+		size:             data[nonceSize+numRequestPartsSize+maxResponsePartsSize : transmitPlMinSize],
 		contents:         data[transmitPlMinSize:],
 	}
+	mp.numRequestParts[0] = 1
 
 	return mp
 }
@@ -221,6 +224,16 @@ func (mp RequestPayload) SetMaxResponseParts(num uint8) {
 	copy(mp.maxResponseParts, []byte{num})
 }
 
+// GetNumRequestParts returns the number of messages expected in the request.
+func (mp RequestPayload) GetNumRequestParts() uint8 {
+	return mp.numRequestParts[0]
+}
+
+// SetNumRequestParts sets the number of expected messages.
+func (mp RequestPayload) SetNumRequestParts(num uint8) {
+	copy(mp.numRequestParts, []byte{num})
+}
+
 // GetContents returns the payload's contents.
 func (mp RequestPayload) GetContents() []byte {
 	return mp.contents[:binary.BigEndian.Uint16(mp.size)]
diff --git a/single/message/request_test.go b/single/message/request_test.go
index 8b5d2f6e6..dc24b689d 100644
--- a/single/message/request_test.go
+++ b/single/message/request_test.go
@@ -181,7 +181,7 @@ func Test_newTransmitMessagePayload(t *testing.T) {
 		data:             make([]byte, payloadSize),
 		tagFP:            make([]byte, tagFPSize),
 		nonce:            make([]byte, nonceSize),
-		maxResponseParts: make([]byte, maxPartsSize),
+		maxResponseParts: make([]byte, maxResponsePartsSize),
 		size:             make([]byte, sizeSize),
 		contents:         make([]byte, payloadSize-transmitPlMinSize),
 	}
-- 
GitLab