diff --git a/ext/dtls/gstdtlsenc.c b/ext/dtls/gstdtlsenc.c
index d6c6402..5b3bb26 100644
--- a/ext/dtls/gstdtlsenc.c
+++ b/ext/dtls/gstdtlsenc.c
@@ -96,6 +96,7 @@
 static void src_task_loop (GstPad *);
 
 static GstFlowReturn sink_chain (GstPad *, GstObject *, GstBuffer *);
+static gboolean sink_event (GstPad * pad, GstObject * parent, GstEvent * event);
 
 static void on_key_received (GstDtlsConnection *, gpointer key, guint cipher,
     guint auth, GstDtlsEnc *);
@@ -355,6 +356,7 @@
   }
 
   gst_pad_set_chain_function (sink, GST_DEBUG_FUNCPTR (sink_chain));
+  gst_pad_set_event_function (sink, GST_DEBUG_FUNCPTR (sink_event));
 
   ret = gst_pad_set_active (sink, TRUE);
   g_warn_if_fail (ret);
@@ -493,6 +495,29 @@
   return GST_FLOW_OK;
 }
 
+
+static gboolean
+sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  gboolean ret = FALSE;
+
+  switch (GST_EVENT_TYPE (event)) {
+      /* Drop segment, stream-start as we will push our own from the src pad
+       * task.
+       * FIXME: do we need any information from upstream for pushing our own? */
+    case GST_EVENT_SEGMENT:
+    case GST_EVENT_STREAM_START:
+      gst_event_unref (event);
+      ret = TRUE;
+      break;
+    default:
+      ret = gst_pad_event_default (pad, parent, event);
+      break;
+  }
+
+  return ret;
+}
+
 static void
 on_key_received (GstDtlsConnection * connection, gpointer key, guint cipher,
     guint auth, GstDtlsEnc * self)
