X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=blobdiff_plain;f=src%2Fkernel%2Fmptp.c;h=a979736dce182d290ef39c44554879e9462fd0e7;hb=cb7b5bbb4b90006a46dc587533addd573ef1bf8f;hp=94c526343fac0635367d6929673e7fe295603b7b;hpb=dd7dd9d88c8eb825f100f4d8285aa4290e7e5a74;p=swifty.git diff --git a/src/kernel/mptp.c b/src/kernel/mptp.c index 94c5263..a979736 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); @@ -360,6 +362,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); @@ -385,6 +388,7 @@ static int mptp_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr * log_error("skb_copy_datagram_iovec\n"); goto out_free; } + msg->msg_iov[i].iov_len = copied; sock_recv_ts_and_drops(msg, sk, skb);