diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c
index 4092a9b4c98690bd7db22995f5173293f0a6ce0c..976871a59bb4517fff47a349ee02b4244a377adf 100644
--- a/src/common/slurm_protocol_pack.c
+++ b/src/common/slurm_protocol_pack.c
@@ -10167,9 +10167,14 @@ static void _pack_launch_tasks_request_msg(launch_tasks_request_msg_t *msg,
 				     buffer);
 		}
 		pack32(msg->pack_ntasks, buffer);
-		if (msg->pack_ntasks != NO_VAL)
+		if ((msg->pack_ntasks != NO_VAL) && msg->pack_tid_offsets) {
+			/* pack_tids == NULL if request from pre-v19.05 srun */
+			pack8((uint8_t) 1, buffer);
 			for (i = 0; i < msg->pack_ntasks; i++)
 				pack32(msg->pack_tid_offsets[i], buffer);
+		} else if (msg->pack_ntasks != NO_VAL)
+			pack8((uint8_t) 0, buffer);
+
 		pack32(msg->pack_offset, buffer);
 		pack32(msg->pack_step_cnt, buffer);
 		pack32(msg->pack_task_offset, buffer);
@@ -10479,7 +10484,9 @@ static int _unpack_launch_tasks_request_msg(launch_tasks_request_msg_t **msg_ptr
 				goto unpack_error;
 		}
 		safe_unpack32(&msg->pack_ntasks, buffer);
-		if (msg->pack_ntasks != NO_VAL) {
+		if (msg->pack_ntasks != NO_VAL)
+			safe_unpack8(&uint8_tmp, buffer);
+		if ((msg->pack_ntasks != NO_VAL) && (uint8_tmp == 1)) {
 			safe_xcalloc(msg->pack_tid_offsets, msg->pack_ntasks,
 				     sizeof(uint32_t));
 			for (i = 0; i < msg->pack_ntasks; i++)