]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
[DAPL2] synchronize Windows source with OFED 1.3 src
authorstansmith <stansmith@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Thu, 20 Mar 2008 23:12:57 +0000 (23:12 +0000)
committerstansmith <stansmith@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Thu, 20 Mar 2008 23:12:57 +0000 (23:12 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1@1002 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

trunk/ulp/dapl2/dapl/common/dapl_debug.c
trunk/ulp/dapl2/dapl/common/dapl_ep_free.c
trunk/ulp/dapl2/dapl/common/dapl_hca_util.c
trunk/ulp/dapl2/dapl/common/dapl_ia_open.c
trunk/ulp/dapl2/dat/udat/linux/dat_osd.c
trunk/ulp/dapl2/dat/udat/windows/dat_osd.c

index 0f2e84a3c3bbd6c36bbdb87e84e96f0b98b17c93..7c7c4bc20939b3dd818ffcfe32e2da8dfcdce004 100644 (file)
@@ -51,19 +51,20 @@ void dapl_internal_dbg_log ( DAPL_DBG_TYPE type, const char *fmt, ...)
 \r
     if ( type & g_dapl_dbg_type )\r
     {\r
-       va_start (args, fmt);\r
-\r
        if ( DAPL_DBG_DEST_STDOUT & g_dapl_dbg_dest )\r
        {\r
+           va_start (args, fmt);\r
            fprintf(stdout, "%s:%d: ", _ptr_host_, getpid());\r
            dapl_os_vprintf (fmt, args);\r
+           va_end (args);\r
        }\r
 \r
        if ( DAPL_DBG_DEST_SYSLOG & g_dapl_dbg_dest )\r
        {\r
+           va_start (args, fmt);\r
            dapl_os_syslog(fmt, args);\r
+           va_end (args);\r
        }\r
-       va_end (args);\r
     }\r
 }\r
 \r
