--- a/loudmouth/lm-blocking-resolver.c Mon Feb 23 13:51:34 2009 -0800
+++ b/loudmouth/lm-blocking-resolver.c Mon Feb 23 18:04:58 2009 -0800
@@ -117,9 +117,11 @@
if (ans == NULL) {
/* Couldn't find any results */
+ g_object_ref (resolver);
_lm_resolver_set_result (LM_RESOLVER (resolver), LM_RESOLVER_RESULT_FAILED,
NULL);
+ g_object_unref (resolver);
retval = FALSE;
}
@@ -127,12 +129,15 @@
/*priv->results = ans;
priv->cur_result = ans; */
- g_object_ref (resolver);
+ if (retval) {
+ assert(ans->ai_family == AF_INET);
+ g_object_ref (resolver);
- _lm_resolver_set_result (LM_RESOLVER (resolver), LM_RESOLVER_RESULT_OK,
- ans);
+ _lm_resolver_set_result (LM_RESOLVER (resolver), LM_RESOLVER_RESULT_OK,
+ ans);
- g_object_unref (resolver);
+ g_object_unref (resolver);
+ }
g_free (host);
--- a/loudmouth/lm-old-socket.c Mon Feb 23 13:51:34 2009 -0800
+++ b/loudmouth/lm-old-socket.c Mon Feb 23 18:04:58 2009 -0800
@@ -772,8 +772,9 @@
if (socket->connect_func) {
(socket->connect_func) (socket, FALSE, socket->user_data);
}
+ /*FIXME: Leaking Resolvers Until Clean Up Can Be Properly Handled
g_object_unref (socket->resolver);
- socket->resolver = NULL;
+ socket->resolver = NULL;*/
g_free (socket->connect_data);
socket->connect_data = NULL;
@@ -933,10 +934,11 @@
g_free (data);
}
+ /* FIXME: Leaking Resolvers Until Clean Up Can Be Corrected
if (socket->resolver) {
g_object_unref (socket->resolver);
socket->resolver = NULL;
- }
+ } */
if (socket->io_channel) {
if (socket->watch_in) {