#include <gnet.h>
#include <glib.h>
+#include <string.h>
#include "nethook.h"
#include "pop.h"
{
net_read orig_read;
gpointer orig_data;
+ GString *buffer;
} pop_t;
static void
pop = g_slice_new (pop_t);
pop->orig_read = layer->read;
pop->orig_data = layer->data;
+ pop->buffer = g_string_sized_new (4096);
layer->read = pop_read;
layer->data = pop;
return layer;
void
pop_destroy (net_hook_t *hook)
{
- g_slice_free (net_hook_t, hook->data);
+ pop_t *pop = hook->data;
+ g_string_free (pop->buffer, TRUE);
+ hook->read = pop->orig_read;
+ hook->data = pop->orig_data;
+ g_slice_free (net_hook_t, (gpointer) pop);
}