void ICVM_IceTransGetMyNetworkId(void){ char *t=0; char *s=_IceTransGetMyNetworkId((ciptr)rSTKs32(0)); if(s){ t=i_malloc(strlen(s)+1); if(t) strcpy(t,s); free(s); } R_R0=(s32) t; icvm_SetErr(); }
Status IceListenForWellKnownConnections ( char *port, int *countRet, IceListenObj **listenObjsRet, int errorLength, char *errorStringRet ) { struct _IceListenObj *listenObjs; char *networkId; int transCount, partial, i, j; Status status = 1; XtransConnInfo *transConns = NULL; if ((_IceTransMakeAllCOTSServerListeners (port, &partial, &transCount, &transConns) < 0) || (transCount < 1)) { *listenObjsRet = NULL; *countRet = 0; strncpy (errorStringRet, "Cannot establish any listening sockets", errorLength); return (0); } if ((listenObjs = malloc (transCount * sizeof (struct _IceListenObj))) == NULL) { for (i = 0; i < transCount; i++) _IceTransClose (transConns[i]); free (transConns); return (0); } *countRet = 0; for (i = 0; i < transCount; i++) { networkId = (char *)_IceTransGetMyNetworkId (transConns[i]); if (networkId) { listenObjs[*countRet].trans_conn = transConns[i]; listenObjs[*countRet].network_id = networkId; (*countRet)++; } } if (*countRet == 0) { *listenObjsRet = NULL; strncpy (errorStringRet, "Cannot establish any listening sockets", errorLength); status = 0; } else { *listenObjsRet = malloc (*countRet * sizeof (IceListenObj)); if (*listenObjsRet == NULL) { strncpy (errorStringRet, "Malloc failed", errorLength); status = 0; } else { for (i = 0; i < *countRet; i++) { (*listenObjsRet)[i] = malloc (sizeof (struct _IceListenObj)); if ((*listenObjsRet)[i] == NULL) { strncpy (errorStringRet, "Malloc failed", errorLength); for (j = 0; j < i; j++) free ((*listenObjsRet)[j]); free (*listenObjsRet); *listenObjsRet = NULL; status = 0; break; } else { *((*listenObjsRet)[i]) = listenObjs[i]; } } } } if (status == 1) { if (errorStringRet && errorLength > 0) *errorStringRet = '\0'; for (i = 0; i < *countRet; i++) { (*listenObjsRet)[i]->host_based_auth_proc = NULL; } } else { for (i = 0; i < transCount; i++) _IceTransClose (transConns[i]); } free (listenObjs); free (transConns); return (status); }