diff options
| author | Prasanna Kumar Kalever <prasanna.kalever@redhat.com> | 2016-04-04 16:15:18 +0530 | 
|---|---|---|
| committer | Raghavendra G <rgowdapp@redhat.com> | 2016-05-04 20:24:32 -0700 | 
| commit | 8f6ab172c9817638f9032ed4436423efd8f8c56c (patch) | |
| tree | 844002fa0fbaaf9d28115f1c6fea67d94f0bdd27 | |
| parent | f9c59e29ccd770ae212da76b5e6f6ce3d8d09e61 (diff) | |
rpc: assign port only if it is unreserved
Current order:
    assign port;
    check for port;
    if reserved {
        port--;
        continue to i;
    }
    bind();
basically, we are assigning port first then checking if it is reserved
Fix:
    get unreserved port;
    assign port;
    bind();
from now, we get unreserved port first and then assign it
Backport of:
> Change-Id: I004580c5215e7c9cae3594af6405b20fcd9fa4ad
> BUG: 1323659
> Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
> Reviewed-on: http://review.gluster.org/13900
> Tested-by: Prasanna Kumar Kalever <pkalever@redhat.com>
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
> Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
> CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
> Reviewed-by: Raghavendra Talur <rtalur@redhat.com>
> Smoke: Gluster Build System <jenkins@build.gluster.com>
> Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
> Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Change-Id: I772c1323606f1853542e22d8ab4d80934871efcb
BUG: 1332838
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Reviewed-on: http://review.gluster.org/14204
Tested-by: Prasanna Kumar Kalever <pkalever@redhat.com>
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
| -rw-r--r-- | rpc/rpc-transport/rdma/src/name.c | 4 | ||||
| -rw-r--r-- | rpc/rpc-transport/socket/src/name.c | 4 | 
2 files changed, 6 insertions, 2 deletions
diff --git a/rpc/rpc-transport/rdma/src/name.c b/rpc/rpc-transport/rdma/src/name.c index 2f6997546ea..d4502e766bf 100644 --- a/rpc/rpc-transport/rdma/src/name.c +++ b/rpc/rpc-transport/rdma/src/name.c @@ -61,12 +61,14 @@ af_inet_bind_to_port_lt_ceiling (struct rdma_cm_id *cm_id,          ret = gf_process_reserved_ports (ports, ceiling);          while (port) { -                _assign_port (sockaddr, port);                  /* ignore the reserved ports */                  if (ports[port] == _gf_true) {                          port--;                          continue;                  } + +                _assign_port (sockaddr, port); +                  ret = rdma_bind_addr (cm_id, sockaddr);                  if (ret == 0) diff --git a/rpc/rpc-transport/socket/src/name.c b/rpc/rpc-transport/socket/src/name.c index 642e99cdfcd..aa43006785f 100644 --- a/rpc/rpc-transport/socket/src/name.c +++ b/rpc/rpc-transport/socket/src/name.c @@ -50,12 +50,14 @@ af_inet_bind_to_port_lt_ceiling (int fd, struct sockaddr *sockaddr,          while (port)          { -                _assign_port (sockaddr, port);                  /* ignore the reserved ports */                  if (ports[port] == _gf_true) {                          port--;                          continue;                  } + +                _assign_port (sockaddr, port); +                  ret = bind (fd, sockaddr, sockaddr_len);                  if (ret == 0)  | 
