Hi Andrei, >>> +static gboolean io_session_event(GIOChannel *chan, GIOCondition cond, >>> + gpointer data) >>> +{ >>> + struct hal_msg_hdr hdr; >>> + struct hal_msg_rsp rsp; >>> + uint8_t *buf; >>> + int sock, len, size; >>> + uint8_t status; >>> + >>> + if (cond & G_IO_NVAL) >>> + return FALSE; >>> + >>> + sock = g_io_channel_unix_get_fd(chan); >>> + >>> + if (cond & (G_IO_HUP | G_IO_ERR)) { >>> + error("%s: error condition %d", __func__, cond); >>> + /* TODO: handle */ >>> + return FALSE; >>> + } >>> + >>> + len = recv(sock, &hdr, sizeof(hdr), MSG_PEEK); >>> + if (len != sizeof(hdr)) { >>> + /* TODO: handle */ >>> + return FALSE; >>> + } >>> + >>> + size = sizeof(hdr) + hdr.len; >>> + buf = malloc(size); >>> + if (!buf) >>> + return TRUE; >>> + >>> + len = recv(sock, buf, size, 0); >>> + if (len != size) { >>> + /* TODO: handle */ >>> + free(buf); >>> + return FALSE; >>> + } >>> + >>> + status = process_hal_msg(buf, len); >>> + >>> + free(buf); >>> + >>> + memcpy(&rsp, &hdr, sizeof(hdr)); >>> + rsp.hdr.len = sizeof(uint8_t); >>> + rsp.status = status; >> >> You are not using "rsp" on this function (and not TODO comment explaining why). > > will fix this. > >> >>> + /* Since daemon would be run also on host we have to grant perms */ >>> + chmod(sock_path, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | >>> + S_IWOTH); >> >> If it is really necessary to have a world writable socket, better >> explain in detail on the comment. > > the problem here is that we need to run this on a host and on Android > where HAL is running under user bluetooth, this has to be changed to use > ifdef logic. and why are we not starting the daemon as user bluetooth with proper capabilities. Regards Marcel -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html