mirror of git://git.sysmocom.de/ofono
Make overflow code a bit better
This commit is contained in:
parent
9d0b4feafa
commit
1418c2aec1
|
@ -584,6 +584,10 @@ static void new_bytes(GAtChat *p)
|
||||||
wrap -= p->read_so_far;
|
wrap -= p->read_so_far;
|
||||||
p->read_so_far = 0;
|
p->read_so_far = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We're overflowing the buffer, shutdown the socket */
|
||||||
|
if (ring_buffer_avail(p->buf) == 0)
|
||||||
|
g_at_chat_shutdown(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean received_data(GIOChannel *channel, GIOCondition cond,
|
static gboolean received_data(GIOChannel *channel, GIOCondition cond,
|
||||||
|
@ -605,12 +609,8 @@ static gboolean received_data(GIOChannel *channel, GIOCondition cond,
|
||||||
|
|
||||||
toread = ring_buffer_avail_no_wrap(chat->buf);
|
toread = ring_buffer_avail_no_wrap(chat->buf);
|
||||||
|
|
||||||
/* We're going to start overflowing the buffer
|
|
||||||
* this cannot happen under normal circumstances, so probably
|
|
||||||
* the channel is getting garbage, drop off
|
|
||||||
*/
|
|
||||||
if (toread == 0)
|
if (toread == 0)
|
||||||
return FALSE;
|
break;
|
||||||
|
|
||||||
buf = ring_buffer_write_ptr(chat->buf);
|
buf = ring_buffer_write_ptr(chat->buf);
|
||||||
|
|
||||||
|
@ -629,9 +629,6 @@ static gboolean received_data(GIOChannel *channel, GIOCondition cond,
|
||||||
if (cond & (G_IO_HUP | G_IO_ERR))
|
if (cond & (G_IO_HUP | G_IO_ERR))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (err == G_IO_ERROR_NONE && rbytes == 0)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (err != G_IO_ERROR_NONE && err != G_IO_ERROR_AGAIN)
|
if (err != G_IO_ERROR_NONE && err != G_IO_ERROR_AGAIN)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue