#endif
#include <gst/gst-i18n-plugin.h>
+#include <gst/net/gstnetcontrolmessagemeta.h>
#include "gstsocketsrc.h"
#include "gsttcp.h"
GError *err = NULL;
GstMapInfo map;
GSocket *socket = NULL;
+ GSocketControlMessage **messages = NULL;
+ gint num_messages = 0;
+ gint i;
+ GInputVector ivec;
+ gint flags = 0;
src = GST_SOCKET_SRC (psrc);
retry:
gst_buffer_map (outbuf, &map, GST_MAP_READWRITE);
- rret = g_socket_receive_with_blocking (socket, (gchar *) map.data,
- map.size, TRUE, src->cancellable, &err);
+ ivec.buffer = map.data;
+ ivec.size = map.size;
+ rret =
+ g_socket_receive_message (socket, NULL, &ivec, 1, &messages,
+ &num_messages, &flags, src->cancellable, &err);
gst_buffer_unmap (outbuf, &map);
+ for (i = 0; i < num_messages; i++) {
+ gst_buffer_add_net_control_message_meta (outbuf, messages[i]);
+ g_object_unref (messages[i]);
+ messages[i] = NULL;
+ }
+ g_free (messages);
+
if (rret == 0) {
GSocket *tmp = NULL;
GST_DEBUG_OBJECT (src, "Received EOS on socket %p fd %i", socket,