index 1b09d92ebc3607b3146a754efc52fd5f1b168401..aed50c9791bc8e9cd48ae8b830e1741644781c97 100644 (file)
@@ -111,14 +111,22 @@ dapl_ep_free (
      * Invoke ep_disconnect to clean up outstanding connections\r
      */\r
     (void) dapl_ep_disconnect (ep_ptr, DAT_CLOSE_ABRUPT_FLAG);\r
-    dapl_os_assert (ep_ptr->param.ep_state == DAT_EP_STATE_DISCONNECTED ||\r
-                   ep_ptr->param.ep_state == DAT_EP_STATE_UNCONNECTED);\r
 \r
     /*\r
      * Do verification of parameters and the state change atomically.\r
      */\r
     dapl_os_lock ( &ep_ptr->header.lock );\r
 \r
+#ifdef DAPL_DBG\r
+    /* check if event pending and warn, don't assert, state is valid */\r
+    if (ep_ptr->param.ep_state == DAT_EP_STATE_DISCONNECT_PENDING) {\r
+        dapl_dbg_log (DAPL_DBG_TYPE_WARN, " dat_ep_free WARNING: "\r
+                      "EVENT PENDING on ep %p, disconnect "\r
+                      "and wait before calling dat_ep_free\n",\r
+                      ep_ptr);\r
+    }\r
+#endif\r
+\r
     if (ep_ptr->cxn_timer != NULL)\r
     {\r
        dapls_timer_cancel ( ep_ptr->cxn_timer );\r
index 1254286e857c3ced2d61d74cd12b2e6a84245841..78c1762285d36ad383c511d988d7d0f0ae797544 100644 (file)
@@ -65,33 +65,45 @@ dapl_hca_alloc (
     DAPL_HCA   *hca_ptr;\r
 \r
     hca_ptr = dapl_os_alloc (sizeof (DAPL_HCA));\r
-    if ( NULL != hca_ptr )\r
+    if ( NULL == hca_ptr )\r
     {\r
-       dapl_os_memzero (hca_ptr, sizeof (DAPL_HCA));\r
+       goto bail;\r
+    }\r
 \r
-        if ( DAT_SUCCESS == dapls_hash_create (\r
-                 DAPL_HASH_TABLE_DEFAULT_CAPACITY, &hca_ptr->lmr_hash_table) )\r
-        {\r
-            dapl_os_lock_init(&hca_ptr->lock);\r
-            dapl_llist_init_head(&hca_ptr->ia_list_head);\r
+    dapl_os_memzero (hca_ptr, sizeof (DAPL_HCA));\r
+\r
+    if ( DAT_SUCCESS != dapls_hash_create (\r
+       DAPL_HASH_TABLE_DEFAULT_CAPACITY, &hca_ptr->lmr_hash_table) )\r
+    {\r
+       goto bail;\r
+    }\r
+\r
+    dapl_os_lock_init(&hca_ptr->lock);\r
+    dapl_llist_init_head(&hca_ptr->ia_list_head);\r
             \r
-            hca_ptr->name = dapl_os_strdup(name);\r
-            hca_ptr->ib_hca_handle = IB_INVALID_HANDLE;\r
-            hca_ptr->port_num = dapl_os_strtol(port, NULL, 0);\r
-           if (hca_ptr->name == NULL)\r
-           {\r
-               dapl_os_free (hca_ptr, sizeof (DAPL_HCA));\r
-               hca_ptr = NULL;\r
-           }\r
-        }\r
-        else\r
-        {\r
-            dapl_os_free (hca_ptr, sizeof (DAPL_HCA));\r
-            hca_ptr = NULL;\r
-        }\r
+    hca_ptr->name = dapl_os_strdup(name);\r
+    if ( NULL == hca_ptr->name )\r
+    {\r
+       goto bail;\r
     }\r
 \r
+    hca_ptr->ib_hca_handle = IB_INVALID_HANDLE;\r
+    hca_ptr->port_num = dapl_os_strtol(port, NULL, 0);\r
+\r
     return (hca_ptr);\r
+\r
+bail:\r
+    if ( NULL != hca_ptr )\r
+    {\r
+       if ( NULL != hca_ptr->lmr_hash_table )\r
+       {\r
+           dapls_hash_free (hca_ptr->lmr_hash_table);\r
+       }\r
+\r
+       dapl_os_free (hca_ptr, sizeof (DAPL_HCA));\r
+    }\r
+\r
+    return NULL;\r
 }\r
 \r
 /*\r
index 9eba640b3c4aec558d5c7489198fd448db8b0af2..79fd502759c483fa19cbeb54ea6dcfe9f80dd07a 100644 (file)
@@ -395,6 +395,10 @@ dapli_assign_hca_ip_address (
      */\r
 \r
     rc = gethostname (hostname, NAMELEN);\r
+\r
+    /* guarantee NUL termination if hostname gets truncated */\r
+    hostname[NAMELEN-1] = '\0';\r
+\r
     /*\r
      * Strip off domain info if it exists (e.g. mynode.mydomain.com)\r
      */\r
@@ -420,6 +424,7 @@ dapli_assign_hca_ip_address (
     else\r
     {\r
        hca_ptr->hca_address = * ((DAT_SOCK_ADDR6 *)addr->ai_addr);\r
+       dapls_osd_freeaddrinfo (addr);\r
     }\r
 }\r
 \r
index c3a18e60964ede00dedcc71defbd9047c4b0e555..8eee5e8198ac86c15c6123a6b36c25757037263e 100644 (file)
@@ -116,20 +116,20 @@ dat_os_dbg_print (
     {\r
        va_list args;\r
 \r
-       va_start (args, fmt);\r
-\r
        if ( DAT_OS_DBG_DEST_STDOUT & g_dbg_dest )\r
        {\r
+           va_start (args, fmt);\r
            vfprintf (stdout, fmt, args);\r
            fflush (stdout);\r
+           va_end (args);\r
        }\r
 \r
        if ( DAT_OS_DBG_DEST_SYSLOG & g_dbg_dest )\r
        {\r
+           va_start (args, fmt);\r
            vsyslog (LOG_USER | LOG_DEBUG, fmt, args);\r
+           va_end (args);\r
        }\r
-\r
-       va_end (args);\r
     }\r
 }\r
 \r
index 3b8d9d975d0a256bae904c8f9388a99cca88712a..eccf13474319782b21227278104f8c7b9052cb96 100644 (file)
@@ -113,16 +113,14 @@ dat_os_dbg_print (
     {\r
         va_list args;\r
                 \r
-        va_start(args, fmt);\r
-\r
         if ( DAT_OS_DBG_DEST_STDOUT & g_dbg_dest )\r
         {\r
+            va_start(args, fmt);\r
             vfprintf(stdout, fmt, args);\r
+            fflush(stdout);\r
+            va_end(args);\r
         }\r
-\r
-        va_end(args);\r
-\r
-        fflush(stdout);\r
+       /* no syslog() susport in Windows */\r
     }\r
 }\r
 \r