aa580a1b88a6f7f08b069f7453f629eeede53b69 kent Wed Jan 15 18:00:32 2014 -0800 Making pmHubMultilineQuery return a slName list instead of a slRef list with string values. This saves about 8 freez() calls and is a bit tidier overall. diff --git src/parasol/lib/paraMessage.c src/parasol/lib/paraMessage.c index 04f3e59..7afe561 100644 --- src/parasol/lib/paraMessage.c +++ src/parasol/lib/paraMessage.c @@ -289,49 +289,51 @@ /* Send message to hub and get single line response. * This should be freeMem'd when done. */ { struct rudp *ru = rudpMustOpen(); struct paraMessage pm; pmInitFromName(&pm, host, paraHubPort); if (!pmSendStringWithRetries(&pm, ru, query)) noWarnAbort(); if (!pmReceive(&pm, ru)) noWarnAbort(); rudpClose(&ru); return cloneString(pm.data); } -struct slRef *pmHubMultilineQuery(char *query, char *host) +struct slName *pmHubMultilineQuery(char *query, char *host) /* Send a command with a multiline response to hub, * and return response as a list of strings. */ { -struct slRef *list = NULL; +struct slName *list = NULL; struct rudp *ru = rudpMustOpen(); struct paraMessage pm; struct paraMultiMessage pmm; char *row[256]; int count = 0; pmInitFromName(&pm, host, paraHubPort); /* ensure the multi-message response comes from the correct ip and has no duplicate msgs*/ pmmInit(&pmm, &pm, pm.ipAddress.sin_addr); if (!pmSendStringWithRetries(&pm, ru, query)) noWarnAbort(); for (;;) { if (!pmmReceive(&pmm, ru)) break; if (pm.size == 0) break; count = chopByChar(pm.data, '\n', row, sizeof(row)); if (count > 1) --count; /* for multiline, count is inflated by one */ int i; for(i=0;i<count;++i) - refAdd(&list, cloneString(row[i])); + { + slNameAddHead(&list, row[i]); + } } rudpClose(&ru); slReverse(&list); return list; }