release tizen_2.0 beta
[framework/telephony/tel-plugin-socket_communicator.git] / common / src / sipc_server.c
index ae9dab3..ab40179 100644 (file)
@@ -160,6 +160,7 @@ static int _server_send(int fd, struct _sipc_header *h, const void *data)
 
        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;
        }
@@ -246,34 +247,17 @@ static gboolean _server_io_inspector(GIOChannel *ch, GIOCondition con, gpointer
        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)
@@ -486,6 +470,8 @@ gboolean sipc_server_broadcast(struct _sipc_server *s, const void *data, unsigne
 
        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;