add: g_message ("subs '%x'", *subs);
context: server_cb (GIOChannel *source, GIOCondition condition, gpointer data){	BaconMessageConnection *conn = (BaconMessageConnection *)data;	char *message, *subs, buf;	int cd, alen, rc, offset;	gboolean finished, serverconn = FALSE;	message = g_malloc (1);	offset = 0;	if (conn->serverfd == g_io_channel_unix_get_fd (source)) {		cd = accept (conn->serverfd, NULL, &alen);		conn->fd = cd;		setup_connection (conn);		serverconn = TRUE;	} else {		cd = conn->fd;	}	rc = read (cd, &buf, 1);	while (rc != 0 && buf != '\n')	{		message = g_realloc (message, rc + offset + 1);		message[offset] = buf;		offset = offset + rc;		rc = read (cd, &buf, 1);	}	if (rc == 0) {		g_io_channel_shutdown (conn->chan, FALSE, NULL);		g_io_channel_unref (conn->chan);		conn->chan = NULL;		close (conn->fd);		conn->fd = -1;		g_free (message);		return serverconn;	}	message[offset] = '\0';	subs = message;	finished = FALSE;	while (subs != '\0' && finished == FALSE)	{		if (message != NULL && conn->func != NULL)			(*conn->func) (subs, conn->data);		subs += strlen (subs) + 1;		if (subs - message >= offset)			finished = TRUE;	}	g_free (message);	return TRUE;}