diff --git a/lib/gat/pool/flow.go b/lib/gat/pool/flow.go
index 4a1df190b50aac217ff1cb54a5f1a0f4a0ae5d33..3e47c04d84818bab801435dc38f1b073fd5015b1 100644
--- a/lib/gat/pool/flow.go
+++ b/lib/gat/pool/flow.go
@@ -81,12 +81,14 @@ func SyncInitialParameters(options Options, client *Client, server *Server) (cli
 		}
 
 		ctx := backends.Context{
+			Packet: packet,
 			Server: server.GetReadWriter(),
 		}
 		serverErr = backends.SetParameter(&ctx, key, value)
 		if serverErr != nil {
 			return
 		}
+		packet = ctx.Packet
 	}
 
 	for key, value := range serverParams {
diff --git a/lib/middleware/middlewares/ps/sync.go b/lib/middleware/middlewares/ps/sync.go
index 8aea27f8731746adc4429d4bd70db437e716f460..006df33e11808640b7bd5d265da281dcc377044e 100644
--- a/lib/middleware/middlewares/ps/sync.go
+++ b/lib/middleware/middlewares/ps/sync.go
@@ -32,11 +32,13 @@ func sync(tracking []strutil.CIString, client fed.ReadWriter, c *Client, server
 
 	if hasValue && slices.Contains(tracking, name) {
 		ctx := backends.Context{
+			Packet: packet,
 			Server: server,
 		}
 		if err := backends.SetParameter(&ctx, name, value); err != nil {
 			return err
 		}
+		packet = ctx.Packet
 		if s.parameters == nil {
 			s.parameters = make(map[strutil.CIString]string)
 		}