ret = send(fd, p, p_len, MSG_NOSIGNAL);
if (ret < 0) {
+ dbg("send() ret = %d, fd = %d, p = %p, p_len = %d", fd, ret, p, p_len);
g_free(p);
return -1;
}
int fd = 0;
fd = g_io_channel_unix_get_fd(ch);
- switch (con) {
- case G_IO_IN:
- _server_recv(fd, (struct _sipc_server*) data);
- return TRUE;
-
- case G_IO_OUT:
- // data can be written ( without blocking )
- case G_IO_PRI:
- // there is urgent data to read
- case G_IO_ERR:
- // error condition
- case G_IO_HUP:
- // hung up ( the connection has been broken, usually for pipe and sockets )
-
- // close channel
- dbg("channel has been changed");
- return FALSE;
-
- case G_IO_NVAL:
- dbg("Invalid channel action happened");
- return FALSE;
+ if (con & G_IO_IN) {
+ _server_recv(fd, (struct _sipc_server*) data);
+ }
- default:
- // unknown err
- break;
+ if (con & G_IO_HUP) {
+ // TODO: close channel
+ dbg("channel has been changed");
+ return FALSE;
}
- return FALSE;
+ return TRUE;
}
static gboolean _server_register_channel(struct _sipc_channel *ch, struct _sipc_server *s)
SIPC_CHECK_DATA_NULL( s, FALSE);
+ dbg("client count = %d", g_slist_length(s->rx_chs));
+
list = s->rx_chs;
while (list) {
c = (struct _sipc_channel *) list->data;