diff --git a/src/common/slurmdbd_defs.c b/src/common/slurmdbd_defs.c
index cb3842b428dd3ce405390a44b65fa8b2a54ae536..59d6f36d63a50f24a01260e456ae3d4191c39c64 100644
--- a/src/common/slurmdbd_defs.c
+++ b/src/common/slurmdbd_defs.c
@@ -2018,6 +2018,14 @@ static void *_agent(void *x)
 			free_buf(buffer);
 			fail_time = 0;
 		} else {
+			/* We still need to free a mult_msg even if we
+			   got a failure.
+			*/
+			if(list_msg.my_list) {
+				list_msg.my_list = NULL;
+				free_buf(buffer);
+			}
+
 			fail_time = time(NULL);
 		}
 		slurm_mutex_unlock(&agent_lock);