1
1

Handle zero-length iovecs in multicast messages

This commit was SVN r22507.
Этот коммит содержится в:
Ralph Castain 2010-01-28 15:29:43 +00:00
родитель 5dc71d85ed
Коммит 86dd1d41af
2 изменённых файлов: 32 добавлений и 22 удалений

Просмотреть файл

@ -383,10 +383,12 @@ process:
ORTE_ERROR_LOG(rc);
goto cleanup;
}
/* pack the bytes */
if (ORTE_SUCCESS != (rc = opal_dss.pack(&buf, snd->iovec_array[sz].iov_base, tmp32, OPAL_UINT8))) {
ORTE_ERROR_LOG(rc);
goto cleanup;
if (0 < tmp32) {
/* pack the bytes */
if (ORTE_SUCCESS != (rc = opal_dss.pack(&buf, snd->iovec_array[sz].iov_base, tmp32, OPAL_UINT8))) {
ORTE_ERROR_LOG(rc);
goto cleanup;
}
}
}
@ -978,13 +980,16 @@ static void process_recv(int fd, short event, void *cbdata)
ORTE_ERROR_LOG(rc);
goto cleanup;
}
/* allocate the space */
iovec_array[i].iov_base = (uint8_t*)malloc(sz);
iovec_array[i].iov_base = NULL;
iovec_array[i].iov_len = sz;
/* unpack the data */
if (ORTE_SUCCESS != (rc = opal_dss.unpack(buf, iovec_array[i].iov_base, &sz, OPAL_UINT8))) {
ORTE_ERROR_LOG(rc);
goto cleanup;
if (0 < sz) {
/* allocate the space */
iovec_array[i].iov_base = (uint8_t*)malloc(sz);
/* unpack the data */
if (ORTE_SUCCESS != (rc = opal_dss.unpack(buf, iovec_array[i].iov_base, &sz, OPAL_UINT8))) {
ORTE_ERROR_LOG(rc);
goto cleanup;
}
}
}
} else if (1 == flag && NULL == recvd_buf) {

Просмотреть файл

@ -872,13 +872,16 @@ static void process_recv(int fd, short event, void *cbdata)
ORTE_ERROR_LOG(rc);
goto cleanup;
}
/* allocate the space */
iovec_array[i].iov_base = (uint8_t*)malloc(sz);
iovec_array[i].iov_base = NULL;
iovec_array[i].iov_len = sz;
/* unpack the data */
if (ORTE_SUCCESS != (rc = opal_dss.unpack(&buf, iovec_array[i].iov_base, &sz, OPAL_UINT8))) {
ORTE_ERROR_LOG(rc);
goto cleanup;
if (0 < sz) {
/* allocate the space */
iovec_array[i].iov_base = (uint8_t*)malloc(sz);
/* unpack the data */
if (ORTE_SUCCESS != (rc = opal_dss.unpack(&buf, iovec_array[i].iov_base, &sz, OPAL_UINT8))) {
ORTE_ERROR_LOG(rc);
goto cleanup;
}
}
}
} else if (1 == flag && NULL == recvd_buf) {
@ -1220,10 +1223,12 @@ static void xmit_data(int sd, short flags, void* send_req)
ORTE_ERROR_LOG(rc);
goto CLEANUP;
}
/* pack the bytes */
if (ORTE_SUCCESS != (rc = opal_dss.pack(&buf, snd->iovec_array[sz].iov_base, tmp32, OPAL_UINT8))) {
ORTE_ERROR_LOG(rc);
goto CLEANUP;
if (0 < tmp32) {
/* pack the bytes */
if (ORTE_SUCCESS != (rc = opal_dss.pack(&buf, snd->iovec_array[sz].iov_base, tmp32, OPAL_UINT8))) {
ORTE_ERROR_LOG(rc);
goto CLEANUP;
}
}
}