@@ -209,7 +209,7 @@ static MESGB *rcvframe(int sockfd, QTYPE *q){
209209// cek struktur frame
210210
211211if (c[0 ].soh != SOH || c[0 ].stx != STX || c[0 ].etx != ETX || c[0 ].msgno != msgno) {
212- printf (" kirim NAK\n " );
212+ printf (" kirim NAK header \n " );
213213exit (-3 );
214214}
215215
@@ -220,16 +220,17 @@ static MESGB *rcvframe(int sockfd, QTYPE *q){
220220checksumarr[1 ] = c[0 ].stx ;
221221checksumarr[2 ] = c[0 ].etx ;
222222checksumarr[3 ] = c[0 ].msgno ;
223- checksumarr[4 ] = c[0 ].data [ 0 ] ;
224- unsigned int checksum = crc32 (& checksumarr);
223+ checksumarr[4 ] = *( c[0 ].data ) ;
224+ unsigned int checksum = crc32a ( checksumarr);
225225if (checksum != c[0 ].checksum ) {
226- printf (" kirim NAK\n " );
226+ printf (" kirim NAK checksumarr \n " );
227227exit (-4 );
228228}
229229
230230// succeed, sendto(transmitter, ACK);
231-
232- int send_ack = sendto (sockfd, ACK, sizeof (ACK), 0 , (struct sockaddr *)&cli_addr, clilen);
231+ int * ack_table;
232+ ack_table[0 ] = ACK;
233+ int send_ack = sendto (sockfd, ack_table, sizeof (ACK), 0 , (struct sockaddr *)&cli_addr, clilen);
233234if (send_ack < 0 ){ // error sending ACK character
234235printf (" Error send ACK: %d" , send_ack);
235236exit (-2 );
@@ -238,8 +239,8 @@ static MESGB *rcvframe(int sockfd, QTYPE *q){
238239// succeed reading character
239240// //////////////////////////////////
240241q->count ++;
241- q->data [q->rear ] = c[0 ].data ;
242- cur. data = &(q->data [q->rear ]);
242+ q->data [q->rear ] = *( c[0 ].data ) ;
243+ cur-> data = &(q->data [q->rear ]);
243244q->rear ++;
244245if (q->rear == RXQSIZE) {
245246q->rear = 0 ;
0 commit comments