appl_data->plain_data,
appl_data->data_len);
- /* Append the record to the follow_info structure. */
- follow_info->payload = g_list_append(follow_info->payload, follow_record);
+ /* Add the record to the follow_info structure. */
+ follow_info->payload = g_list_prepend(follow_info->payload, follow_record);
follow_info->bytes_written[from] += appl_data->data_len;
}
fragment->data->data + new_pos,
new_frag_size);
- follow_info->payload = g_list_append(follow_info->payload, follow_record);
+ follow_info->payload = g_list_prepend(follow_info->payload, follow_record);
}
follow_info->seq[is_server] += (fragment->data->len - new_pos);
if( EQ_SEQ(fragment->seq, follow_info->seq[is_server]) ) {
/* this fragment fits the stream */
if( fragment->data->len > 0 ) {
- follow_info->payload = g_list_append(follow_info->payload, fragment);
+ follow_info->payload = g_list_prepend(follow_info->payload, fragment);
}
follow_info->seq[is_server] += fragment->data->len;
follow_record->seq = lowest_seq;
follow_info->seq[is_server] = lowest_seq;
- follow_info->payload = g_list_append(follow_info->payload, follow_record);
+ follow_info->payload = g_list_prepend(follow_info->payload, follow_record);
return TRUE;
}
follow_info->seq[follow_record->is_server]++;
follow_info->bytes_written[follow_record->is_server] += follow_record->data->len;
- follow_info->payload = g_list_append(follow_info->payload, follow_record);
+ follow_info->payload = g_list_prepend(follow_info->payload, follow_record);
return FALSE;
}
follow_info->seq[follow_record->is_server]++;
if (data_length > 0) {
follow_info->bytes_written[follow_record->is_server] += follow_record->data->len;
- follow_info->payload = g_list_append(follow_info->payload, follow_record);
+ follow_info->payload = g_list_prepend(follow_info->payload, follow_record);
added_follow_record = TRUE;
}
GList *cur;
follow_record_t *follow_record;
- for(cur = follow_info->payload; cur; cur = g_list_next(cur)) {
+ for (cur = follow_info->payload; cur; cur = g_list_next(cur)) {
if(cur->data) {
follow_record = (follow_record_t *)cur->data;
if(follow_record->data)
/* update stream counter */
follow_info->bytes_written[follow_record->is_server] += follow_record->data->len;
- follow_info->payload = g_list_append(follow_info->payload, follow_record);
+ follow_info->payload = g_list_prepend(follow_info->payload, follow_record);
return FALSE;
}
typedef struct _follow_info {
show_stream_t show_stream;
char *filter_out_filter;
- GList *payload;
+ GList *payload; /* "follow_record_t" entries, in reverse order. */
guint bytes_written[2]; /* Index with FROM_CLIENT or FROM_SERVER for readability. */
guint32 seq[2]; /* TCP only */
GList *fragments[2]; /* TCP only */
printf(",\"payloads\":[");
- for (cur = follow_info->payload; cur; cur = g_list_next(cur))
+ for (cur = g_list_last(follow_info->payload); cur; cur = g_list_previous(cur))
{
follow_record = (follow_record_t *) cur->data;
else
printf("Node 1: %s:%u\n", buf, follow_info->server_port);
- for (cur = follow_info->payload, chunk = 1;
+ for (cur = g_list_last(follow_info->payload), chunk = 1;
cur != NULL;
- cur = g_list_next(cur), chunk++)
+ cur = g_list_previous(cur), chunk++)
{
follow_record = (follow_record_t *)cur->data;
if (!follow_record->is_server) {
elapsed_timer.start();
- for (cur = follow_info_.payload; cur; cur = g_list_next(cur)) {
+ for (cur = g_list_last(follow_info_.payload); cur; cur = g_list_previous(cur)) {
if (dialogClosed()) break;
follow_record = (follow_record_t *)cur->data;