Fix: Do not send shutdown more than once

This commit is contained in:
Denis Kenzior 2009-10-14 16:34:35 -05:00
parent a8af38d209
commit d4d1617684
1 changed files with 9 additions and 0 deletions

View File

@ -89,6 +89,7 @@ struct _GAtMux {
void *driver_data; /* Driver data */
char buf[MUX_BUFFER_SIZE]; /* Buffer on the main mux */
int buf_used; /* Bytes of buf being used */
gboolean shutdown;
};
struct mux_setup_data {
@ -545,6 +546,7 @@ GAtMux *g_at_mux_new(GIOChannel *channel, const GAtMuxDriver *driver)
mux->ref_count = 1;
mux->driver = driver;
mux->shutdown = TRUE;
mux->channel = channel;
g_io_channel_ref(channel);
@ -596,6 +598,8 @@ gboolean g_at_mux_start(GAtMux *mux)
G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
received_data, mux, NULL);
mux->shutdown = FALSE;
return TRUE;
}
@ -603,6 +607,9 @@ gboolean g_at_mux_shutdown(GAtMux *mux)
{
int i;
if (mux->shutdown == TRUE)
return FALSE;
if (mux->channel == NULL)
return FALSE;
@ -619,6 +626,8 @@ gboolean g_at_mux_shutdown(GAtMux *mux)
if (mux->driver->shutdown)
mux->driver->shutdown(mux);
mux->shutdown = TRUE;
return TRUE;
}