static void
gss_program_finalize (GObject * object)
{
  GssProgram *program = GSS_PROGRAM (object);
  GList *g;

  for (g = program->streams; g; g = g_list_next (g)) {
    GssStream *stream = g->data;

    gst_object_unparent (GST_OBJECT (stream));
  }
  g_list_free (program->streams);

  if (program->hls.variant_buffer) {
    soup_buffer_free (program->hls.variant_buffer);
  }

  if (program->pngappsink)
    g_object_unref (program->pngappsink);
  if (program->jpegsink)
    g_object_unref (program->jpegsink);
  gss_metrics_free (program->metrics);
  g_free (program->follow_uri);
  g_free (program->follow_host);
  g_free (program->description);

  parent_class->finalize (object);
}
static void
gss_program_finalize (GObject * object)
{
  GssProgram *program = GSS_PROGRAM (object);

  gss_program_stop (program);

  g_list_free_full (program->streams, g_object_unref);

  if (program->hls.variant_buffer) {
    soup_buffer_free (program->hls.variant_buffer);
  }

  gss_metrics_free (program->metrics);
  g_free (program->follow_uri);
  g_free (program->follow_host);
  g_free (program->description);
  g_free (program->safe_description);
  g_free (program->uuid);

  parent_class->finalize (object);
}
static void
gss_server_finalize (GObject * object)
{
  GssServer *server = GSS_SERVER (object);
  int i;

  g_list_free_full (server->programs, g_object_unref);

  if (server->server)
    g_object_unref (server->server);
  if (server->ssl_server)
    g_object_unref (server->ssl_server);

  g_list_free (server->featured_resources);
  server->modules = g_list_remove (server->modules, server);
  g_list_free_full (server->modules, g_object_unref);

  g_hash_table_unref (server->resources);
  for (i = 0; i < server->n_prefix_resources; i++) {
    gss_resource_free (server->prefix_resources[i]);
  }
  g_free (server->prefix_resources);
  gss_metrics_free (server->metrics);
  g_free (server->base_url);
  g_free (server->base_url_https);
  g_free (server->server_hostname);
  g_free (server->realm);
  g_free (server->admin_hosts_allow);
  gss_addr_range_list_free (server->admin_arl);
  g_free (server->kiosk_hosts_allow);
  gss_addr_range_list_free (server->kiosk_arl);
  g_free (server->admin_token);
  g_free (server->archive_dir);
  g_free (server->cas_server);
  g_object_unref (server->client_session);

  parent_class->finalize (object);
}