+2003-03-17 Anders Carlsson <andersca@codefactory.se>
+
+ * bus/dispatch.c: (bus_dispatch):
+ Refetch the service name since it may have been reallocated
+ when dbus_message_set_sender was called.
+
+ * dbus/dbus-sysdeps.c: (_dbus_accept):
+ Add address and address length variables and use them to stop
+ valgrind from complaining.
+
2003-03-17 Havoc Pennington <hp@pobox.com>
All tests pass, no memleaks, no valgrind complaints.
{
sender = bus_connection_get_name (connection);
_dbus_assert (sender != NULL);
-
+
if (!dbus_message_set_sender (message, sender))
{
BUS_SET_OOM (&error);
goto out;
}
+
+ /* We need to refetch the service name here, because
+ * dbus_message_set_sender can cause the header to be
+ * reallocated, and thus the service_name pointer will become
+ * invalid.
+ */
+ service_name = dbus_message_get_service (message);
}
if (strcmp (service_name, DBUS_SERVICE_DBUS) == 0) /* to bus driver */
{
if (!bus_driver_handle_message (connection, transaction, message, &error))
- goto out;
+ goto out;
}
else if (!bus_connection_is_active (connection)) /* clients must talk to bus driver first */
{
_dbus_accept (int listen_fd)
{
int client_fd;
+ struct sockaddr addr;
+ socklen_t addrlen;
+
+ addrlen = sizeof (addr);
retry:
- client_fd = accept (listen_fd, NULL, NULL);
+ client_fd = accept (listen_fd, &addr, &addrlen);
if (client_fd < 0)
{