On Mon, 10 May 2010 12:23:04 -0500
Denis Kenzior <denkenz(a)gmail.com> wrote:
Hi Kristen,
> On Mon, 10 May 2010 09:11:52 -0500
>
> Denis Kenzior <denkenz(a)gmail.com> wrote:
> > Hi Kristen,
> >
> > > If no read_handler specified, leave data alone in case someone
> > > else wants to read it.
> > > ---
> > > gatchat/gatio.c | 4 ++++
> > > gatchat/gsmdial.c | 12 ++++--------
> > > 2 files changed, 8 insertions(+), 8 deletions(-)
> > >
> > > diff --git a/gatchat/gatio.c b/gatchat/gatio.c
> > > index 61b0260..b4a3806 100644
> > > --- a/gatchat/gatio.c
> > > +++ b/gatchat/gatio.c
> > > @@ -91,6 +91,10 @@ static gboolean received_data(GIOChannel *channel,
> > > GIOCondition cond, if (cond & G_IO_NVAL)
> > > return FALSE;
> > >
> > > + /* if nobody wants this data, leave it alone */
> > > + if (io->read_handler == NULL)
> > > + return TRUE;
> > > +
> >
> > This is a really bad idea, we should never have cases where the read
> > handler is unset, and if we do we should end up closing the socket when
> > the buffer is full.
>
> In your implementation of g_at_chat_suspend, you set the read handler to
> NULL.
>
Correct, with the intent that someone else sets the read handler (e.g.
g_at_ppp)
What if you receive data after the read handler is set to NULL, but before
someone else sets the read handler? shouldn't we safe guard against that?