module-avb: check that ptp management request is complete

This commit is contained in:
Nils Tonnaett 2026-01-16 22:00:37 -08:00 committed by hackerman-kl
parent f360af0889
commit f4c26cd3ed

View file

@ -110,7 +110,8 @@ static bool update_ts_refclk(struct gptp *gptp) {
req.management_message_length_be = htons(2); req.management_message_length_be = htons(2);
req.management_id_be = htons(PTP_MGMT_ID_PARENT_DATA_SET); req.management_id_be = htons(PTP_MGMT_ID_PARENT_DATA_SET);
if (write(gptp->ptp_fd, &req, sizeof(req)) == -1) { ret = write(gptp->ptp_fd, &req, sizeof(req));
if (ret == -1) {
pw_log_warn("Failed to send PTP management request: %m"); pw_log_warn("Failed to send PTP management request: %m");
if (errno != ENOTCONN) if (errno != ENOTCONN)
return false; return false;
@ -120,6 +121,10 @@ static bool update_ts_refclk(struct gptp *gptp) {
pw_log_info("Reopened PTP management socket"); pw_log_info("Reopened PTP management socket");
return false; return false;
} }
if (ret != sizeof(req)) {
pw_log_warn("Incomplete PTP management request: %m");
return false;
}
uint8_t buf[sizeof(struct ptp_management_msg) + sizeof(struct ptp_parent_data_set)]; uint8_t buf[sizeof(struct ptp_management_msg) + sizeof(struct ptp_parent_data_set)];
ret = read(gptp->ptp_fd, &buf, sizeof(buf)); ret = read(gptp->ptp_fd, &buf, sizeof(buf));