diff --git a/orte/mca/iof/proxy/iof_proxy_component.c b/orte/mca/iof/proxy/iof_proxy_component.c
index 34d3064d88..1949577cb9 100644
--- a/orte/mca/iof/proxy/iof_proxy_component.c
+++ b/orte/mca/iof/proxy/iof_proxy_component.c
@@ -127,7 +127,7 @@ orte_iof_proxy_init(int* priority, bool *allow_multi_user_threads, bool *have_hi
         mca_iof_proxy_component.proxy_iov,
         1,
         ORTE_RML_TAG_IOF_SVC,
-        ORTE_RML_ALLOC,
+        ORTE_RML_ALLOC|ORTE_RML_PERSISTENT,
         orte_iof_proxy_svc_recv,
         NULL
     );
diff --git a/orte/mca/iof/proxy/iof_proxy_svc.c b/orte/mca/iof/proxy/iof_proxy_svc.c
index c52fcd1f98..1db15723e7 100644
--- a/orte/mca/iof/proxy/iof_proxy_svc.c
+++ b/orte/mca/iof/proxy/iof_proxy_svc.c
@@ -202,7 +202,6 @@ void orte_iof_proxy_svc_recv(
     void* cbdata)
 {
     orte_iof_base_header_t* hdr = (orte_iof_base_header_t*)msg->iov_base;
-    int rc;
     if(NULL == msg->iov_base) {
         opal_output(0, "orte_iof_proxy_svc_recv: invalid message\n");
         return;
@@ -225,20 +224,6 @@ void orte_iof_proxy_svc_recv(
     /* repost receive */
     mca_iof_proxy_component.proxy_iov[0].iov_base = NULL;
     mca_iof_proxy_component.proxy_iov[0].iov_len = 0;
-                                                                                                              
-    rc = orte_rml.recv_nb(
-        ORTE_RML_NAME_ANY,
-        mca_iof_proxy_component.proxy_iov,
-        1,
-        ORTE_RML_TAG_IOF_SVC,
-        ORTE_RML_ALLOC,
-        orte_iof_proxy_svc_recv,
-        NULL
-    );
-    if(rc < 0) {
-        ORTE_ERROR_LOG(rc);
-        return;
-    }
 }
 
 
diff --git a/orte/mca/iof/svc/iof_svc_component.c b/orte/mca/iof/svc/iof_svc_component.c
index 5d4afc04f5..4309bb7f59 100644
--- a/orte/mca/iof/svc/iof_svc_component.c
+++ b/orte/mca/iof/svc/iof_svc_component.c
@@ -166,7 +166,7 @@ orte_iof_svc_init(int* priority, bool *allow_multi_user_threads, bool *have_hidd
         mca_iof_svc_component.svc_iov,
         1,
         ORTE_RML_TAG_IOF_SVC,
-        ORTE_RML_ALLOC,
+        ORTE_RML_ALLOC|ORTE_RML_PERSISTENT,
         orte_iof_svc_proxy_recv,
         NULL
     );
diff --git a/orte/mca/iof/svc/iof_svc_proxy.c b/orte/mca/iof/svc/iof_svc_proxy.c
index df5db2b7d5..c3b9dd52f5 100644
--- a/orte/mca/iof/svc/iof_svc_proxy.c
+++ b/orte/mca/iof/svc/iof_svc_proxy.c
@@ -40,9 +40,7 @@ void orte_iof_svc_proxy_recv(
     orte_rml_tag_t tag,
     void* cbdata)
 {
-    int rc;
     orte_iof_base_header_t* hdr = (orte_iof_base_header_t*)iov[0].iov_base;
-
     if(status < 0) {
         ORTE_ERROR_LOG(status);
         goto done;
@@ -84,19 +82,6 @@ done:
 
     mca_iof_svc_component.svc_iov[0].iov_base = NULL;
     mca_iof_svc_component.svc_iov[0].iov_len = 0;
-
-    rc = orte_rml.recv_nb(
-        ORTE_RML_NAME_ANY,
-        mca_iof_svc_component.svc_iov,
-        1,
-        ORTE_RML_TAG_IOF_SVC,
-        ORTE_RML_ALLOC,
-        orte_iof_svc_proxy_recv,
-        NULL
-    );
-    if(rc < 0) {
-        ORTE_ERROR_LOG(rc);
-    }
 }