X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=blobdiff_plain;f=src%2Fkernel%2Fmptp.c;h=c4f5644225ec1f09e4af451a658e6e28041d77d7;hb=ff99f32868c3850fc0ae71a652563eb70e32ea77;hp=e7c33964f903a52ad64e51855f77c9f8b27e57b1;hpb=e3bff5fefa935df631f368118784a2bb4ff17e0d;p=swifty.git diff --git a/src/kernel/mptp.c b/src/kernel/mptp.c index e7c3396..c4f5644 100644 --- a/src/kernel/mptp.c +++ b/src/kernel/mptp.c @@ -97,6 +97,8 @@ static int mptp_bind(struct socket *sock, struct sockaddr *addr, int addr_len) log_debug("Bind received port=%u (network order)\n", mptp_addr->dests[0].port); port = ntohs(mptp_addr->dests[0].port); + if (port == 0) + port = get_next_free_port(); if (unlikely(port == 0 || port >= MAX_MPTP_PORT)) { log_error("Invalid value for sockaddr port (%u)\n", port); @@ -339,8 +341,11 @@ static int mptp_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr * if (likely(!err)) { log_debug("Sent %u bytes on wire\n", len); ret += len; - } else + dest->bytes = len; + } else { log_error("ip_queue_xmit failed\n"); + dest->bytes = -1; + } } return ret; @@ -360,6 +365,7 @@ static int mptp_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr * int err, copied; int i; struct sockaddr_mptp *ret_addr = (struct sockaddr_mptp *) msg->msg_name; + ret_addr->count = 0; log_debug("Trying to receive sock=%p sk=%p flags=%d\n", sock, sk, flags); @@ -386,6 +392,7 @@ static int mptp_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr * goto out_free; } log_debug("Received %d bytes\n", copied); + msg->msg_iov[i].iov_len = copied; sock_recv_ts_and_drops(msg, sk, skb);