Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int receive_init(int *seq, msg *last_msg) {
- // return -1 if error
- msg *r = receive_message_timeout(3*TIME*1000);
- if (r == NULL)
- return -1;
- kermit k = msg_to_kermit(r);
- (*seq) = ((*seq) + 1) % 64; // seq++
- if (!verify(r, k.CHECK) || k.SEQ != (*seq) - 1) {
- // mesaj gresit
- // printf(" len din r: %d\n", r->len - 3);
- // printf(" len din k: %d\n", k.LEN + 2 - 3);
- // printf(" crc din r: %d\n", crc16_ccitt(r->payload, r->len - 3));
- // printf(" crc din k: %d\n", crc16_ccitt(r->payload, k.LEN - 1));
- // printf(" check in recv: %d\n", k.CHECK);
- // printf("in recv %d %d\n", r->payload[15], r->payload[16]);
- send_nak(seq, last_msg);
- // printf("NACK sent...\n");
- (*seq) = ((*seq) + 1) % 64; // seq++
- return receive_init(seq, last_msg);
- }
- // compute msg
- // DATA field
- char *data = (char *) calloc(SEND_INIT_DATA_SIZE, 1);
- data[0] = MAXL;
- data[1] = TIME;
- data[2] = NPAD;
- data[3] = PADC;
- data[4] = EOL;
- (*last_msg) = make_kermit(SEND_INIT_DATA_SIZE, seq, 'Y', data);
- (*seq) = ((*seq) + 1) % 64;
- send(last_msg);
- // printf("Send-Init received! (receiver)\n");
- // printf("aci??\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement