diff -pruN bluez-utils-3.9/sdpd/server.c bluez-utils-3.9.patched/sdpd/server.c --- bluez-utils-3.9/sdpd/server.c 2007-01-21 19:57:15.000000000 +0100 +++ bluez-utils-3.9.patched/sdpd/server.c 2007-02-19 20:32:35.000000000 +0100 @@ -207,7 +207,7 @@ static gboolean io_accept_event(GIOChann io = g_io_channel_unix_new(nsk); g_io_channel_set_close_on_unref(io, TRUE); - g_io_add_watch(io, G_IO_IN, io_session_event, data); + g_io_add_watch(io, G_IO_IN|G_IO_HUP|G_IO_ERR, io_session_event, data); g_io_channel_unref(io); @@ -230,13 +230,13 @@ int start_sdp_server(uint16_t mtu, uint3 l2cap_io = g_io_channel_unix_new(l2cap_sock); g_io_channel_set_close_on_unref(l2cap_io, TRUE); - g_io_add_watch(l2cap_io, G_IO_IN, io_accept_event, &l2cap_sock); + g_io_add_watch(l2cap_io, G_IO_IN|G_IO_HUP|G_IO_ERR, io_accept_event, &l2cap_sock); if (compat && unix_sock > fileno(stderr)) { unix_io = g_io_channel_unix_new(unix_sock); g_io_channel_set_close_on_unref(unix_io, TRUE); - g_io_add_watch(unix_io, G_IO_IN, io_accept_event, &unix_sock); + g_io_add_watch(unix_io, G_IO_IN|G_IO_HUP|G_IO_ERR, io_accept_event, &unix_sock); } return 0;