diff options
author | Robert Manea <gotmor@gmail.com> | 2009-10-13 15:53:19 +0200 |
---|---|---|
committer | Robert Manea <gotmor@gmail.com> | 2009-10-13 15:53:19 +0200 |
commit | 5b1f6a5deed654e651e1de249a81b895d0073313 (patch) | |
tree | b045382fe6aca7fd7e843236e78525902755d46c /events.c | |
parent | 19806c1467b71d49881a9d76e28f3c656312e77b (diff) |
handle multiple calls to --conect-socket
Diffstat (limited to 'events.c')
-rw-r--r-- | events.c | 66 |
1 files changed, 37 insertions, 29 deletions
@@ -57,40 +57,47 @@ send_event_socket(GString *msg) { gsize len; guint i=0, j=0; - if(uzbl.comm.connect_chan && - uzbl.comm.connect_chan->is_writeable) { - if(uzbl.state.event_buffer) { - event_buffer_timeout(0); - - while(j < uzbl.state.event_buffer->len) { - tmp = g_ptr_array_index(uzbl.state.event_buffer, j++); - ret = g_io_channel_write_chars (uzbl.comm.connect_chan, - tmp->str, tmp->len, - &len, &error); - /* is g_ptr_array_free(uzbl.state.event_buffer, TRUE) enough? */ - //g_string_free(tmp, TRUE); - if (ret == G_IO_STATUS_ERROR) { - g_warning ("Error sending event to socket: %s", error->message); + if(uzbl.comm.connect_chan) { + while(i < uzbl.comm.connect_chan->len) { + gio = g_ptr_array_index(uzbl.comm.connect_chan, i++); + j=0; + + if(gio && gio->is_writeable) { + if(uzbl.state.event_buffer) { + event_buffer_timeout(0); + + while(j < uzbl.state.event_buffer->len) { + tmp = g_ptr_array_index(uzbl.state.event_buffer, j++); + ret = g_io_channel_write_chars (gio, + tmp->str, tmp->len, + &len, &error); + + if (ret == G_IO_STATUS_ERROR) { + g_warning ("Error sending event to socket: %s", error->message); + } + g_io_channel_flush(gio, &error); + } + } + + if(msg) { + while(!ret || + ret == G_IO_STATUS_AGAIN) { + ret = g_io_channel_write_chars (gio, + msg->str, msg->len, + &len, &error); + } + + if (ret == G_IO_STATUS_ERROR) { + g_warning ("Error sending event to socket: %s", error->message); + } + g_io_channel_flush(gio, &error); } - g_io_channel_flush(uzbl.comm.connect_chan, &error); } + } + if(uzbl.state.event_buffer) { g_ptr_array_free(uzbl.state.event_buffer, TRUE); uzbl.state.event_buffer = NULL; } - - if(msg) { - while(!ret || - ret == G_IO_STATUS_AGAIN) { - ret = g_io_channel_write_chars (uzbl.comm.connect_chan, - msg->str, msg->len, - &len, &error); - } - - if (ret == G_IO_STATUS_ERROR) { - g_warning ("Error sending event to socket: %s", error->message); - } - g_io_channel_flush(uzbl.comm.connect_chan, &error); - } } /* buffer events until a socket is set and connected * or a timeout is encountered @@ -101,6 +108,7 @@ send_event_socket(GString *msg) { g_ptr_array_add(uzbl.state.event_buffer, (gpointer)g_string_new(msg->str)); } + i=0; if(msg && uzbl.comm.client_chan) { while(i < uzbl.comm.client_chan->len) { gio = g_ptr_array_index(uzbl.comm.client_chan, i++); |