parent
e21e184141
commit
540eac0542
@ -410,34 +410,52 @@ void
|
||||
notify_send_watches (server * serv)
|
||||
{
|
||||
struct notify *notify;
|
||||
const int format_len = serv->supports_monitor ? 1 : 2; /* just , for monitor or + and space for watch */
|
||||
GSList *list;
|
||||
GSList *point;
|
||||
int len;
|
||||
GSList *send_list = NULL;
|
||||
int len = 0;
|
||||
|
||||
len = 0;
|
||||
point = list = notify_list;
|
||||
/* Only get the list for this network */
|
||||
list = notify_list;
|
||||
while (list)
|
||||
{
|
||||
notify = list->data;
|
||||
|
||||
if (notify_do_network (notify, serv))
|
||||
{
|
||||
len += strlen (notify->name) + serv->supports_monitor ? 1 : 2; /* just , for monitor or + and space for watch */;
|
||||
if (len > 500)
|
||||
{
|
||||
notify_flush_watches (serv, point, list);
|
||||
len = strlen (notify->name) + serv->supports_monitor ? 1 : 2;
|
||||
point = list;
|
||||
}
|
||||
send_list = g_slist_append (send_list, notify);
|
||||
}
|
||||
|
||||
list = list->next;
|
||||
}
|
||||
|
||||
if (point)
|
||||
/* Now send that list in batches */
|
||||
point = list = send_list;
|
||||
while (list)
|
||||
{
|
||||
notify = list->data;
|
||||
|
||||
len += strlen (notify->name) + format_len;
|
||||
if (len > 500)
|
||||
{
|
||||
/* Too long send existing list */
|
||||
notify_flush_watches (serv, point, list);
|
||||
len = strlen (notify->name) + format_len;
|
||||
point = list; /* We left off here */
|
||||
}
|
||||
|
||||
list = g_slist_next (list);
|
||||
}
|
||||
|
||||
if (len) /* We had leftovers under 500, send them all */
|
||||
{
|
||||
notify_flush_watches (serv, point, NULL);
|
||||
}
|
||||
|
||||
g_slist_free (send_list);
|
||||
}
|
||||
|
||||
/* called when receiving a ISON 303 - should this func go? */
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user