diff --git a/GRESB/gresb_bridge.c b/GRESB/gresb_bridge.c index 013231e0ce37c613a7c36def8a363aa9275e862d..aa0a07b4a08755ce70f4a3000e20e1bca1d8419b 100644 --- a/GRESB/gresb_bridge.c +++ b/GRESB/gresb_bridge.c @@ -234,6 +234,7 @@ static int usr_pkt_to_gresb(int fd, struct bridge_cfg *cfg) { int ret; ssize_t recv_bytes; + uint8_t *gresb_pkt; unsigned char *recv_buffer; @@ -248,13 +249,20 @@ static int usr_pkt_to_gresb(int fd, struct bridge_cfg *cfg) printf("%c", recv_buffer[i]); } #endif + gresb_pkt = gresb_create_host_data_pkt(recv_buffer, recv_bytes); + + if (!gresb_pkt) { + printf("error creating packet\n"); + exit(EXIT_FAILURE); + } /* we SEND to the TX port */ - ret = send_all(cfg->gresb_tx->socket, - recv_buffer, recv_bytes); + ret = send_all(cfg->gresb_tx->socket, gresb_pkt, + gresb_get_host_data_pkt_size(gresb_pkt)); if (ret == -1) perror("send"); + gresb_destroy_host_data_pkt((struct host_to_gresb_pkt *) gresb_pkt); free(recv_buffer); return recv_bytes;