1
1

Merge pull request #4424 from rhc54/topic/pup

Sync to PMIx v3.0 (master)
Этот коммит содержится в:
Ralph Castain 2017-10-30 18:49:38 -05:00 коммит произвёл GitHub
родитель 582aa6c0f0 7839dc91a8
Коммит 1ae8d59404
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
8 изменённых файлов: 48 добавлений и 19 удалений

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

@ -30,7 +30,7 @@ greek=
# command, or with the date (if "git describe" fails) in the form of
# "date<date>".
repo_rev=gitffa464b
repo_rev=git877b4d8
# If tarball_version is not empty, it is used as the version string in
# the tarball filename, regardless of all other versions listed in
@ -44,7 +44,7 @@ tarball_version=
# The date when this release was created
date="Oct 26, 2017"
date="Oct 30, 2017"
# The shared library version of each of PMIx's public libraries.
# These versions are maintained in accordance with the "Library

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

@ -13,7 +13,7 @@
# MCA_zlib_CONFIG([action-if-found], [action-if-not-found])
# --------------------------------------------------------------------
AC_DEFUN([PMIX_ZLIB_CONFIG],[
PMIX_VAR_SCOPE_PUSH([pmix_zlib_dir pmix_zlib_libdir])
PMIX_VAR_SCOPE_PUSH([pmix_zlib_dir pmix_zlib_libdir pmix_zlib_standard_lib_location pmix_zlib_standard_header_location])
AC_ARG_WITH([zlib],
[AC_HELP_STRING([--with-zlib=DIR],
@ -24,28 +24,32 @@ AC_DEFUN([PMIX_ZLIB_CONFIG],[
[Search for zlib libraries in DIR ])])
pmix_zlib_support=0
if test "$with_zlib" != "no"; then
AC_MSG_CHECKING([for zlib in])
if test ! -z "$with_zlib" && test "$with_zlib" != "yes"; then
pmix_zlib_dir=$with_zlib
pmix_zlib_standard_header_location=no
if test -d $with_zlib/lib; then
pmix_zlib_libdir=$with_zlib/lib
elif test -d $with_zlib/lib64; then
pmix_zlib_libdir=$with_zlib/lib64
else
AC_MSG_RESULT([Could not find $with_zlib/lib or $with_zlib/lib64])
AC_MSG_ERROR([Can not continue])
fi
AC_MSG_RESULT([$pmix_zlib_dir and $pmix_zlib_libdir])
pmix_zlib_standard_lib_location=no
AS_IF([test -z "$with_zlib_libdir" || test "$with_zlib_libdir" = "yes"],
[if test -d $with_zlib/lib; then
pmix_zlib_libdir=$with_zlib/lib
elif test -d $with_zlib/lib64; then
pmix_zlib_libdir=$with_zlib/lib64
else
AC_MSG_RESULT([Could not find $with_zlib/lib or $with_zlib/lib64])
AC_MSG_ERROR([Can not continue])
fi
AC_MSG_RESULT([$pmix_zlib_dir and $pmix_zlib_libdir])],
[AC_MSG_RESULT([$with_zlib_libdir])])
else
AC_MSG_RESULT([(default search paths)])
pmix_zlib_standard_header_location=yes
pmix_zlib_standard_lib_location=yes
fi
AS_IF([test ! -z "$with_zlib_libdir" && test "$with_zlib_libdir" != "yes"],
[pmix_zlib_libdir="$with_zlib_libdir"
pmix_zlib_standard_lib_location=no],
[pmix_zlib_standard_lib_location=yes])
pmix_zlib_standard_lib_location=no])
PMIX_CHECK_PACKAGE([pmix_zlib],
[zlib.h],

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

@ -79,6 +79,7 @@ struct pmix_ptl_globals_t {
bool listen_thread_active;
pmix_list_t listeners;
uint32_t current_tag;
size_t max_msg_size;
};
typedef struct pmix_ptl_globals_t pmix_ptl_globals_t;

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

@ -59,6 +59,13 @@ int pmix_ptl_base_output = -1;
static int pmix_ptl_register(pmix_mca_base_register_flag_t flags)
{
pmix_ptl_globals.max_msg_size = 8000000;
pmix_mca_base_var_register("pmix", "ptl", "base", "max_msg_size",
"Max size (in bytes) of a client/server msg",
PMIX_MCA_BASE_VAR_TYPE_SIZE_T, NULL, 0, 0,
PMIX_INFO_LVL_2,
PMIX_MCA_BASE_VAR_SCOPE_READONLY,
&pmix_ptl_globals.max_msg_size);
return PMIX_SUCCESS;
}

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

@ -44,6 +44,7 @@
#include "src/client/pmix_client_ops.h"
#include "src/server/pmix_server_ops.h"
#include "src/util/error.h"
#include "src/util/show_help.h"
#include "src/mca/ptl/base/base.h"
@ -459,6 +460,12 @@ void pmix_ptl_base_recv_handler(int sd, short flags, void *cbdata)
"ptl:base:recv:handler allocate data region of size %lu",
(unsigned long)peer->recv_msg->hdr.nbytes);
/* allocate the data region */
if (pmix_ptl_globals.max_msg_size < peer->recv_msg->hdr.nbytes) {
pmix_show_help("help-pmix-runtime.txt", "ptl:msg_size", true,
(unsigned long)peer->recv_msg->hdr.nbytes,
(unsigned long)pmix_ptl_globals.max_msg_size);
goto err_close;
}
peer->recv_msg->data = (char*)malloc(peer->recv_msg->hdr.nbytes);
memset(peer->recv_msg->data, 0, peer->recv_msg->hdr.nbytes);
/* point to it */

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

@ -58,3 +58,12 @@ by any of the following:
that includes at least one usable plugin for this framework.
Please check your installation and environment.
#
[ptl:msg_size]
A received msg header indicates a size that is too large:
Requested size: %lu
Size limit: %lu
If you believe this msg is legitimate, please increase the
max msg size via the ptl_base_max_msg_size parameter.

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

@ -403,6 +403,7 @@ char* pmix_find_absolute_path( char* app_name )
char* resolved_path = (char*)malloc(PMIX_PATH_MAX);
if (NULL == realpath( abs_app_name, resolved_path )) {
free(resolved_path);
free(abs_app_name);
return NULL;
}
if( abs_app_name != app_name ) {

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

@ -269,13 +269,13 @@ int16_t pmix_ifaddrtokindex(const char* if_addr)
for (r = res; r != NULL; r = r->ai_next) {
PMIX_LIST_FOREACH(intf, &pmix_if_list, pmix_pif_t) {
if (AF_INET == r->ai_family && AF_INET == intf->af_family) {
struct sockaddr ipv4, intv4;
memset(&ipv4, 0, sizeof(struct sockaddr));
struct sockaddr_in ipv4, intv4;
memset(&ipv4, 0, sizeof(struct sockaddr_in));
len = (r->ai_addrlen < sizeof(struct sockaddr_in)) ? r->ai_addrlen : sizeof(struct sockaddr_in);
memcpy(&ipv4, r->ai_addr, len);
memset(&intv4, 0, sizeof(struct sockaddr));
memcpy(&intv4, &intf->if_addr, sizeof(struct sockaddr));
if (pmix_net_samenetwork(&ipv4, &intv4, intf->if_mask)) {
memset(&intv4, 0, sizeof(struct sockaddr_in));
memcpy(&intv4, &intf->if_addr, sizeof(struct sockaddr_in));
if (pmix_net_samenetwork((struct sockaddr*)&ipv4, (struct sockaddr*)&intv4, intf->if_mask)) {
if_kernel_index = intf->if_kernel_index;
freeaddrinfo (res);
return if_kernel_index;