+2007-06-19 Wim Taymans <wim@fluendo.com>
+
+ * gst/rtsp/rtspconnection.c: (rtsp_connection_connect),
+ (rtsp_connection_close), (rtsp_connection_free):
+ Use threadsafe inet_ntop to convert an ip number to a string.
+ Fixes #447961.
+ Don't leak fd (and ip) when freeing a connection without first closing
+ it.
+
2007-06-19 Jan Schmidt <thaytan@mad.scientist.com>
* configure.ac:
struct sockaddr_in sa_in;
struct hostent *hostinfo;
char **addrs;
- gchar *ip;
+ const gchar *ip;
+ gchar ipbuf[INET_ADDRSTRLEN];
struct in_addr addr;
gint ret;
guint16 port;
goto not_ip; /* host not an IP host */
addrs = hostinfo->h_addr_list;
- ip = inet_ntoa (*(struct in_addr *) *addrs);
+ ip = inet_ntop (AF_INET, (struct in_addr *) addrs[0], ipbuf,
+ sizeof (ipbuf));
}
/* get the port from the url */
done:
conn->fd = fd;
- conn->ip = ip;
+ conn->ip = g_strdup (ip);
return RTSP_OK;
g_return_val_if_fail (conn != NULL, RTSP_EINVAL);
+ g_free (conn->ip);
+ conn->ip = NULL;
+
if (conn->fd != -1) {
res = CLOSE_SOCKET (conn->fd);
#ifdef G_OS_WIN32
RTSPResult
rtsp_connection_free (RTSPConnection * conn)
{
+ RTSPResult res;
+
g_return_val_if_fail (conn != NULL, RTSP_EINVAL);
#ifdef G_OS_WIN32
WSACleanup ();
#endif
-
+ res = rtsp_connection_close (conn);
g_timer_destroy (conn->timer);
g_free (conn->username);
g_free (conn->passwd);
-
g_free (conn);
- return RTSP_OK;
+ return res;
}
RTSPResult