port: Convey targeted forwarding errors to the caller.

The port_forward_to() method clobbers the specific error code returned
by the transport layer with -1.  This patch lets the code preserve the
specific error in question.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
master
Richard Cochran 2020-04-30 06:20:17 -07:00
parent a6e0b83bd5
commit 5aa19dd3f4
2 changed files with 5 additions and 3 deletions

6
port.c
View File

@ -2737,8 +2737,10 @@ int port_forward_to(struct port *p, struct ptp_message *msg)
{ {
int cnt; int cnt;
cnt = transport_sendto(p->trp, &p->fda, TRANS_GENERAL, msg); cnt = transport_sendto(p->trp, &p->fda, TRANS_GENERAL, msg);
if (cnt <= 0) { if (cnt < 0) {
return -1; return cnt;
} else if (!cnt) {
return -EIO;
} }
port_stats_inc_tx(p, msg); port_stats_inc_tx(p, msg);
return 0; return 0;

2
port.h
View File

@ -94,7 +94,7 @@ int port_forward(struct port *p, struct ptp_message *msg);
* Forward a message on a given port to the address stored in the message. * Forward a message on a given port to the address stored in the message.
* @param port A pointer previously obtained via port_open(). * @param port A pointer previously obtained via port_open().
* @param msg The message to send. Must be in network byte order. * @param msg The message to send. Must be in network byte order.
* @return Zero on success, non-zero otherwise. * @return Zero on success, negative errno value otherwise.
*/ */
int port_forward_to(struct port *p, struct ptp_message *msg); int port_forward_to(struct port *p, struct ptp_message *msg);