Modifcations of the sendout of packets

This commit is contained in:
n07070 2020-04-27 17:53:53 +02:00
parent 822b344a57
commit eb4770e36c
1 changed files with 8 additions and 4 deletions

View File

@ -421,8 +421,10 @@ int add_tlv(packet *pack, tlv *tlv, struct sockaddr_in6 *dest, int socket_num) {
// Send length bytes from packet
int send_packet(char *packet_buff, int16_t length, struct sockaddr_in6 *dest, int socket_num) {
((packet*) packet_buff)->length = htons(((packet*) packet_buff)->length);
// Vectorized buffer
struct iovec vec_buff = {.iov_len = sizeof(packet_buff), .iov_base = packet_buff};
struct iovec vec_buff = {.iov_len = length, .iov_base = packet_buff};
int error_while_sending = 0;
@ -442,7 +444,7 @@ int send_packet(char *packet_buff, int16_t length, struct sockaddr_in6 *dest, in
printf(">> Sent out only part of the packet.\n");
error_while_sending = 1;
} else {
printf(">> Send out packet to peer\n");
printf(">> Send out packet to peer, size : %i\n", response_code);
}
if (error_while_sending == 1) {
@ -519,6 +521,7 @@ int send_single_tlv(tlv *tlv, struct sockaddr_in6 *dest, int socket_num) {
}
// Send the packet
printf("(%i)\n", pack.length );
return send_packet((char*) &pack, pack.length, dest, socket_num);
}
@ -652,7 +655,8 @@ int check_header(char * received_data_buffer, int received_data_len, struct pack
return -1;
}
if (packet_to_return->length + 4 > received_data_len ) {
printf("packet : %i, %i \n", packet_to_return->length + 4,received_data_len );
if (packet_to_return->length + 4 < received_data_len ) {
perror(">> The packet length is bigger than the UDP datagram, which is not possible with the current laws of physics.");
return -1;
}
@ -1002,7 +1006,7 @@ int run_node(int sock_fd){
if (bytes > 0) {
printf("Received %i bytes as : %s\n", (int)bytes, output_buffer);
// Treat incoming packets.
int work_tlv_status = listen_for_packets(output_buffer, bytes, &sender, sock_fd);
int work_tlv_status = listen_for_packets(&output_buffer, bytes, &sender, sock_fd);
if (work_tlv_status < 0) {
perror(">> Error while treating the incoming packet.");
}