diff --git a/src/packet_interface.h b/src/packet_interface.h index 181dc94a21d823b623621c5a7de5645da6d627d9..7428389f7a4a349822d67d0219452cdd56a060d1 100644 --- a/src/packet_interface.h +++ b/src/packet_interface.h @@ -68,7 +68,7 @@ typedef enum { #define TR_MASK 0x20 #define WINDOW_MASK 0x1F #define TR_SETTER_TO_ZERO 0xDF -#define SECOND_TO_LAST_PKT 0xFFFFFFFF // Use to specify it was the second to last pkt sent by the sender +#define SECOND_TO_LAST_PKT 0x3AB33922 // Use to specify it was the second to last pkt sent by the sender -> Need to be random ? #define TYPE_SHIFT 6 #define TR_SHIFT 5 diff --git a/src/sender.c b/src/sender.c index 4b81e0a5a21becac84af61a118334c20ace08322..017f8256bb0f0d8f79fddd5676553e8c9ea4a621 100644 --- a/src/sender.c +++ b/src/sender.c @@ -156,7 +156,8 @@ int main(int argc, char **argv) { } else if (can_send(state) && (pfd->revents & POLLOUT)) { - DEBUG("The sender will send a pkt on the socket, the current sender window size is: %d", state->s_window_size); + DEBUG("The sender will send a pkt on the socket, the current sender window size is: %d | receiver window size: %d", + state->s_window_size, state->r_window_size); rvalue = read_and_send(state, sending_fd, socket_fd); if (rvalue == -1) { diff --git a/src/sender_utils.c b/src/sender_utils.c index bdcdea1edb7aaeaf009d39ab96ca7b4525fa61b1..27aed81460f8ad466bae7434d40fdf85d27e4cae 100644 --- a/src/sender_utils.c +++ b/src/sender_utils.c @@ -146,8 +146,8 @@ int handle_returning_ack_nack(sender_state_t *state, int socket_fd) } else { - DEBUG("The receiver is asking AGAIN, the seqnum: %d", seqnum_nack); - state->r_window_size = r_window; + DEBUG("The receiver is asking AGAIN, the seqnum: %d so the sender sends it back", seqnum_nack); + state->r_window_size = r_window - 1; // -1 Because the receiver doesn't count yet the sended pkt pkt_t *n_pkt = state->buffer[place_last_nack]; if (send_pkt(state, n_pkt, place_last_nack, socket_fd) == -1) return -1; return 0;