\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
* 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
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
*/\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
else\r
{\r
hca_ptr->hca_address = * ((DAT_SOCK_ADDR6 *)addr->ai_addr);\r
+ dapls_osd_freeaddrinfo (addr);\r
}\r
}\r
\r
{\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
{\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