ssize_t tcp_stream_next(struct tcp_stream *stream, unsigned *way_) { unsigned way; if (stream->past_len[0] >= stream->len) { if (stream->past_len[1] >= stream->len) { if (! stream->fin_acked[0]) { way = 1; } else if (! stream->fin_acked[1]) { way = 0; } else { // nothing left to be done return 0; } } else { way = 1; } } else if (stream->past_len[1] >= stream->len) { way = 0; } else if (stream->past_len[0] == 0 && stream->past_len[1] == 0) { way = 0; // we want client to be way=0 } else if (stream->past_len[0] == 1 && stream->past_len[1] == 0) { way = 1; // synack } else if (stream->past_len[0] == 1 && stream->past_len[1] == 1) { way = 0; // ack of synack (+ first datas) } else { way = !!(rand() & 0x100); } if (way_) *way_ = way; return stream_packet(stream, way); }
void testSlipMsg() { char* test = "Hola. Test!"; stream_packet(&chargeter,test); }