]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/gstreamer0-10.git/blobdiff - libs/gst/net/gstnettimeprovider.c
DEBIAN: Debianization
[glsdk/gstreamer0-10.git] / libs / gst / net / gstnettimeprovider.c
index db3215aa743db602ac46d4d7d3133885dd9af6ff..dacdd87f25362018738ba0e324ffe62c7d5c76fa 100644 (file)
@@ -314,7 +314,7 @@ gst_net_time_provider_set_property (GObject * object, guint prop_id,
           (GstObject *) g_value_get_object (value));
       break;
     case PROP_ACTIVE:
-      gst_atomic_int_set (&self->active.active, g_value_get_boolean (value));
+      g_atomic_int_set (&self->active.active, g_value_get_boolean (value));
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -352,10 +352,10 @@ gst_net_time_provider_start (GstNetTimeProvider * self)
 {
   gint ru;
   struct sockaddr_in my_addr;
-  guint len;
+  socklen_t len;
   int port;
   gint ret;
-  GError *error;
+  GError *error = NULL;
 
   if ((ret = socket (AF_INET, SOCK_DGRAM, 0)) < 0)
     goto no_socket;
@@ -373,8 +373,11 @@ gst_net_time_provider_start (GstNetTimeProvider * self)
   my_addr.sin_family = AF_INET; /* host byte order */
   my_addr.sin_port = htons ((gint16) self->port);       /* short, network byte order */
   my_addr.sin_addr.s_addr = INADDR_ANY;
-  if (self->address)
-    inet_aton (self->address, &my_addr.sin_addr);
+  if (self->address) {
+    ret = inet_aton (self->address, &my_addr.sin_addr);
+    if (ret == 0)
+      goto invalid_address_error;
+  }
 
   GST_DEBUG_OBJECT (self, "binding on port %d", self->port);
   ret =
@@ -400,9 +403,15 @@ gst_net_time_provider_start (GstNetTimeProvider * self)
   gst_poll_add_fd (self->priv->fdset, &self->priv->sock);
   gst_poll_fd_ctl_read (self->priv->fdset, &self->priv->sock, TRUE);
 
+#if !GLIB_CHECK_VERSION (2, 31, 0)
   self->thread = g_thread_create (gst_net_time_provider_thread, self, TRUE,
       &error);
-  if (!self->thread)
+#else
+  self->thread = g_thread_try_new ("GstNetTimeProvider",
+      gst_net_time_provider_thread, self, &error);
+#endif
+
+  if (error != NULL)
     goto no_thread;
 
   return TRUE;
@@ -422,6 +431,14 @@ setsockopt_error:
         g_strerror (errno), errno);
     return FALSE;
   }
+invalid_address_error:
+  {
+    close (self->priv->sock.fd);
+    self->priv->sock.fd = -1;
+    GST_ERROR_OBJECT (self, "invalid network address %s: %s (%d)",
+        self->address, g_strerror (errno), errno);
+    return FALSE;
+  }
 bind_error:
   {
     close (self->priv->sock.fd);