bugtracker
bugtracker copied to clipboard
Resolve mDNS timeout(5s).
Issue description
g_resolver_lookup_by_name will sync resolve mDNS. But it will timeout when chrome local and kms in internet. It will cost 5s per resolve .local. So chrome show first screen of video stream will very slow.
I have a simple resolution:
/* Based on http://www.w3.org/TR/webrtc/#rtcicecandidate-type */
struct _KmsIceCandidatePrivate
{
...
gchar *stream_id;
gboolean is_valid;
GCancellable *cancel_handle;
};
static gpointer
kms_ice_candidate_mdns_resolved (gpointer data)
{
KmsIceCandidate *self = KMS_ICE_CANDIDATE (data);
if (self == NULL) {
return NULL;
}
usleep(100*1000); // 100 ms
g_cancellable_cancel(self->priv->cancel_handle);
return NULL;
}
static gboolean
kms_ice_candidate_update_values (KmsIceCandidate * self)
{
...
GCancellable *cancel_handle = g_cancellable_new();
self->priv->cancel_handle = cancel_handle;
g_thread_new ("KmsCand", kms_ice_candidate_mdns_resolved, self);
GError *err = NULL;
GResolver *resolver = g_resolver_get_default ();
GList *addresses = g_resolver_lookup_by_name (resolver, self->priv->ip,
self->priv->cancel_handle, &err);
g_object_unref (resolver);
g_object_unref (self->priv->cancel_handle);
...
}
@jcaden
hello? Anybody? @j1elo