X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=blobdiff_plain;f=src%2Fkernel%2Fmptp.c;h=eaff81e8cfdea6ce9c0969d2eda9c4535745dc45;hb=76819a02188af33c0093cf776c4b86bfaf18d4fb;hp=94c526343fac0635367d6929673e7fe295603b7b;hpb=dd7dd9d88c8eb825f100f4d8285aa4290e7e5a74;p=swifty.git diff --git a/src/kernel/mptp.c b/src/kernel/mptp.c index 94c5263..eaff81e 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,11 +388,14 @@ static int mptp_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr * log_error("skb_copy_datagram_iovec\n"); goto out_free; } + log_debug("Received %d bytes\n", copied); sock_recv_ts_and_drops(msg, sk, skb); - if (ret_addr) + if (ret_addr) { memcpy(&ret_addr->dests[i], &mptp_addr->dests[0], sizeof(ret_addr->dests[i])); + ret_addr->dests[i].bytes = copied; + } err = copied;