diff --git a/src/openvpn/forward.c b/src/openvpn/forward.c
index 1604224..b97fb7a 100644
--- a/src/openvpn/forward.c
+++ b/src/openvpn/forward.c
@@ -2122,14 +2122,6 @@
     }
 
     /*
-     * outgoing bcast buffer waiting to be sent?
-     */
-    if (flags & IOW_MBUF)
-    {
-        socket |= EVENT_WRITE;
-    }
-
-    /*
      * Force wait on TUN input, even if also waiting on TCP/UDP output
      */
     if (flags & IOW_READ_TUN_FORCE)
diff --git a/src/openvpn/forward.h b/src/openvpn/forward.h
index 324c0b4..0309725 100644
--- a/src/openvpn/forward.h
+++ b/src/openvpn/forward.h
@@ -58,7 +58,6 @@
 #define IOW_SHAPER         (1 << 4)
 #define IOW_CHECK_RESIDUAL (1 << 5)
 #define IOW_FRAG           (1 << 6)
-#define IOW_MBUF           (1 << 7)
 #define IOW_READ_TUN_FORCE (1 << 8)
 #define IOW_WAIT_SIGNAL    (1 << 9)
 
diff --git a/src/openvpn/mudp.c b/src/openvpn/mudp.c
index 2b08ada..94e03d6 100644
--- a/src/openvpn/mudp.c
+++ b/src/openvpn/mudp.c
@@ -451,10 +451,9 @@
 static inline void
 multi_process_outgoing_link(struct multi_context *m, const unsigned int mpp_flags)
 {
-    struct multi_instance *mi = multi_process_outgoing_link_pre(m);
-    if (mi)
+    if (m->pending)
     {
-        multi_process_outgoing_link_dowork(m, mi, mpp_flags);
+        multi_process_outgoing_link_dowork(m, m->pending, mpp_flags);
     }
 }
 
diff --git a/src/openvpn/multi_io.c b/src/openvpn/multi_io.c
index 51c7d31..348e424 100644
--- a/src/openvpn/multi_io.c
+++ b/src/openvpn/multi_io.c
@@ -177,10 +177,6 @@
             flags |= IOW_TO_LINK;
         }
     }
-    else if (mbuf_defined(m->mbuf))
-    {
-        flags |= IOW_MBUF;
-    }
     else
     {
         flags |= IOW_READ;
@@ -565,7 +561,7 @@
     multi_io->n_esr = 0;
 
     /*
-     * Process queued mbuf packets destined for TCP socket
+     * Drain the queued mbuf packets, datagram and TCP instances alike
      */
     {
         struct multi_instance *mi;
