Skip to content

Commit c0f6857

Browse files
committed
Changed to maybe_sendto
1 parent 460036e commit c0f6857

File tree

6 files changed

+1548
-10
lines changed

6 files changed

+1548
-10
lines changed

go-back-n/gbn.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ ssize_t gbn_send(int sockfd, const void *buf, size_t len, int flags){
5454
if (state.seq_curr<packet_num){
5555
memcpy(data_packet->data,buf+(state.seq_curr-1)*DATALEN,DATALEN);
5656
}
57-
else memcpy(data_packet->data,buf+(state.seq_curr-1)*DATALEN,len%DATALEN);
57+
else strcpy(data_packet->data,buf+(state.seq_curr-1)*DATALEN);
5858

5959
state.seq_curr++;
6060
if(reset_alrm==true){
@@ -66,7 +66,7 @@ ssize_t gbn_send(int sockfd, const void *buf, size_t len, int flags){
6666

6767
printf("INFO: Checksum of packet: %d\n",data_packet->checksum);
6868

69-
status=sendto(sockfd,data_packet,sizeof(*data_packet),0,state.address,state.socklen);
69+
status=maybe_sendto(sockfd,data_packet,sizeof(*data_packet),0,state.address,state.socklen);
7070
if(status==-1){
7171
printf("ERROR: DATA packet %d send failed.\n",state.seq_curr-1);
7272
}
@@ -118,7 +118,7 @@ ssize_t gbn_recv(int sockfd, void *buf, size_t len, int flags){
118118
ack_packet->type = FINACK;
119119
ack_packet->seqnum = 0;
120120
ack_packet->checksum = 0;
121-
status = sendto(sockfd, ack_packet, sizeof(*ack_packet), 0, state.address, state.socklen);
121+
status = maybe_sendto(sockfd, ack_packet, sizeof(*ack_packet), 0, state.address, state.socklen);
122122
if(status == -1){
123123
printf("ERROR: FINACK send failed.Retrying ...\n");
124124
state.state = ESTABLISHED;
@@ -131,7 +131,7 @@ ssize_t gbn_recv(int sockfd, void *buf, size_t len, int flags){
131131
packet->type = FIN;
132132
packet->seqnum = 0;
133133
packet->checksum = 0;
134-
status = sendto(sockfd, packet, sizeof(*packet), 0, state.address, state.socklen);
134+
status = maybe_sendto(sockfd, packet, sizeof(*packet), 0, state.address, state.socklen);
135135
if(status == -1){
136136
printf("ERROR: FIN send failed.Retrying ...\n");
137137
state.state = FIN_SENT;
@@ -162,6 +162,7 @@ ssize_t gbn_recv(int sockfd, void *buf, size_t len, int flags){
162162
ack_packet->seqnum = state.seqnum;
163163
ack_packet->checksum = 0;
164164
is_seq = true;
165+
printf("LEN: %d\n",strlen(packet->data));
165166
return strlen(packet->data);
166167
}else {
167168
printf("INFO: DATA packet has the incorrect sequence number.\n");
@@ -170,7 +171,7 @@ ssize_t gbn_recv(int sockfd, void *buf, size_t len, int flags){
170171
is_seq = false;
171172
}
172173
/* Sending ACK / duplicate ACK */
173-
if (sendto(sockfd, ack_packet, sizeof(*ack_packet), 0, state.address, state.socklen) == -1) {
174+
if (maybe_sendto(sockfd, ack_packet, sizeof(*ack_packet), 0, state.address, state.socklen) == -1) {
174175
printf("ERROR: ACK sending failed.\n");
175176
state.state = CLOSED;
176177
break;
@@ -210,7 +211,7 @@ int gbn_close(int sockfd){
210211
fin_packet->seqnum = 0;
211212
fin_packet->checksum = (uint16_t) 0;
212213
fin_packet->checksum = checksum(fin_packet, sizeof(*fin_packet) / sizeof(uint16_t));
213-
status = sendto(sockfd, fin_packet, sizeof(*fin_packet), 0, state.address, state.socklen);
214+
status = maybe_sendto(sockfd, fin_packet, sizeof(*fin_packet), 0, state.address, state.socklen);
214215
if(status == -1){
215216
printf("ERROR: FIN send failed.Retrying ...\n");
216217
state.state = ESTABLISHED;
@@ -247,7 +248,7 @@ int gbn_close(int sockfd){
247248
fin_ack_packet->seqnum = 0;
248249
fin_ack_packet->checksum = (uint16_t) 0;
249250
fin_ack_packet->checksum = checksum(fin_ack_packet, sizeof(*fin_ack_packet) / sizeof(uint16_t));
250-
status = sendto(sockfd, fin_ack_packet, sizeof(*fin_ack_packet), 0, state.address, state.socklen);
251+
status = maybe_sendto(sockfd, fin_ack_packet, sizeof(*fin_ack_packet), 0, state.address, state.socklen);
251252
if(status == -1){
252253
printf("ERROR: FINACK send failed.Retrying ...\n");
253254
state.state = FIN_RCVD;
@@ -295,7 +296,7 @@ int gbn_connect(int sockfd, const struct sockaddr *server, socklen_t socklen){
295296
syn_packet->seqnum = 0;
296297
syn_packet->checksum = (uint16_t) 0;
297298
syn_packet->checksum = checksum(syn_packet, sizeof(*syn_packet) / sizeof(uint16_t));
298-
status = sendto(sockfd, syn_packet, sizeof(*syn_packet), 0, server, socklen);
299+
status = maybe_sendto(sockfd, syn_packet, sizeof(*syn_packet), 0, server, socklen);
299300
if(status == -1){
300301
printf("ERROR: SYN send failed.Retrying ...\n");
301302
state.state = CLOSED;
@@ -320,7 +321,7 @@ int gbn_connect(int sockfd, const struct sockaddr *server, socklen_t socklen){
320321
ack_packet->seqnum = 1;
321322
ack_packet->checksum = (uint16_t) 0;
322323
ack_packet->checksum = checksum(ack_packet, sizeof(*ack_packet) / sizeof(uint16_t));
323-
status = sendto(sockfd, ack_packet, sizeof(*ack_packet), 0, server, socklen);
324+
status = maybe_sendto(sockfd, ack_packet, sizeof(*ack_packet), 0, server, socklen);
324325
if(status != -1){
325326
state.state = ESTABLISHED;
326327
state.seqnum=ack_packet->seqnum;
@@ -411,7 +412,7 @@ int gbn_accept(int sockfd, struct sockaddr *client, socklen_t *socklen){
411412
syn_ack_packet->seqnum = 1;
412413
syn_ack_packet->checksum = (uint16_t) 0;
413414
syn_ack_packet->checksum = checksum(syn_ack_packet, sizeof(*syn_ack_packet) / sizeof(uint16_t));
414-
status = sendto(sockfd, syn_ack_packet, sizeof(*syn_ack_packet), 0, client, *socklen);
415+
status = maybe_sendto(sockfd, syn_ack_packet, sizeof(*syn_ack_packet), 0, client, *socklen);
415416
if(status != -1){
416417
printf("INFO: SYN_ACK sent successfully.\n");
417418
free(syn_ack_packet);

go-back-n/gbn.o

136 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)