diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c
index ffb18810546dc939c0c25812b42709155316de51..86bca47a219ce9bb5c1f6f9277c04d227d174b5c 100644
--- a/src/common/slurm_protocol_defs.c
+++ b/src/common/slurm_protocol_defs.c
@@ -313,7 +313,6 @@ void slurm_free_job_step_create_response_msg ( job_step_create_response_msg_t *
 
 void slurm_free_launch_tasks_response_msg ( launch_tasks_response_msg_t * msg )
 {
-	int i ;
 	if ( msg )
 	{
 		if ( msg -> node_name )
@@ -340,8 +339,6 @@ void slurm_free_launch_tasks_request_msg ( launch_tasks_request_msg_t * msg )
 			xfree ( msg -> cwd );
 		if ( msg -> cmd_line )
 			xfree ( msg -> cmd_line );
-		if ( msg -> streams )
-			xfree ( msg -> streams );
 		if ( msg -> global_task_ids )
 			xfree ( msg -> global_task_ids );
 		xfree ( msg ) ;
@@ -354,8 +351,6 @@ void slurm_free_reattach_tasks_streams_msg ( reattach_tasks_streams_msg_t * msg
 	{
 		if ( msg -> credentials )
 			xfree ( msg -> credentials );
-		if ( msg -> streams )
-			xfree ( msg -> streams );
 		if ( msg -> global_task_ids )
 			xfree ( msg -> global_task_ids );
 		xfree ( msg ) ;
diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h
index 78ce5963a41dd1c7c0d62ab354e50d55fdc0a63f..0dc5663892c2ecdd9ef7bdb5a638343d007df2f8 100644
--- a/src/common/slurm_protocol_defs.h
+++ b/src/common/slurm_protocol_defs.h
@@ -263,7 +263,7 @@ typedef struct launch_tasks_request_msg
 	char * cwd ;
 	char * cmd_line ;
 	slurm_addr response_addr ;
-	slurm_addr * streams;
+	slurm_addr streams;
 	uint32_t * global_task_ids;
 } launch_tasks_request_msg_t ;
 
@@ -280,7 +280,7 @@ typedef struct reattach_tasks_streams_msg
 	uint32_t uid ;
 	slurm_job_credential_t* credentials;
 	uint32_t tasks_to_reattach ;
-	slurm_addr * streams;
+	slurm_addr streams;
 	uint32_t * global_task_ids;
 } reattach_tasks_streams_msg_t ;
 
diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c
index 0b7afb94b6a8cf642277e6baf685d0ef49aeeff7..212fe58829e2cd71731c2b78bcb9191f4af55297 100644
--- a/src/common/slurm_protocol_pack.c
+++ b/src/common/slurm_protocol_pack.c
@@ -157,6 +157,8 @@ int pack_msg ( slurm_msg_t const * msg , char ** buffer , uint32_t * buf_len )
 			break ;
 		case REQUEST_LAUNCH_TASKS :
 			pack_launch_tasks_request_msg ( ( launch_tasks_request_msg_t * ) msg->data , ( void ** ) buffer , buf_len ) ;
+		case RESPONSE_LAUNCH_TASKS :
+			pack_launch_tasks_response_msg ( ( launch_tasks_response_msg_t * ) msg->data , ( void ** ) buffer , buf_len ) ;
 			break ;
 		case REQUEST_KILL_TASKS :
 			pack_cancel_tasks_msg ( ( kill_tasks_msg_t * ) msg->data , ( void ** ) buffer , buf_len ) ;
@@ -289,6 +291,9 @@ int unpack_msg ( slurm_msg_t * msg , char ** buffer , uint32_t * buf_len )
 		case REQUEST_LAUNCH_TASKS :
 			unpack_launch_tasks_request_msg ( ( launch_tasks_request_msg_t ** ) & ( msg->data ) , 
 				( void ** ) buffer , buf_len ) ;
+		case RESPONSE_LAUNCH_TASKS :
+			unpack_launch_tasks_response_msg ( ( launch_tasks_response_msg_t ** ) & ( msg->data ) , 
+				( void ** ) buffer , buf_len ) ;
 			break ; 
 		case REQUEST_REATTACH_TASKS_STREAMS :
 			unpack_reattach_tasks_streams_msg ( ( reattach_tasks_streams_msg_t ** ) & ( msg->data ) , 
@@ -1093,7 +1098,7 @@ void pack_reattach_tasks_streams_msg ( reattach_tasks_streams_msg_t * msg , void
 	pack32 ( msg -> uid , buffer , length ) ;
 	pack_job_credential ( msg -> credentials , buffer , length ) ;
 	pack32 ( msg -> tasks_to_reattach , buffer , length ) ;
-	pack_slurm_addr_array ( msg -> streams , ( uint16_t ) msg -> tasks_to_reattach, buffer , length ) ;
+	slurm_pack_slurm_addr ( & msg -> streams , buffer , length ) ;
 	pack32_array ( msg -> global_task_ids , ( uint16_t ) msg -> tasks_to_reattach , buffer , length ) ;
 }
 
@@ -1114,7 +1119,7 @@ int unpack_reattach_tasks_streams_msg ( reattach_tasks_streams_msg_t ** msg_ptr
 	unpack32 ( & msg -> uid , buffer , length ) ;
 	unpack_job_credential( & msg -> credentials ,  buffer , length ) ;
 	unpack32 ( & msg -> tasks_to_reattach , buffer , length ) ;
-	unpack_slurm_addr_array ( & msg -> streams , & uint16_tmp , buffer , length ) ;
+	slurm_unpack_slurm_addr_no_alloc ( & msg -> streams , buffer , length ) ;
 	unpack32_array ( & msg -> global_task_ids , & uint16_tmp , buffer , length ) ;
 	*msg_ptr = msg ;
 	return 0 ;
@@ -1126,7 +1131,7 @@ void pack_launch_tasks_response_msg ( launch_tasks_response_msg_t * msg , void *
 	packstr ( msg -> node_name , buffer , length ) ;
 }
 
-int unpack_launch_tasks_msg ( launch_tasks_response_msg_t ** msg_ptr , void ** buffer , uint32_t * length )
+int unpack_launch_tasks_response_msg ( launch_tasks_response_msg_t ** msg_ptr , void ** buffer , uint32_t * length )
 {
 	uint16_t uint16_tmp;
 	launch_tasks_response_msg_t * msg ;
@@ -1155,7 +1160,7 @@ void pack_launch_tasks_request_msg ( launch_tasks_request_msg_t * msg , void **
 	packstr ( msg -> cwd , buffer , length ) ;
 	packstr ( msg -> cmd_line , buffer , length ) ;
 	slurm_pack_slurm_addr ( & msg -> response_addr , buffer , length ) ;
-	pack_slurm_addr_array ( msg -> streams , ( uint16_t ) msg -> tasks_to_launch , buffer , length ) ;
+	slurm_pack_slurm_addr ( & msg -> streams , buffer , length ) ;
 	pack32_array ( msg -> global_task_ids , ( uint16_t ) msg -> tasks_to_launch , buffer , length ) ;
 }
 
@@ -1180,7 +1185,7 @@ int unpack_launch_tasks_request_msg ( launch_tasks_request_msg_t ** msg_ptr , vo
 	unpackstr_xmalloc ( & msg -> cwd , & uint16_tmp , buffer , length ) ;
 	unpackstr_xmalloc ( & msg -> cmd_line , & uint16_tmp , buffer , length ) ;
 	slurm_unpack_slurm_addr_no_alloc ( & msg -> response_addr , buffer , length ) ;
-	unpack_slurm_addr_array ( & msg -> streams , & uint16_tmp , buffer , length ) ;
+	slurm_unpack_slurm_addr_no_alloc ( & msg -> streams , buffer , length ) ;
 	unpack32_array ( & msg -> global_task_ids , & uint16_tmp , buffer , length ) ;
 	*msg_ptr = msg ;
 	return 0 ;