Version: 1
-Previous: 983b69db2c78849074cce8335270ae54dead48e5
-Head: a0d5a8797de32a12cdc1e51aef332db25f8eef64
+Previous: a429f1c07dc686eddff944234891f91d2663c128
+Head: db6bfd46d4dcb251d47899cd34ee90190327f15e
Applied:
rs-locking: ec6a8efe211b0dc98548443c2e0d67e2c355351f
reuseaddr: a0d5a8797de32a12cdc1e51aef332db25f8eef64
+ refresh-temp: db6bfd46d4dcb251d47899cd34ee90190327f15e
Unapplied:
comp_locks: b89aab130b4619806557e11e6b9c10964f00743f
preload: 5dfe7abc07064485c5100e04e5412279244c2bc3
--- /dev/null
+Bottom: 3fcdf48082614bb29c44242534cfeecb47e07114
+Top: ea75b8334003947a7f09ba5f0efcec267b5143c1
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2012-05-10 11:28:17 -0700
+
+Refresh of reuseaddr
+
+---
+
+diff --git a/src/rsocket.c b/src/rsocket.c
+index 2ffde9b..de0ec3e 100644
+--- a/src/rsocket.c
++++ b/src/rsocket.c
+@@ -1621,7 +1621,9 @@ int rsetsockopt(int socket, int level, int optname,
+ ret = rdma_set_option(rs->cm_id, RDMA_OPTION_ID,
+ RDMA_OPTION_ID_REUSEADDR,
+ (void *) optval, optlen);
+- if (ret && errno == ENOSYS)
++ if (ret && ((errno == ENOSYS) || ((rs->state != rs_init) &&
++ rs->cm_id->context &&
++ (rs->cm_id->verbs->device->transport_type == IBV_TRANSPORT_IB))))
+ ret = 0;
+ opt_on = *(int *) optval;
+ break;