summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Freeze/BackgroundSaveEvictorI.h16
-rw-r--r--cpp/src/Freeze/Freeze.rc8
-rw-r--r--cpp/src/Freeze/MapI.cpp8
-rw-r--r--cpp/src/FreezeScript/DumpDB.rc8
-rw-r--r--cpp/src/FreezeScript/TransformDB.rc8
-rw-r--r--cpp/src/Glacier2/Glacier2Router.rc8
-rw-r--r--cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifier.rc8
-rw-r--r--cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifierI.cpp45
-rw-r--r--cpp/src/Glacier2Lib/Glacier2.rc8
-rw-r--r--cpp/src/Ice/ConnectionFactory.cpp99
-rw-r--r--cpp/src/Ice/ConnectionFactory.h2
-rw-r--r--cpp/src/Ice/Ice.rc8
-rw-r--r--cpp/src/Ice/Instance.cpp6
-rw-r--r--cpp/src/Ice/LoggerI.cpp99
-rw-r--r--cpp/src/Ice/LoggerI.h8
-rw-r--r--cpp/src/Ice/Network.cpp20
-rw-r--r--cpp/src/Ice/PluginManagerI.cpp5
-rw-r--r--cpp/src/Ice/PropertyNames.cpp3
-rw-r--r--cpp/src/Ice/PropertyNames.h2
-rw-r--r--cpp/src/Ice/RetryQueue.cpp2
-rw-r--r--cpp/src/Ice/StreamSocket.cpp20
-rw-r--r--cpp/src/Ice/WSConnector.h4
-rw-r--r--cpp/src/Ice/winrt/StreamTransceiver.cpp14
-rw-r--r--cpp/src/IceBox/IceBox.rc8
-rw-r--r--cpp/src/IceBox/IceBoxAdmin.rc8
-rw-r--r--cpp/src/IceBox/IceBoxExe.rc8
-rw-r--r--cpp/src/IceBox/ServiceManagerI.cpp5
-rwxr-xr-xcpp/src/IceDiscovery/IceDiscovery.rc8
-rw-r--r--cpp/src/IceGrid/Activator.cpp2
-rw-r--r--cpp/src/IceGrid/IceGridAdmin.rc8
-rw-r--r--cpp/src/IceGrid/IceGridDB.rc8
-rw-r--r--cpp/src/IceGrid/IceGridNode.rc8
-rw-r--r--cpp/src/IceGrid/IceGridRegistry.rc8
-rw-r--r--cpp/src/IceGrid/Parser.cpp267
-rw-r--r--cpp/src/IceGridLib/IceGrid.rc8
-rw-r--r--cpp/src/IceGridLib/PluginFacadeI.cpp12
-rwxr-xr-xcpp/src/IceLocatorDiscovery/IceLocatorDiscovery.rc8
-rw-r--r--cpp/src/IcePatch2/IcePatch2Calc.rc8
-rw-r--r--cpp/src/IcePatch2/IcePatch2Client.rc8
-rw-r--r--cpp/src/IcePatch2/IcePatch2Server.rc8
-rw-r--r--cpp/src/IcePatch2Lib/IcePatch2.rc8
-rw-r--r--cpp/src/IcePatch2Lib/Makefile8
-rw-r--r--cpp/src/IceSSL/IceSSL.rc8
-rw-r--r--cpp/src/IceStorm/IceStormAdmin.rc8
-rw-r--r--cpp/src/IceStorm/IceStormDB.rc8
-rw-r--r--cpp/src/IceStorm/IceStormMigrate.rc8
-rw-r--r--cpp/src/IceStorm/IceStormService.rc8
-rw-r--r--cpp/src/IceStormLib/IceStorm.rc8
-rw-r--r--cpp/src/IceUtil/IceUtil.rc8
-rw-r--r--cpp/src/IceUtil/Time.cpp38
-rw-r--r--cpp/src/IceXML/IceXML.rc8
-rw-r--r--cpp/src/Slice/Python.cpp4
-rw-r--r--cpp/src/Slice/PythonUtil.cpp42
-rw-r--r--cpp/src/Slice/RubyUtil.cpp10
-rw-r--r--cpp/src/Slice/Slice.rc8
-rw-r--r--cpp/src/iceserviceinstall/IceServiceInstall.rc8
-rw-r--r--cpp/src/slice2confluence/Slice2Confluence.rc8
-rw-r--r--cpp/src/slice2cpp/Gen.cpp18
-rw-r--r--cpp/src/slice2cpp/Slice2Cpp.rc8
-rw-r--r--cpp/src/slice2cs/Gen.cpp27
-rw-r--r--cpp/src/slice2cs/Slice2Cs.rc8
-rw-r--r--cpp/src/slice2freeze/Slice2Freeze.rc8
-rw-r--r--cpp/src/slice2freezej/Slice2FreezeJ.rc8
-rw-r--r--cpp/src/slice2html/Slice2Html.rc8
-rw-r--r--cpp/src/slice2java/Slice2Java.rc8
-rw-r--r--cpp/src/slice2js/Gen.cpp10
-rw-r--r--cpp/src/slice2js/Slice2Js.rc8
-rw-r--r--cpp/src/slice2php/Slice2PHP.rc8
-rw-r--r--cpp/src/slice2py/Slice2Py.rc8
69 files changed, 611 insertions, 513 deletions
diff --git a/cpp/src/Freeze/BackgroundSaveEvictorI.h b/cpp/src/Freeze/BackgroundSaveEvictorI.h
index a328f1ecb8a..f3af1e6e475 100644
--- a/cpp/src/Freeze/BackgroundSaveEvictorI.h
+++ b/cpp/src/Freeze/BackgroundSaveEvictorI.h
@@ -15,19 +15,6 @@
namespace Freeze
{
-
-#if defined(_MSC_VER) && (_MSC_VER <= 1200) || defined(__IBMCPP__)
-
- enum
- {
- clean = 0,
- created = 1,
- modified = 2,
- destroyed = 3,
- dead = 4
- };
-
-#else
//
// Clean object; can become modified or destroyed
//
@@ -55,9 +42,6 @@ namespace Freeze
//
static const Ice::Byte dead = 4;
-#endif
-
-
class BackgroundSaveEvictorI;
struct BackgroundSaveEvictorElement;
diff --git a/cpp/src/Freeze/Freeze.rc b/cpp/src/Freeze/Freeze.rc
index 16423321cad..87bb7d60a4f 100644
--- a/cpp/src/Freeze/Freeze.rc
+++ b/cpp/src/Freeze/Freeze.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Freeze C++ Library\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/Freeze/MapI.cpp b/cpp/src/Freeze/MapI.cpp
index a12ef25b0b8..a94c79e6d5c 100644
--- a/cpp/src/Freeze/MapI.cpp
+++ b/cpp/src/Freeze/MapI.cpp
@@ -2093,28 +2093,28 @@ Freeze::MapIndexI::secondaryKeyCreate(Db* /*secondary*/, const Dbt* /*dbKey*/, c
// Print for the various exception types.
//
void
-Freeze::DeadlockException::ice_print(ostream& out) const
+Freeze::DeadlockException::ice_print(std::ostream& out) const
{
Exception::ice_print(out);
out << ":\ndatabase deadlock:\n" << message;
}
void
-Freeze::NotFoundException::ice_print(ostream& out) const
+Freeze::NotFoundException::ice_print(std::ostream& out) const
{
Exception::ice_print(out);
out << ":\ndatabase record not found:\n" << message;
}
void
-Freeze::DatabaseException::ice_print(ostream& out) const
+Freeze::DatabaseException::ice_print(std::ostream& out) const
{
Exception::ice_print(out);
out << ":\n" << message;
}
void
-Freeze::IndexNotFoundException::ice_print(ostream& out) const
+Freeze::IndexNotFoundException::ice_print(std::ostream& out) const
{
Exception::ice_print(out);
out << ":\ncould not find index \"" << indexName << "\" on map \"" << mapName << "\"";
diff --git a/cpp/src/FreezeScript/DumpDB.rc b/cpp/src/FreezeScript/DumpDB.rc
index 86b833edaab..219a374dbe3 100644
--- a/cpp/src/FreezeScript/DumpDB.rc
+++ b/cpp/src/FreezeScript/DumpDB.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Dump Freeze Database\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "dumpdb\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "dumpdb.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/FreezeScript/TransformDB.rc b/cpp/src/FreezeScript/TransformDB.rc
index a3d69395884..9fcc0eff244 100644
--- a/cpp/src/FreezeScript/TransformDB.rc
+++ b/cpp/src/FreezeScript/TransformDB.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Transform Freeze Database\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "transformdb\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "transformdb.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/Glacier2/Glacier2Router.rc b/cpp/src/Glacier2/Glacier2Router.rc
index e299ec97c24..2d5801f077c 100644
--- a/cpp/src/Glacier2/Glacier2Router.rc
+++ b/cpp/src/Glacier2/Glacier2Router.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Glacier2 Router\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "glacier2router\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "glacier2router.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifier.rc b/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifier.rc
index 8bbcad44052..3d7ba3eacc8 100644
--- a/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifier.rc
+++ b/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifier.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Glacier2CryptPermissionsVerifier C++ Plug-in\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifierI.cpp b/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifierI.cpp
index 450b2242789..e3387c4667d 100644
--- a/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifierI.cpp
+++ b/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifierI.cpp
@@ -14,8 +14,9 @@
#include <IceUtil/FileUtil.h>
#include <IceUtil/StringUtil.h>
#include <IceUtil/InputUtil.h>
+#include <IceUtil/Mutex.h>
-#if defined(__GLIBC__)
+#if defined(__GLIBC__) || defined(_AIX)
# include <crypt.h>
#elif defined(__FreeBSD__)
# include <unistd.h>
@@ -34,9 +35,9 @@ using namespace Glacier2;
namespace
{
-
+
#if defined(__FreeBSD__) && !defined(__GLIBC__)
-
+
//
// FreeBSD crypt is no reentrat we use this global mutex
// to serialize access.
@@ -74,6 +75,7 @@ public:
private:
const map<string, string> _passwords;
+ IceUtil::Mutex _cryptMutex; // for old thread-unsafe crypt()
};
class CryptPermissionsVerifierPlugin : public Ice::Plugin
@@ -81,12 +83,12 @@ class CryptPermissionsVerifierPlugin : public Ice::Plugin
public:
CryptPermissionsVerifierPlugin(const CommunicatorPtr&);
-
+
virtual void initialize();
virtual void destroy();
private:
-
+
CommunicatorPtr _communicator;
};
@@ -193,7 +195,6 @@ CryptPermissionsVerifierI::checkPermissions(const string& userId, const string&
}
}
# if defined(__GLIBC__)
-
struct crypt_data data;
data.initialized = 0;
return p->second == crypt_r(password.c_str(), salt.c_str(), &data);
@@ -201,7 +202,7 @@ CryptPermissionsVerifierI::checkPermissions(const string& userId, const string&
IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(_staticMutex);
return p->second == crypt(password.c_str(), salt.c_str())
# endif
-#elif defined(__APPLE__) || defined(_WIN32)
+#elif defined(__APPLE__) || defined(_WIN32)
//
// Pbkdf2 string format:
//
@@ -210,7 +211,7 @@ CryptPermissionsVerifierI::checkPermissions(const string& userId, const string&
//
size_t beg = 0;
size_t end = 0;
-
+
//
// Determine the digest algorithm
//
@@ -409,7 +410,7 @@ CryptPermissionsVerifierI::checkPermissions(const string& userId, const string&
vector<BYTE> passwordBuffer(password.begin(), password.end());
- DWORD status = BCryptDeriveKeyPBKDF2(algorithmHandle, &passwordBuffer[0],
+ DWORD status = BCryptDeriveKeyPBKDF2(algorithmHandle, &passwordBuffer[0],
static_cast<DWORD>(passwordBuffer.size()),
&saltBuffer[0], saltLength, rounds,
&checksumBuffer1[0], static_cast<DWORD>(checksumLength), 0);
@@ -424,7 +425,7 @@ CryptPermissionsVerifierI::checkPermissions(const string& userId, const string&
DWORD checksumBuffer2Length = checksumLength;
vector<BYTE> checksumBuffer2(checksumLength);
- if(!CryptStringToBinary(checksum.c_str(), static_cast<DWORD>(checksum.size()),
+ if(!CryptStringToBinary(checksum.c_str(), static_cast<DWORD>(checksum.size()),
CRYPT_STRING_BASE64, &checksumBuffer2[0],
&checksumBuffer2Length, 0, 0))
{
@@ -433,7 +434,17 @@ CryptPermissionsVerifierI::checkPermissions(const string& userId, const string&
return checksumBuffer1 == checksumBuffer2;
# endif
#else
-# error Password hashing not implemented
+ // Fallback to plain crypt() - DES-style
+
+ if(p->second.size() != 13)
+ {
+ return false;
+ }
+ string salt = p->second.substr(0, 2);
+
+ IceUtil::Mutex::Lock lock(_cryptMutex);
+ return p->second == crypt(password.c_str(), salt.c_str());
+
#endif
}
@@ -448,13 +459,13 @@ CryptPermissionsVerifierPlugin::initialize()
{
const string prefix = "Glacier2CryptPermissionsVerifier.";
const PropertyDict props = _communicator->getProperties()->getPropertiesForPrefix(prefix);
-
+
if(!props.empty())
{
ObjectAdapterPtr adapter = _communicator->createObjectAdapter(""); // colloc-only adapter
-
+
// Each prop represents a property to set + the associated password file
-
+
for(PropertyDict::const_iterator p = props.begin(); p != props.end(); ++p)
{
string name = p->first.substr(prefix.size());
@@ -462,9 +473,9 @@ CryptPermissionsVerifierPlugin::initialize()
id.name = IceUtil::generateUUID();
id.category = "Glacier2CryptPermissionsVerifier";
ObjectPrx prx = adapter->add(new CryptPermissionsVerifierI(retrievePasswordMap(p->second)), id);
- _communicator->getProperties()->setProperty(name, _communicator->proxyToString(prx));
+ _communicator->getProperties()->setProperty(name, _communicator->proxyToString(prx));
}
-
+
adapter->activate();
}
}
@@ -499,7 +510,7 @@ createCryptPermissionsVerifier(const CommunicatorPtr& communicator, const string
out << "Plugin " << name << ": too many arguments";
return 0;
}
-
+
return new CryptPermissionsVerifierPlugin(communicator);
}
diff --git a/cpp/src/Glacier2Lib/Glacier2.rc b/cpp/src/Glacier2Lib/Glacier2.rc
index bbbc580825c..b382e90dd67 100644
--- a/cpp/src/Glacier2Lib/Glacier2.rc
+++ b/cpp/src/Glacier2Lib/Glacier2.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Glacier2 C++ Client Library\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/Ice/ConnectionFactory.cpp b/cpp/src/Ice/ConnectionFactory.cpp
index d6a5a22e877..f9f329b3c41 100644
--- a/cpp/src/Ice/ConnectionFactory.cpp
+++ b/cpp/src/Ice/ConnectionFactory.cpp
@@ -835,26 +835,10 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailed(c
const LocalException& ex)
{
assert(_iter != _connectors.end());
-
- if(_observer)
- {
- _observer->failed(ex.ice_name());
- _observer->detach();
- }
-
- _factory->handleConnectionException(ex, _hasMore || _iter != _connectors.end() - 1);
- if(dynamic_cast<const Ice::CommunicatorDestroyedException*>(&ex)) // No need to continue.
- {
- _factory->finishGetConnection(_connectors, ex, this);
- }
- else if(++_iter != _connectors.end()) // Try the next connector.
+ if(connectionStartFailedImpl(ex))
{
nextConnector();
}
- else
- {
- _factory->finishGetConnection(_connectors, ex, this);
- }
}
//
@@ -979,40 +963,46 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection()
void
IceInternal::OutgoingConnectionFactory::ConnectCallback::nextConnector()
{
- Ice::ConnectionIPtr connection;
- try
+ while(true)
{
-
- const CommunicatorObserverPtr& obsv = _factory->_instance->initializationData().observer;
- if(obsv)
+ try
{
- _observer = obsv->getConnectionEstablishmentObserver(_iter->endpoint, _iter->connector->toString());
- if(_observer)
+ const CommunicatorObserverPtr& obsv = _factory->_instance->initializationData().observer;
+ if(obsv)
{
- _observer->attach();
+ _observer = obsv->getConnectionEstablishmentObserver(_iter->endpoint, _iter->connector->toString());
+ if(_observer)
+ {
+ _observer->attach();
+ }
}
- }
- assert(_iter != _connectors.end());
+ assert(_iter != _connectors.end());
- if(_instance->traceLevels()->network >= 2)
- {
- Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
- out << "trying to establish " << _iter->endpoint->protocol() << " connection to "
- << _iter->connector->toString();
+ if(_instance->traceLevels()->network >= 2)
+ {
+ Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
+ out << "trying to establish " << _iter->endpoint->protocol() << " connection to "
+ << _iter->connector->toString();
+ }
+ Ice::ConnectionIPtr connection = _factory->createConnection(_iter->connector->connect(), *_iter);
+ connection->start(this);
}
- connection = _factory->createConnection(_iter->connector->connect(), *_iter);
- connection->start(this);
- }
- catch(const Ice::LocalException& ex)
- {
- if(_instance->traceLevels()->network >= 2)
+ catch(const Ice::LocalException& ex)
{
- Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
- out << "failed to establish " << _iter->endpoint->protocol() << " connection to "
- << _iter->connector->toString() << "\n" << ex;
+ if(_instance->traceLevels()->network >= 2)
+ {
+ Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat);
+ out << "failed to establish " << _iter->endpoint->protocol() << " connection to "
+ << _iter->connector->toString() << "\n" << ex;
+ }
+
+ if(connectionStartFailedImpl(ex))
+ {
+ continue; // More connectors to try, continue.
+ }
}
- connectionStartFailed(connection, ex);
+ break;
}
}
@@ -1071,6 +1061,31 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::operator<(const Connect
return this < &rhs;
}
+bool
+IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailedImpl(const Ice::LocalException& ex)
+{
+ if(_observer)
+ {
+ _observer->failed(ex.ice_name());
+ _observer->detach();
+ }
+
+ _factory->handleConnectionException(ex, _hasMore || _iter != _connectors.end() - 1);
+ if(dynamic_cast<const Ice::CommunicatorDestroyedException*>(&ex)) // No need to continue.
+ {
+ _factory->finishGetConnection(_connectors, ex, this);
+ }
+ else if(++_iter != _connectors.end()) // Try the next connector.
+ {
+ return true;
+ }
+ else
+ {
+ _factory->finishGetConnection(_connectors, ex, this);
+ }
+ return false;
+}
+
void
IceInternal::IncomingConnectionFactory::activate()
{
diff --git a/cpp/src/Ice/ConnectionFactory.h b/cpp/src/Ice/ConnectionFactory.h
index 21b054f7d9f..616d3d9fe4c 100644
--- a/cpp/src/Ice/ConnectionFactory.h
+++ b/cpp/src/Ice/ConnectionFactory.h
@@ -116,6 +116,8 @@ private:
private:
+ bool connectionStartFailedImpl(const Ice::LocalException&);
+
const InstancePtr _instance;
const OutgoingConnectionFactoryPtr _factory;
const std::vector<EndpointIPtr> _endpoints;
diff --git a/cpp/src/Ice/Ice.rc b/cpp/src/Ice/Ice.rc
index bbbd822a1f1..f8577c30208 100644
--- a/cpp/src/Ice/Ice.rc
+++ b/cpp/src/Ice/Ice.rc
@@ -2,8 +2,8 @@
#include "EventLoggerMsg.rc"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -24,12 +24,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Ice C++ Core Library\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp
index ed67cfef601..be381b67dda 100644
--- a/cpp/src/Ice/Instance.cpp
+++ b/cpp/src/Ice/Instance.cpp
@@ -61,7 +61,7 @@
# include <sys/types.h>
#endif
-#if defined(__linux) || defined(__sun) || defined(__GLIBC__)
+#if defined(__linux) || defined(__sun) || defined(_AIX) || defined(__GLIBC__)
# include <grp.h> // for initgroups
#endif
@@ -1230,7 +1230,9 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi
#endif
if(!logfile.empty())
{
- _initData.logger = new LoggerI(_initData.properties->getProperty("Ice.ProgramName"), logfile);
+ _initData.logger =
+ new LoggerI(_initData.properties->getProperty("Ice.ProgramName"), logfile, true, 0,
+ _initData.properties->getPropertyAsIntWithDefault("Ice.LogFile.SizeMax", 0));
}
else
{
diff --git a/cpp/src/Ice/LoggerI.cpp b/cpp/src/Ice/LoggerI.cpp
index 623ed3403ff..0904b8d3dd9 100644
--- a/cpp/src/Ice/LoggerI.cpp
+++ b/cpp/src/Ice/LoggerI.cpp
@@ -9,11 +9,11 @@
#include <IceUtil/Time.h>
#include <Ice/LoggerI.h>
+#include <IceUtil/StringUtil.h>
#include <IceUtil/Mutex.h>
#include <IceUtil/MutexPtrLock.h>
#ifdef _WIN32
-# include <IceUtil/StringUtil.h>
# include <IceUtil/ScopedArray.h>
#endif
@@ -46,17 +46,24 @@ public:
Init init;
+//
+// Timeout in milliseconds after which rename will be attempted
+// in case of failures renaming files. That is set to 5 minutes.
+//
+const IceUtil::Time retryTimeout = IceUtil::Time::seconds(5 * 60);
+
}
Ice::LoggerI::LoggerI(const string& prefix, const string& file,
- bool convert, const IceUtil::StringConverterPtr& converter) :
+ bool convert, const IceUtil::StringConverterPtr& converter,
+ size_t sizeMax) :
_prefix(prefix),
_convert(convert),
- _converter(converter)
+ _converter(converter),
#if defined(_WIN32) && !defined(ICE_OS_WINRT)
- , _consoleConverter(new IceUtil::WindowsStringConverter(GetConsoleOutputCP()))
+ _consoleConverter(new IceUtil::WindowsStringConverter(GetConsoleOutputCP())),
#endif
-
+ _sizeMax(sizeMax)
{
if(!prefix.empty())
{
@@ -71,6 +78,11 @@ Ice::LoggerI::LoggerI(const string& prefix, const string& file,
{
throw InitializationException(__FILE__, __LINE__, "FileLogger: cannot open " + _file);
}
+
+ if(_sizeMax > 0)
+ {
+ _out.seekp(0, _out.end);
+ }
}
}
@@ -144,6 +156,83 @@ Ice::LoggerI::write(const string& message, bool indent)
if(_out.is_open())
{
+ if(_sizeMax > 0)
+ {
+ //
+ // If file size + message size exceeds max size we archive the log file,
+ // but we do not archive empty files or truncate messages.
+ //
+ size_t sz = static_cast<size_t>(_out.tellp());
+ if(sz > 0 && sz + message.size() >= _sizeMax && _nextRetry <= IceUtil::Time::now())
+ {
+ string basename = _file;
+ string ext;
+
+ size_t i = basename.rfind(".");
+ if(i != string::npos && i + 1 < basename.size())
+ {
+ ext = basename.substr(i + 1);
+ basename = basename.substr(0, i);
+ }
+ _out.close();
+
+ int id = 0;
+ string archive;
+ string date = IceUtil::Time::now().toString("%Y%m%d-%H%M%S");
+ while(true)
+ {
+ ostringstream s;
+ s << basename << "-" << date;
+ if(id > 0)
+ {
+ s << "-" << id;
+ }
+ if(!ext.empty())
+ {
+ s << "." << ext;
+ }
+ if(IceUtilInternal::fileExists(s.str()))
+ {
+ id++;
+ continue;
+ }
+ archive = s.str();
+ break;
+ }
+
+ int err = IceUtilInternal::rename(_file, archive);
+
+ _out.open(_file, fstream::out | fstream::app);
+
+ if(err)
+ {
+ _nextRetry = IceUtil::Time::now() + retryTimeout;
+
+ //
+ // We temporarily set the maximum size to 0 to ensure there isn't more rename attempts
+ // in the nested error call.
+ //
+ size_t sizeMax = _sizeMax;
+ _sizeMax = 0;
+ sync.release();
+ error("FileLogger: cannot rename `" + _file + "'\n" + IceUtilInternal::lastErrorToString());
+ sync.acquire();
+ _sizeMax = sizeMax;
+ }
+ else
+ {
+ _nextRetry = IceUtil::Time();
+ }
+
+ if(!_out.is_open())
+ {
+ sync.release();
+ error("FileLogger: cannot open `" + _file + "':\nlog messages will be sent to stderr");
+ write(message, indent);
+ return;
+ }
+ }
+ }
_out << s << endl;
}
else
diff --git a/cpp/src/Ice/LoggerI.h b/cpp/src/Ice/LoggerI.h
index 4ff54d73b41..1c516bad393 100644
--- a/cpp/src/Ice/LoggerI.h
+++ b/cpp/src/Ice/LoggerI.h
@@ -22,7 +22,7 @@ class LoggerI : public Logger
public:
LoggerI(const std::string&, const std::string&, bool convert = true,
- const IceUtil::StringConverterPtr& converter = 0);
+ const IceUtil::StringConverterPtr& converter = 0, std::size_t sizeMax = 0);
~LoggerI();
virtual void print(const std::string&);
@@ -43,7 +43,13 @@ private:
IceUtilInternal::ofstream _out;
std::string _file;
+ std::size_t _sizeMax;
+ //
+ // In case of a log file rename failure is set to the time in milliseconds
+ // after which rename could be attempted again. Otherwise is set to zero.
+ //
+ IceUtil::Time _nextRetry;
#if defined(_WIN32) && !defined(ICE_OS_WINRT)
const IceUtil::StringConverterPtr _consoleConverter;
#endif
diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp
index 84237fbc852..7fa9614379c 100644
--- a/cpp/src/Ice/Network.cpp
+++ b/cpp/src/Ice/Network.cpp
@@ -1273,7 +1273,6 @@ IceInternal::fdToLocalAddress(SOCKET fd, Address& addr)
socklen_t len = static_cast<socklen_t>(sizeof(sockaddr_storage));
if(getsockname(fd, &addr.sa, &len) == SOCKET_ERROR)
{
- closeSocketNoThrow(fd);
SocketException ex(__FILE__, __LINE__);
ex.error = getSocketErrno();
throw ex;
@@ -1307,7 +1306,6 @@ IceInternal::fdToRemoteAddress(SOCKET fd, Address& addr)
}
else
{
- closeSocketNoThrow(fd);
SocketException ex(__FILE__, __LINE__);
ex.error = getSocketErrno();
throw ex;
@@ -2326,12 +2324,20 @@ repeatConnect:
// port as the server).
//
Address localAddr;
- fdToLocalAddress(fd, localAddr);
- if(compareAddress(addr, localAddr) == 0)
+ try
{
- ConnectionRefusedException ex(__FILE__, __LINE__);
- ex.error = 0; // No appropriate errno
- throw ex;
+ fdToLocalAddress(fd, localAddr);
+ if(compareAddress(addr, localAddr) == 0)
+ {
+ ConnectionRefusedException ex(__FILE__, __LINE__);
+ ex.error = 0; // No appropriate errno
+ throw ex;
+ }
+ }
+ catch(const LocalException&)
+ {
+ closeSocketNoThrow(fd);
+ throw;
}
#endif
return true;
diff --git a/cpp/src/Ice/PluginManagerI.cpp b/cpp/src/Ice/PluginManagerI.cpp
index e424f9c7794..2152d955cbd 100644
--- a/cpp/src/Ice/PluginManagerI.cpp
+++ b/cpp/src/Ice/PluginManagerI.cpp
@@ -480,6 +480,11 @@ Ice::PluginManagerI::loadPlugin(const string& name, const string& pluginSpec, St
ex.reason = out.str();
throw ex;
}
+#ifdef __IBMCPP__
+ // xlC warns when casting a void* to function pointer
+#pragma report(disable, "1540-0216")
+#endif
+
factory = reinterpret_cast<PLUGIN_FACTORY>(sym);
}
diff --git a/cpp/src/Ice/PropertyNames.cpp b/cpp/src/Ice/PropertyNames.cpp
index 9ce120d99b8..69f03cade5f 100644
--- a/cpp/src/Ice/PropertyNames.cpp
+++ b/cpp/src/Ice/PropertyNames.cpp
@@ -6,7 +6,7 @@
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
-// Generated by makeprops.py from file ./config/PropertyNames.xml, Tue Apr 28 22:03:41 2015
+// Generated by makeprops.py from file ./config/PropertyNames.xml, Thu Apr 7 10:23:17 2016
// IMPORTANT: Do not edit this file -- any edits made here will be lost!
@@ -123,6 +123,7 @@ const IceInternal::Property IcePropsData[] =
IceInternal::Property("Ice.IPv4", false, 0),
IceInternal::Property("Ice.IPv6", false, 0),
IceInternal::Property("Ice.LogFile", false, 0),
+ IceInternal::Property("Ice.LogFile.SizeMax", false, 0),
IceInternal::Property("Ice.LogStdErr.Convert", false, 0),
IceInternal::Property("Ice.MessageSizeMax", false, 0),
IceInternal::Property("Ice.Nohup", false, 0),
diff --git a/cpp/src/Ice/PropertyNames.h b/cpp/src/Ice/PropertyNames.h
index c0d5538e51e..d5712c8e2ab 100644
--- a/cpp/src/Ice/PropertyNames.h
+++ b/cpp/src/Ice/PropertyNames.h
@@ -6,7 +6,7 @@
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
-// Generated by makeprops.py from file ./config/PropertyNames.xml, Tue Apr 28 22:03:41 2015
+// Generated by makeprops.py from file ./config/PropertyNames.xml, Thu Apr 7 10:23:17 2016
// IMPORTANT: Do not edit this file -- any edits made here will be lost!
diff --git a/cpp/src/Ice/RetryQueue.cpp b/cpp/src/Ice/RetryQueue.cpp
index aff3ff67f96..c9513f1710c 100644
--- a/cpp/src/Ice/RetryQueue.cpp
+++ b/cpp/src/Ice/RetryQueue.cpp
@@ -116,7 +116,7 @@ IceInternal::RetryQueue::destroy()
Lock sync(*this);
assert(_instance);
- set<RetryTaskPtr>::const_iterator p = _requests.begin();
+ set<RetryTaskPtr>::iterator p = _requests.begin();
while(p != _requests.end())
{
if(_instance->timer()->cancel(*p))
diff --git a/cpp/src/Ice/StreamSocket.cpp b/cpp/src/Ice/StreamSocket.cpp
index efbe6c301e5..fa3761f5fa0 100644
--- a/cpp/src/Ice/StreamSocket.cpp
+++ b/cpp/src/Ice/StreamSocket.cpp
@@ -35,7 +35,15 @@ StreamSocket::StreamSocket(const ProtocolInstancePtr& instance,
_state = _proxy ? StateProxyWrite : StateConnected;
}
#endif
- _desc = fdToString(_fd, _proxy, _addr);
+ try
+ {
+ _desc = fdToString(_fd, _proxy, _addr);
+ }
+ catch(const Ice::Exception&)
+ {
+ closeSocketNoThrow(_fd);
+ throw;
+ }
}
StreamSocket::StreamSocket(const ProtocolInstancePtr& instance, SOCKET fd) :
@@ -48,7 +56,15 @@ StreamSocket::StreamSocket(const ProtocolInstancePtr& instance, SOCKET fd) :
#endif
{
init();
- _desc = fdToString(fd);
+ try
+ {
+ _desc = fdToString(fd);
+ }
+ catch(const Ice::Exception&)
+ {
+ closeSocketNoThrow(fd);
+ throw;
+ }
}
StreamSocket::~StreamSocket()
diff --git a/cpp/src/Ice/WSConnector.h b/cpp/src/Ice/WSConnector.h
index 17c002a8db0..3c26a06ab45 100644
--- a/cpp/src/Ice/WSConnector.h
+++ b/cpp/src/Ice/WSConnector.h
@@ -33,12 +33,12 @@ public:
virtual bool operator!=(const Connector&) const;
virtual bool operator<(const Connector&) const;
-private:
WSConnector(const ProtocolInstancePtr&, const ConnectorPtr&, const std::string&, int, const std::string&);
virtual ~WSConnector();
- friend class WSEndpoint;
+private:
+
const ProtocolInstancePtr _instance;
const ConnectorPtr _delegate;
const std::string _host;
diff --git a/cpp/src/Ice/winrt/StreamTransceiver.cpp b/cpp/src/Ice/winrt/StreamTransceiver.cpp
index 410604ad0a1..d81dfa61d36 100644
--- a/cpp/src/Ice/winrt/StreamTransceiver.cpp
+++ b/cpp/src/Ice/winrt/StreamTransceiver.cpp
@@ -352,7 +352,6 @@ IceInternal::StreamTransceiver::StreamTransceiver(const ProtocolInstancePtr& ins
NativeInfo(fd),
_instance(instance),
_state(connected ? StateConnected : StateNeedConnect),
- _desc(connected ? fdToString(_fd) : string()),
_verified(false)
{
StreamSocket^ streamSocket = safe_cast<StreamSocket^>(_fd);
@@ -360,6 +359,19 @@ IceInternal::StreamTransceiver::StreamTransceiver(const ProtocolInstancePtr& ins
_reader = ref new DataReader(streamSocket->InputStream);
_reader->InputStreamOptions = InputStreamOptions::Partial;
+ if(connected)
+ {
+ try
+ {
+ _desc = fdToString(_fd);
+ }
+ catch(const Ice::Exception&)
+ {
+ closeSocketNoThrow(_fd);
+ throw;
+ }
+ }
+
setTcpBufSize(_fd, _instance);
_maxSendPacketSize = streamSocket->Control->OutboundBufferSizeInBytes / 2;
diff --git a/cpp/src/IceBox/IceBox.rc b/cpp/src/IceBox/IceBox.rc
index 11a7097a184..394ba232d4d 100644
--- a/cpp/src/IceBox/IceBox.rc
+++ b/cpp/src/IceBox/IceBox.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceBox C++ Library\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceBox/IceBoxAdmin.rc b/cpp/src/IceBox/IceBoxAdmin.rc
index c7dbe72ee13..3bf1d1ddf6b 100644
--- a/cpp/src/IceBox/IceBoxAdmin.rc
+++ b/cpp/src/IceBox/IceBoxAdmin.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceBox Admin\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "iceboxadmin\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "iceboxadmin.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceBox/IceBoxExe.rc b/cpp/src/IceBox/IceBoxExe.rc
index e252ff49023..50a02cf3821 100644
--- a/cpp/src/IceBox/IceBoxExe.rc
+++ b/cpp/src/IceBox/IceBoxExe.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceBox C++ Server\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceBox/ServiceManagerI.cpp b/cpp/src/IceBox/ServiceManagerI.cpp
index 3f21bcc6e25..695b2bf47c1 100644
--- a/cpp/src/IceBox/ServiceManagerI.cpp
+++ b/cpp/src/IceBox/ServiceManagerI.cpp
@@ -664,6 +664,11 @@ IceBox::ServiceManagerI::start(const string& service, const string& entryPoint,
//
// Invoke the factory function.
//
+#ifdef __IBMCPP__
+ // xlC warns when casting a void* to function pointer
+# pragma report(disable, "1540-0216")
+#endif
+
SERVICE_FACTORY factory = reinterpret_cast<SERVICE_FACTORY>(sym);
try
{
diff --git a/cpp/src/IceDiscovery/IceDiscovery.rc b/cpp/src/IceDiscovery/IceDiscovery.rc
index 47326d80b2c..6c549e2dbad 100755
--- a/cpp/src/IceDiscovery/IceDiscovery.rc
+++ b/cpp/src/IceDiscovery/IceDiscovery.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceDiscovery C++ Plug-in\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceGrid/Activator.cpp b/cpp/src/IceGrid/Activator.cpp
index d7d6f962974..ac7f7c3d349 100644
--- a/cpp/src/IceGrid/Activator.cpp
+++ b/cpp/src/IceGrid/Activator.cpp
@@ -37,7 +37,7 @@
#endif
#endif
-#if defined(__linux) || defined(__sun) || defined(__GLIBC__)
+#if defined(__linux) || defined(__sun) || defined(_AIX) || defined(__GLIBC__)
# include <grp.h> // for initgroups
#endif
diff --git a/cpp/src/IceGrid/IceGridAdmin.rc b/cpp/src/IceGrid/IceGridAdmin.rc
index 9876d9124ff..62048527836 100644
--- a/cpp/src/IceGrid/IceGridAdmin.rc
+++ b/cpp/src/IceGrid/IceGridAdmin.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceGrid Admin\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "icegridadmin\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "icegridadmin.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceGrid/IceGridDB.rc b/cpp/src/IceGrid/IceGridDB.rc
index 499bed1fb7a..151020205e0 100644
--- a/cpp/src/IceGrid/IceGridDB.rc
+++ b/cpp/src/IceGrid/IceGridDB.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceGridDB\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "icegriddb\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "icegriddb.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceGrid/IceGridNode.rc b/cpp/src/IceGrid/IceGridNode.rc
index 663a59a7331..beaff14b0e3 100644
--- a/cpp/src/IceGrid/IceGridNode.rc
+++ b/cpp/src/IceGrid/IceGridNode.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceGrid Node\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "icegridnode\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "icegridnode.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceGrid/IceGridRegistry.rc b/cpp/src/IceGrid/IceGridRegistry.rc
index 67031ebddb2..9b54aad6791 100644
--- a/cpp/src/IceGrid/IceGridRegistry.rc
+++ b/cpp/src/IceGrid/IceGridRegistry.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceGrid Registry\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "icegridregistry\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "icegridregistry.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceGrid/Parser.cpp b/cpp/src/IceGrid/Parser.cpp
index ea380d6bf9b..cd5aeb55fcf 100644
--- a/cpp/src/IceGrid/Parser.cpp
+++ b/cpp/src/IceGrid/Parser.cpp
@@ -39,23 +39,23 @@ namespace
{
const char* _commandsHelp[][3] = {
-{ "application", "add",
+{ "application", "add",
"application add [-n | --no-patch] DESC [TARGET ... ] [NAME=VALUE ... ]\n"
" Add application described in DESC. If specified\n"
-" the optional targets TARGET will be deployed.\n"
+" the optional targets TARGET will be deployed.\n"
},
-{ "application", "remove",
-"application remove NAME Remove application NAME.\n"
+{ "application", "remove",
+"application remove NAME Remove application NAME.\n"
},
{ "application", "describe",
-"application describe NAME Describe application NAME.\n"
+"application describe NAME Describe application NAME.\n"
},
{ "application", "diff",
"application diff [-s | --servers] DESC [TARGET ... ] [NAME=VALUE ... ]\n"
" Print the differences betwen the application\n"
-" described in DESC and the current deployment.\n"
+" described in DESC and the current deployment.\n"
" If -s or --servers is specified, print the\n"
-" the list of servers affected by the differences.\n"
+" the list of servers affected by the differences.\n"
},
{ "application", "update",
"application update [-n | --no-restart] DESC [TARGET ... ] [NAME=VALUE ... ]\n"
@@ -70,35 +70,35 @@ const char* _commandsHelp[][3] = {
" will be stopped if necessary.\n"
},
{ "application", "list",
-"application list List all deployed applications.\n"
+"application list List all deployed applications.\n"
},
-{ "server template", "instantiate",
+{ "server template", "instantiate",
"server template instantiate APPLICATION NODE TEMPLATE [NAME=VALUE ...]\n"
-" Instantiate a server template.\n"
+" Instantiate a server template.\n"
},
-{ "server template", "describe",
-"server template describe APPLICATION TEMPLATE\n"
-" Describe application server template TEMPLATE.\n"
+{ "server template", "describe",
+"server template describe APPLICATION TEMPLATE\n"
+" Describe application server template TEMPLATE.\n"
},
{ "service template", "describe",
-"service template describe APPLICATION TEMPLATE\n"
-" Describe application service template TEMPLATE.\n"
+"service template describe APPLICATION TEMPLATE\n"
+" Describe application service template TEMPLATE.\n"
},
{ "node", "list",
-"node list List all registered nodes.\n"
+"node list List all registered nodes.\n"
},
-{ "node", "describe",
-"node describe NAME Show information about node NAME.\n"
+{ "node", "describe",
+"node describe NAME Show information about node NAME.\n"
},
{ "node", "ping",
-"node ping NAME Ping node NAME.\n"
+"node ping NAME Ping node NAME.\n"
},
{ "node", "load",
-"node load NAME Print the load of the node NAME.\n"
+"node load NAME Print the load of the node NAME.\n"
},
{ "node", "sockets",
"node sockets [NAME] Print the number of CPU sockets of the\n"
-" node NAME or all the nodes if NAME is omitted.\n"
+" node NAME or all the nodes if NAME is omitted.\n"
},
{ "node", "show",
"node show [OPTIONS] NAME [log | stderr | stdout]\n"
@@ -109,36 +109,36 @@ const char* _commandsHelp[][3] = {
" -h N | --head N: Print the first N lines (stderr and stdout only)\n"
},
{ "node", "shutdown",
-"node shutdown NAME Shutdown node NAME.\n"
+"node shutdown NAME Shutdown node NAME.\n"
},
{ "registry", "list",
-"registry list List all registered registries.\n"
+"registry list List all registered registries.\n"
},
{ "registry", "describe",
-"registry describe NAME Show information about registry NAME.\n"
+"registry describe NAME Show information about registry NAME.\n"
},
{ "registry", "ping",
-"registry ping NAME Ping registry NAME.\n"
+"registry ping NAME Ping registry NAME.\n"
},
{ "registry", "show",
-"registry show [OPTIONS] NAME [log | stderr | stdout ]\n"
-" Show registry NAME Ice log, stderr or stdout.\n"
+"registry show [OPTIONS] NAME [log | stderr | stdout ]\n"
+" Show registry NAME Ice log, stderr or stdout.\n"
" Options:\n"
" -f | --follow: Wait for new log or data to be available\n"
" -t N | --tail N: Print the last N log messages or lines\n"
" -h N | --head N: Print the first N lines (stderr and stdout only)\n"
},
{ "registry", "shutdown",
-"registry shutdown NAME Shutdown registry NAME.\n"
+"registry shutdown NAME Shutdown registry NAME.\n"
},
{ "server", "list",
-"server list List all registered servers.\n"
+"server list List all registered servers.\n"
},
{ "server", "remove",
-"server remove ID Remove server ID.\n"
+"server remove ID Remove server ID.\n"
},
-{ "server", "describe",
-"server describe ID Describe server ID.\n"
+{ "server", "describe",
+"server describe ID Describe server ID.\n"
},
{ "server", "properties",
"server properties ID Get the run-time properties of server ID.\n"
@@ -147,28 +147,28 @@ const char* _commandsHelp[][3] = {
"server property ID NAME Get the run-time property NAME of server ID.\n"
},
{ "server", "state",
-"server state ID Get the state of server ID.\n"
+"server state ID Get the state of server ID.\n"
},
{ "server", "pid",
-"server pid ID Get the process id of server ID.\n"
+"server pid ID Get the process id of server ID.\n"
},
{ "server", "start",
-"server start ID Start server ID.\n"
+"server start ID Start server ID.\n"
},
{ "server", "stop",
-"server stop ID Stop server ID.\n"
+"server stop ID Stop server ID.\n"
},
{ "server", "patch",
-"server patch ID Patch server ID.\n"
+"server patch ID Patch server ID.\n"
},
-{ "server", "signal",
-"server signal ID SIGNAL Send SIGNAL (e.g. SIGTERM or 15) to server ID.\n"
+{ "server", "signal",
+"server signal ID SIGNAL Send SIGNAL (e.g. SIGTERM or 15) to server ID.\n"
},
{ "server", "stdout",
-"server stdout ID MESSAGE Write MESSAGE on server ID's stdout.\n"
+"server stdout ID MESSAGE Write MESSAGE on server ID's stdout.\n"
},
{ "server", "stderr",
-"server stderr ID MESSAGE Write MESSAGE on server ID's stderr.\n"
+"server stderr ID MESSAGE Write MESSAGE on server ID's stderr.\n"
},
{ "server", "show",
"server show [OPTIONS] ID [log | stderr | stdout | LOGFILE ]\n"
@@ -179,11 +179,11 @@ const char* _commandsHelp[][3] = {
" -h N | --head N: Print the first N lines (not available for Ice log)\n"
},
{ "server", "enable",
-"server enable ID Enable server ID.\n"
+"server enable ID Enable server ID.\n"
},
{ "server", "disable",
"server disable ID Disable server ID (a disabled server can't be\n"
-" started on demand or administratively).\n"
+" started on demand or administratively).\n"
},
{ "service", "start",
@@ -210,26 +210,26 @@ const char* _commandsHelp[][3] = {
},
{ "adapter", "list",
-"adapter list List all registered adapters.\n"
+"adapter list List all registered adapters.\n"
},
{ "adapter", "endpoints",
-"adapter endpoints ID Show the endpoints of adapter or replica group ID.\n"
+"adapter endpoints ID Show the endpoints of adapter or replica group ID.\n"
},
{ "adapter", "remove",
-"adapter remove ID Remove adapter or replica group ID.\n"
+"adapter remove ID Remove adapter or replica group ID.\n"
},
{ "object", "add",
"object add PROXY [TYPE] Add an object to the object registry,\n"
-" optionally specifying its type.\n"
+" optionally specifying its type.\n"
},
{ "object", "remove",
-"object remove IDENTITY Remove an object from the object registry.\n"
+"object remove IDENTITY Remove an object from the object registry.\n"
},
{ "object", "find",
-"object find TYPE Find all objects with the type TYPE.\n"
+"object find TYPE Find all objects with the type TYPE.\n"
},
{ "object", "describe",
-"object describe EXPR Describe all registered objects whose stringified\n"
+"object describe EXPR Describe all registered objects whose stringified\n"
" identities match the expression EXPR. A trailing\n"
" wildcard is supported in EXPR, for example\n"
" \"object describe Ice*\".\n"
@@ -238,7 +238,7 @@ const char* _commandsHelp[][3] = {
"object list EXPR List all registered objects whose stringified\n"
" identities match the expression EXPR. A trailing\n"
" wildcard is supported in EXPR, for example\n"
-" \"object list Ice*\".\n"
+" \"object list Ice*\".\n"
},
{ 0, 0, 0 }
};
@@ -277,9 +277,9 @@ string toConsoleEncoding(const string& s)
// Convert from UTF-8 to console CP
string consoleString;
windowsConsoleConverter->fromUTF8(reinterpret_cast<const IceUtil::Byte*>(s.data()),
- reinterpret_cast<const IceUtil::Byte*>(s.data() + s.size()),
+ reinterpret_cast<const IceUtil::Byte*>(s.data() + s.size()),
consoleString);
-
+
return consoleString;
}
catch(const IceUtil::IllegalConversionException&)
@@ -331,7 +331,7 @@ void writeMessage(const string& message, bool indent)
++idx;
}
}
-
+
outputString(s);
outputNewline();
flushOutput();
@@ -347,7 +347,7 @@ void printLogMessage(const string& p, const Ice::LogMessage& logMessage)
}
string timestamp = IceUtil::Time::microSeconds(logMessage.timestamp).toDateTime();
-
+
switch(logMessage.type)
{
case Ice::PrintMessage:
@@ -386,14 +386,14 @@ void printLogMessage(const string& p, const Ice::LogMessage& logMessage)
class RemoteLoggerI : public Ice::RemoteLogger
-{
+{
public:
RemoteLoggerI();
virtual void init(const string&, const Ice::LogMessageSeq&, const Ice::Current&);
virtual void log(const Ice::LogMessage&, const Ice::Current&);
-
+
void destroy();
private:
@@ -414,23 +414,23 @@ RemoteLoggerI::RemoteLoggerI() :
void
RemoteLoggerI::init(const string& prefix, const Ice::LogMessageSeq& logMessages, const Ice::Current&)
-{
+{
IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);
if(!_destroyed)
{
_prefix = prefix;
-
+
for(Ice::LogMessageSeq::const_iterator p = logMessages.begin(); p != logMessages.end(); ++p)
{
printLogMessage(_prefix, *p);
}
-
+
_initDone = true;
_monitor.notifyAll();
}
}
-void
+void
RemoteLoggerI::log(const Ice::LogMessage& logMessage, const Ice::Current&)
{
IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor);
@@ -468,7 +468,7 @@ Parser::createParser(const CommunicatorPtr& communicator, const AdminSessionPrx&
return new Parser(communicator, session, admin, interactive);
}
-void
+void
Parser::usage(const string& category, const string& command)
{
if(_helpCommands.find(category) == _helpCommands.end())
@@ -496,7 +496,7 @@ Parser::usage(const string& category, const list<string>& args)
{
invalidCommand("`help' requires at most 1 argument");
}
- else
+ else
{
usage(category, *args.begin());
}
@@ -513,15 +513,15 @@ Parser::usage()
"\n"
"List of help categories:\n"
"\n"
- " application: commands to manage applications\n"
- " node: commands to manage nodes\n"
- " registry: commands to manage registries\n"
- " server: commands to manage servers\n"
+ " application: commands to manage applications\n"
+ " node: commands to manage nodes\n"
+ " registry: commands to manage registries\n"
+ " server: commands to manage servers\n"
" service: commands to manage services\n"
- " adapter: commands to manage adapters\n"
+ " adapter: commands to manage adapters\n"
" object: commands to manage objects\n"
- " server template: commands to manage server templates\n"
- " service template: commands to manage service templates\n"
+ " server template: commands to manage server templates\n"
+ " service template: commands to manage service templates\n"
"\n";
}
@@ -565,7 +565,7 @@ Parser::addApplication(const list<string>& origArgs)
{
list<string> copyArgs = origArgs;
copyArgs.push_front("icegridadmin");
-
+
IceUtilInternal::Options opts;
opts.addOpt("n", "no-patch");
vector<string> args;
@@ -615,7 +615,7 @@ Parser::addApplication(const list<string>& origArgs)
//
ApplicationDescriptor app = DescriptorParser::parseDescriptor(desc, targets, vars, _communicator, _admin);
_admin->addApplication(app);
-
+
if(!opts.isSet("no-patch"))
{
//
@@ -743,7 +743,7 @@ Parser::diffApplication(const list<string>& origArgs)
ApplicationHelper newAppHelper(_communicator, newApp);
ApplicationHelper oldAppHelper(_communicator, origApp.descriptor);
-
+
ostringstream os;
Output out(os);
if(opts.isSet("servers"))
@@ -796,7 +796,7 @@ Parser::diffApplication(const list<string>& origArgs)
newAppHelper.printDiff(out, oldAppHelper);
}
out << nl;
- outputString(os.str());
+ outputString(os.str());
}
catch(const Ice::Exception& ex)
{
@@ -879,7 +879,7 @@ Parser::patchApplication(const list<string>& origArgs)
{
list<string> copyArgs = origArgs;
copyArgs.push_front("icegridadmin");
-
+
IceUtilInternal::Options opts;
opts.addOpt("f", "force");
vector<string> args;
@@ -954,7 +954,7 @@ Parser::describeServerTemplate(const list<string>& args)
string templ = *p++;
ApplicationInfo application = _admin->getApplicationInfo(name);
-
+
ostringstream os;
Output out(os);
TemplateDescriptorDict::const_iterator q = application.descriptor.serverTemplates.find(templ);
@@ -1045,7 +1045,7 @@ Parser::describeServiceTemplate(const list<string>& args)
string templ = *p++;
ApplicationInfo application = _admin->getApplicationInfo(name);
-
+
ostringstream os;
Output out(os);
TemplateDescriptorDict::const_iterator q = application.descriptor.serviceTemplates.find(templ);
@@ -1382,7 +1382,7 @@ Parser::removeServer(const list<string>& args)
catch(const Ice::Exception& ex)
{
exception(ex);
- }
+ }
}
void
@@ -1533,7 +1533,7 @@ Parser::describeServer(const list<string>& args)
invalidCommand("server describe", "requires exactly one argument");
return;
}
-
+
try
{
ServerInfo info = _admin->getServerInfo(args.front());
@@ -1637,7 +1637,7 @@ Parser::pidServer(const list<string>& args)
}
else
{
- error("server is not running");
+ error("server is not running");
}
}
catch(const Ice::Exception& ex)
@@ -1825,7 +1825,7 @@ Parser::describeService(const list<string>& args)
invalidCommand("service describe", "requires exactly two arguments");
return;
}
-
+
string server = args.front();
string service = *(++args.begin());
try
@@ -1852,7 +1852,7 @@ Parser::describeService(const list<string>& args)
}
}
outputString(os.str());
-
+
if(!found)
{
error("couldn't find service `" + service + "'");
@@ -1913,8 +1913,15 @@ Parser::propertiesService(const list<string>& args, bool single)
}
Ice::ObjectPrx admin = _admin->getServerAdmin(server);
- Ice::PropertiesAdminPrx propAdmin =
- Ice::PropertiesAdminPrx::uncheckedCast(admin, "IceBox.Service." + service + ".Properties");
+ Ice::PropertiesAdminPrx propAdmin;
+ if(getPropertyAsInt(info.descriptor->propertySet.properties, "IceBox.UseSharedCommunicator." + service) > 0)
+ {
+ propAdmin = Ice::PropertiesAdminPrx::uncheckedCast(admin, "IceBox.SharedCommunicator.Properties");
+ }
+ else
+ {
+ propAdmin = Ice::PropertiesAdminPrx::uncheckedCast(admin, "IceBox.Service." + service + ".Properties");
+ }
if(single)
{
@@ -2116,7 +2123,7 @@ Parser::findObject(const list<string>& args)
for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p)
{
cout << _communicator->proxyToString(p->proxy) << endl;
- }
+ }
}
catch(const Ice::Exception& ex)
{
@@ -2155,12 +2162,12 @@ Parser::describeObject(const list<string>& args)
{
objects = _admin->getAllObjectInfos("");
}
-
+
for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p)
{
cout << "proxy = `" << _communicator->proxyToString(p->proxy) << "' type = `" << p->type << "'" << endl;
}
-
+
}
catch(const Ice::Exception& ex)
{
@@ -2188,11 +2195,11 @@ Parser::listObject(const list<string>& args)
{
objects = _admin->getAllObjectInfos("");
}
-
+
for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p)
{
cout << _communicator->identityToString(p->proxy->ice_getIdentity()) << endl;
- }
+ }
}
catch(const Ice::Exception& ex)
{
@@ -2205,7 +2212,7 @@ Parser::show(const string& reader, const list<string>& origArgs)
{
list<string> copyArgs = origArgs;
copyArgs.push_front("icegridadmin");
-
+
IceUtilInternal::Options opts;
opts.addOpt("f", "follow");
opts.addOpt("h", "head", IceUtilInternal::Options::NeedArg);
@@ -2273,9 +2280,9 @@ Parser::show(const string& reader, const list<string>& origArgs)
return;
}
}
-
+
bool follow = opts.isSet("follow");
-
+
if(head && follow)
{
invalidCommand("can't use -f | --follow option with -h | --head option");
@@ -2298,12 +2305,12 @@ Parser::show(const string& reader, const list<string>& origArgs)
}
void
-Parser::showFile(const string& id, const string& reader, const string& filename,
+Parser::showFile(const string& id, const string& reader, const string& filename,
bool head, bool tail, bool follow, int lineCount)
{
-
+
int maxBytes = _communicator->getProperties()->getPropertyAsIntWithDefault("Ice.MessageSizeMax", 1024) * 1024;
-
+
FileIteratorPrx it;
try
@@ -2355,13 +2362,13 @@ Parser::showFile(const string& id, const string& reader, const string& filename,
it = _session->openServerLog(id, filename, tail ? lineCount : -1);
}
}
-
+
resetInterrupt();
Ice::StringSeq lines;
if(head)
{
assert(!follow);
-
+
int i = 0;
bool eof = false;
while(!interrupted() && !eof && i < lineCount)
@@ -2389,7 +2396,7 @@ Parser::showFile(const string& id, const string& reader, const string& filename,
}
}
}
-
+
if(follow)
{
while(!interrupted())
@@ -2407,7 +2414,7 @@ Parser::showFile(const string& id, const string& reader, const string& filename,
flushOutput();
}
}
-
+
if(eof)
{
Lock sync(*this);
@@ -2419,13 +2426,13 @@ Parser::showFile(const string& id, const string& reader, const string& filename,
}
}
}
-
+
if(lines.empty() || !lines.back().empty())
{
outputNewline();
flushOutput();
}
-
+
it->destroy();
}
catch(...)
@@ -2448,7 +2455,7 @@ void
Parser::showLog(const string& id, const string& reader, bool tail, bool follow, int lineCount)
{
outputNewline();
-
+
Ice::ObjectPrx admin;
if(reader == "server")
@@ -2469,9 +2476,9 @@ Parser::showLog(const string& id, const string& reader, bool tail, bool follow,
error("cannot retrieve Admin proxy for " + reader + " `" + id + "'");
return;
}
-
+
Ice::LoggerAdminPrx loggerAdmin;
-
+
try
{
loggerAdmin = Ice::LoggerAdminPrx::checkedCast(admin, "Logger");
@@ -2479,26 +2486,26 @@ Parser::showLog(const string& id, const string& reader, bool tail, bool follow,
catch(const Ice::Exception&)
{
}
-
+
if(loggerAdmin == 0)
{
error("cannot retrieve Logger admin facet for " + reader + " `" + id + "'");
return;
}
-
+
if(follow)
{
Ice::ObjectPrx adminCallbackTemplate = _session->getAdminCallbackTemplate();
-
+
if(adminCallbackTemplate == 0)
{
error("cannot retriever Callback template from IceGrid registry");
return;
}
-
- const Ice::EndpointSeq endpoints = adminCallbackTemplate->ice_getEndpoints();
+
+ const Ice::EndpointSeq endpoints = adminCallbackTemplate->ice_getEndpoints();
string publishedEndpoints;
-
+
for(Ice::EndpointSeq::const_iterator p = endpoints.begin(); p != endpoints.end(); ++p)
{
if(publishedEndpoints.empty())
@@ -2510,26 +2517,26 @@ Parser::showLog(const string& id, const string& reader, bool tail, bool follow,
publishedEndpoints += ":" + (*p)->toString();
}
}
-
+
_communicator->getProperties()->setProperty("RemoteLoggerAdapter.PublishedEndpoints", publishedEndpoints);
-
+
Ice::ObjectAdapterPtr adapter = _communicator->createObjectAdapter("RemoteLoggerAdapter");
-
+
_session->ice_getConnection()->setAdapter(adapter);
-
+
Ice::Identity id;
ostringstream name;
name << "RemoteLogger-" << loggerCallbackCount++;
id.name = name.str();
id.category = adminCallbackTemplate->ice_getIdentity().category;
-
+
RemoteLoggerIPtr servant = new RemoteLoggerI;
- Ice::RemoteLoggerPrx prx =
+ Ice::RemoteLoggerPrx prx =
Ice::RemoteLoggerPrx::uncheckedCast(adapter->add(servant, id));
adapter->activate();
-
+
loggerAdmin->attachRemoteLogger(prx, Ice::LogMessageTypeSeq(), Ice::StringSeq(), tail ? lineCount : -1);
-
+
resetInterrupt();
{
Lock lock(*this);
@@ -2538,10 +2545,10 @@ Parser::showLog(const string& id, const string& reader, bool tail, bool follow,
wait();
}
}
-
+
servant->destroy();
adapter->destroy();
-
+
try
{
loggerAdmin->detachRemoteLogger(prx);
@@ -2554,9 +2561,9 @@ Parser::showLog(const string& id, const string& reader, bool tail, bool follow,
else
{
string prefix;
- const Ice::LogMessageSeq logMessages = loggerAdmin->getLog(Ice::LogMessageTypeSeq(), Ice::StringSeq(),
+ const Ice::LogMessageSeq logMessages = loggerAdmin->getLog(Ice::LogMessageTypeSeq(), Ice::StringSeq(),
tail ? lineCount : -1, prefix);
-
+
for(Ice::LogMessageSeq::const_iterator p = logMessages.begin(); p != logMessages.end(); ++p)
{
printLogMessage(prefix, *p);
@@ -2583,7 +2590,7 @@ Parser::showWarranty()
}
//
-// With older flex version <= 2.5.35 YY_INPUT second
+// With older flex version <= 2.5.35 YY_INPUT second
// paramenter is of type int&, in newer versions it
// changes to size_t&
//
@@ -2669,7 +2676,7 @@ Parser::getInput(char* buf, size_t& result, size_t maxSize)
break;
}
}
-
+
result = line.length();
if(result > maxSize)
{
@@ -2733,7 +2740,7 @@ Parser::invalidCommand(const list<string>& s)
{
return;
}
-
+
string cat = *s.begin();
if(_helpCommands.find(cat) == _helpCommands.end())
{
@@ -2812,7 +2819,7 @@ Parser::error(const char* s)
cerr << "error: "
#ifdef _WIN32
- << toConsoleEncoding(s)
+ << toConsoleEncoding(s)
#else
<< s
#endif
@@ -2831,7 +2838,7 @@ Parser::warning(const char* s)
{
cerr << "warning: "
#ifdef _WIN32
- << toConsoleEncoding(s)
+ << toConsoleEncoding(s)
#else
<< s
#endif
@@ -2894,8 +2901,8 @@ Parser::parse(const std::string& commands, bool debug)
return status;
}
-Parser::Parser(const CommunicatorPtr& communicator,
- const AdminSessionPrx& session,
+Parser::Parser(const CommunicatorPtr& communicator,
+ const AdminSessionPrx& session,
const AdminPrx& admin,
bool interactive) :
_communicator(communicator),
@@ -2960,7 +2967,7 @@ Parser::exception(const Ice::Exception& ex)
{
ostringstream s;
s << ex << ":\n" << ex.reason;
- error(s.str());
+ error(s.str());
}
catch(const PatchException& ex)
{
diff --git a/cpp/src/IceGridLib/IceGrid.rc b/cpp/src/IceGridLib/IceGrid.rc
index f6be3ff9139..65728ae1fb6 100644
--- a/cpp/src/IceGridLib/IceGrid.rc
+++ b/cpp/src/IceGridLib/IceGrid.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceGrid C++ Client Library\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceGridLib/PluginFacadeI.cpp b/cpp/src/IceGridLib/PluginFacadeI.cpp
index 6bcd4f92358..0b1748a852b 100644
--- a/cpp/src/IceGridLib/PluginFacadeI.cpp
+++ b/cpp/src/IceGridLib/PluginFacadeI.cpp
@@ -18,7 +18,7 @@ using namespace IceGrid;
namespace
{
-RegistryPluginFacadePtr pluginFacade;
+RegistryPluginFacade* pluginFacade = 0;
};
@@ -38,5 +38,13 @@ IceGrid::getRegistryPluginFacade()
void
IceGrid::setRegistryPluginFacade(const RegistryPluginFacadePtr& facade)
{
- pluginFacade = facade;
+ if(pluginFacade)
+ {
+ pluginFacade->__decRef();
+ }
+ pluginFacade = facade.get();
+ if(pluginFacade)
+ {
+ pluginFacade->__incRef();
+ }
}
diff --git a/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.rc b/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.rc
index 757ae84be78..a6268af65ad 100755
--- a/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.rc
+++ b/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceLocatorDiscovery C++ Plug-in\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IcePatch2/IcePatch2Calc.rc b/cpp/src/IcePatch2/IcePatch2Calc.rc
index 9cb67dc9fde..43b3b6c7367 100644
--- a/cpp/src/IcePatch2/IcePatch2Calc.rc
+++ b/cpp/src/IcePatch2/IcePatch2Calc.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IcePatch2 Calc\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "icepatch2calc\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "icepatch2calc.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IcePatch2/IcePatch2Client.rc b/cpp/src/IcePatch2/IcePatch2Client.rc
index fcf9ca02c9c..915b27b449b 100644
--- a/cpp/src/IcePatch2/IcePatch2Client.rc
+++ b/cpp/src/IcePatch2/IcePatch2Client.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IcePatch2 Client\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "icepatch2client\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "icepatch2client.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IcePatch2/IcePatch2Server.rc b/cpp/src/IcePatch2/IcePatch2Server.rc
index 662dbce1656..3ea2d1898c1 100644
--- a/cpp/src/IcePatch2/IcePatch2Server.rc
+++ b/cpp/src/IcePatch2/IcePatch2Server.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IcePatch2 Server\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "icepatch2server\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "icepatch2server.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IcePatch2Lib/IcePatch2.rc b/cpp/src/IcePatch2Lib/IcePatch2.rc
index 89398fe503d..4e4bc0b69d1 100644
--- a/cpp/src/IcePatch2Lib/IcePatch2.rc
+++ b/cpp/src/IcePatch2Lib/IcePatch2.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IcePatch2 Client Library\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IcePatch2Lib/Makefile b/cpp/src/IcePatch2Lib/Makefile
index e8b6d4e5565..4c1f938f0ee 100644
--- a/cpp/src/IcePatch2Lib/Makefile
+++ b/cpp/src/IcePatch2Lib/Makefile
@@ -27,7 +27,13 @@ SDIR = $(slicedir)/IcePatch2
include $(top_srcdir)/config/Make.rules
-CPPFLAGS := -I. -I.. $(CPPFLAGS) $(BZIP2_FLAGS) -Wno-deprecated-declarations
+CPPFLAGS := -I. -I.. $(CPPFLAGS) $(BZIP2_FLAGS)
+
+ifeq ($(GCC_COMPILER),yes)
+ CPPFLAGS := $(CPPFLAGS) -Wno-deprecated-declarations
+endif
+
+
SLICE2CPPFLAGS := --ice --include-dir IcePatch2 --dll-export ICE_PATCH2_API $(SLICE2CPPFLAGS)
LINKWITH := $(BZIP2_RPATH_LINK) -lIce -lIceUtil $(BZIP2_LIBS)
diff --git a/cpp/src/IceSSL/IceSSL.rc b/cpp/src/IceSSL/IceSSL.rc
index 5e91bedd9f2..887344f64c2 100644
--- a/cpp/src/IceSSL/IceSSL.rc
+++ b/cpp/src/IceSSL/IceSSL.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceSSL C++ Plug-in\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceStorm/IceStormAdmin.rc b/cpp/src/IceStorm/IceStormAdmin.rc
index c66fbf5ac57..7614ab71078 100644
--- a/cpp/src/IceStorm/IceStormAdmin.rc
+++ b/cpp/src/IceStorm/IceStormAdmin.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceStorm Admin\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "icestormadmin\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "icestormadmin.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceStorm/IceStormDB.rc b/cpp/src/IceStorm/IceStormDB.rc
index b9fbd0b228e..7c5d32fbcfd 100644
--- a/cpp/src/IceStorm/IceStormDB.rc
+++ b/cpp/src/IceStorm/IceStormDB.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceStormDB\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "icestormdb\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "icestormdb.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceStorm/IceStormMigrate.rc b/cpp/src/IceStorm/IceStormMigrate.rc
index abe3c68f499..29c235d5bbf 100644
--- a/cpp/src/IceStorm/IceStormMigrate.rc
+++ b/cpp/src/IceStorm/IceStormMigrate.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Migration Utility for IceStorm Database\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "icestormmigrate\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "icestormmigrate.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceStorm/IceStormService.rc b/cpp/src/IceStorm/IceStormService.rc
index 1fa6fa16f84..a415a7657bb 100644
--- a/cpp/src/IceStorm/IceStormService.rc
+++ b/cpp/src/IceStorm/IceStormService.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceStorm C++ Service for IceBox\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceStormLib/IceStorm.rc b/cpp/src/IceStormLib/IceStorm.rc
index 23b2093410c..9405ecb0ca9 100644
--- a/cpp/src/IceStormLib/IceStorm.rc
+++ b/cpp/src/IceStormLib/IceStorm.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceStorm C++ Client Library\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceUtil/IceUtil.rc b/cpp/src/IceUtil/IceUtil.rc
index 3810f0aa3ea..d9dc5f2bb40 100644
--- a/cpp/src/IceUtil/IceUtil.rc
+++ b/cpp/src/IceUtil/IceUtil.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Ice C++ Utility Library\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/IceUtil/Time.cpp b/cpp/src/IceUtil/Time.cpp
index 88073886137..1dbf23e1d72 100644
--- a/cpp/src/IceUtil/Time.cpp
+++ b/cpp/src/IceUtil/Time.cpp
@@ -247,22 +247,8 @@ IceUtil::Time::toMicroSecondsDouble() const
std::string
IceUtil::Time::toDateTime() const
{
- time_t time = static_cast<long>(_usec / 1000000);
-
- struct tm* t;
-#ifdef _WIN32
- t = localtime(&time);
-#else
- struct tm tr;
- localtime_r(&time, &tr);
- t = &tr;
-#endif
-
- char buf[32];
- strftime(buf, sizeof(buf), "%x %H:%M:%S", t);
-
std::ostringstream os;
- os << buf << ".";
+ os << toString("%x %H:%M:%S") << ".";
os.fill('0');
os.width(3);
os << static_cast<long>(_usec % 1000000 / 1000);
@@ -294,6 +280,28 @@ IceUtil::Time::toDuration() const
return os.str();
}
+std::string
+IceUtil::Time::toString(const std::string& format) const
+{
+ time_t time = static_cast<long>(_usec / 1000000);
+
+ struct tm* t;
+#ifdef _WIN32
+ t = localtime(&time);
+#else
+ struct tm tr;
+ localtime_r(&time, &tr);
+ t = &tr;
+#endif
+
+ char buf[32];
+ if(strftime(buf, sizeof(buf), format.c_str(), t) == 0)
+ {
+ return std::string();
+ }
+ return std::string(buf);
+}
+
Time::Time(Int64 usec) :
_usec(usec)
{
diff --git a/cpp/src/IceXML/IceXML.rc b/cpp/src/IceXML/IceXML.rc
index e99c5efafeb..644c1df9e73 100644
--- a/cpp/src/IceXML/IceXML.rc
+++ b/cpp/src/IceXML/IceXML.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "IceXML C++ Library\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/Slice/Python.cpp b/cpp/src/Slice/Python.cpp
index 09a17a93b4a..4343456efb2 100644
--- a/cpp/src/Slice/Python.cpp
+++ b/cpp/src/Slice/Python.cpp
@@ -665,6 +665,10 @@ Slice::Python::compile(int argc, char* argv[])
}
FileTracker::instance()->addFile(file);
+ //
+ // Python magic comment to set the file encoding, it must be first or second line
+ //
+ out << "# -*- coding: utf-8 -*-\n";
printHeader(out);
printGeneratedHeader(out, base + ".ice", "#");
//
diff --git a/cpp/src/Slice/PythonUtil.cpp b/cpp/src/Slice/PythonUtil.cpp
index 2e714214052..0caebc4ef4d 100644
--- a/cpp/src/Slice/PythonUtil.cpp
+++ b/cpp/src/Slice/PythonUtil.cpp
@@ -518,17 +518,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
//
ClassList allBases = p->allBases();
StringList ids;
-#if defined(__IBMCPP__) && defined(NDEBUG)
-//
-// VisualAge C++ 6.0 does not see that ClassDef is a Contained,
-// when inlining is on. The code below issues a warning: better
-// than an error!
-//
- transform(allBases.begin(), allBases.end(), back_inserter(ids),
- IceUtil::constMemFun<string,ClassDef>(&Contained::scoped));
-#else
transform(allBases.begin(), allBases.end(), back_inserter(ids), IceUtil::constMemFun(&Contained::scoped));
-#endif
StringList other;
other.push_back(scoped);
other.push_back("::Ice::Object");
@@ -2291,14 +2281,10 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const string&
for(StringVec::const_iterator q = lines.begin(); q != lines.end(); ++q)
{
- if(q != lines.begin())
- {
- _out << nl;
- }
- _out << *q;
+ _out << nl << *q;
}
- _out << "\"\"\"";
+ _out << nl << "\"\"\"";
}
void
@@ -2314,11 +2300,7 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const DataMemb
for(StringVec::const_iterator q = lines.begin(); q != lines.end(); ++q)
{
- if(q != lines.begin())
- {
- _out << nl;
- }
- _out << *q;
+ _out << nl << *q;
}
if(!members.empty())
@@ -2360,7 +2342,7 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const DataMemb
}
}
- _out << "\"\"\"";
+ _out << nl << "\"\"\"";
}
void
@@ -2376,11 +2358,7 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const Enumerat
for(StringVec::const_iterator q = lines.begin(); q != lines.end(); ++q)
{
- if(q != lines.begin())
- {
- _out << nl;
- }
- _out << *q;
+ _out << nl << *q;
}
if(!enums.empty())
@@ -2422,7 +2400,7 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const Enumerat
}
}
- _out << "\"\"\"";
+ _out << nl << "\"\"\"";
}
bool
@@ -2665,11 +2643,7 @@ Slice::Python::CodeVisitor::writeDocstring(const OperationPtr& op, DocstringMode
{
for(StringVec::const_iterator q = comment.description.begin(); q != comment.description.end(); ++q)
{
- if(q != comment.description.begin())
- {
- _out << nl;
- }
- _out << *q;
+ _out << nl << *q;
}
}
@@ -2798,7 +2772,7 @@ Slice::Python::CodeVisitor::writeDocstring(const OperationPtr& op, DocstringMode
_out << nl << r->first << " -- " << r->second;
}
}
- _out << "\"\"\"";
+ _out << nl << "\"\"\"";
}
void
diff --git a/cpp/src/Slice/RubyUtil.cpp b/cpp/src/Slice/RubyUtil.cpp
index 3639a53b185..6364e88133e 100644
--- a/cpp/src/Slice/RubyUtil.cpp
+++ b/cpp/src/Slice/RubyUtil.cpp
@@ -245,17 +245,7 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
//
ClassList allBases = p->allBases();
StringList ids;
-#if defined(__IBMCPP__) && defined(NDEBUG)
-//
-// VisualAge C++ 6.0 does not see that ClassDef is a Contained,
-// when inlining is on. The code below issues a warning: better
-// than an error!
-//
- transform(allBases.begin(), allBases.end(), back_inserter(ids),
- IceUtil::constMemFun<string,ClassDef>(&Contained::scoped));
-#else
transform(allBases.begin(), allBases.end(), back_inserter(ids), IceUtil::constMemFun(&Contained::scoped));
-#endif
StringList other;
other.push_back(scoped);
other.push_back("::Ice::Object");
diff --git a/cpp/src/Slice/Slice.rc b/cpp/src/Slice/Slice.rc
index fdf1ed46132..c89c5b383ca 100644
--- a/cpp/src/Slice/Slice.rc
+++ b/cpp/src/Slice/Slice.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Slice C++ Library\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", INTERNALNAME
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", ORIGINALFILENAME
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/iceserviceinstall/IceServiceInstall.rc b/cpp/src/iceserviceinstall/IceServiceInstall.rc
index eabea615a3b..d31407c2274 100644
--- a/cpp/src/iceserviceinstall/IceServiceInstall.rc
+++ b/cpp/src/iceserviceinstall/IceServiceInstall.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Install Ice Services as Windows Services\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "iceserviceinstall\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "iceserviceinstall.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/slice2confluence/Slice2Confluence.rc b/cpp/src/slice2confluence/Slice2Confluence.rc
index d111abf9674..1b4dfed0ab8 100644
--- a/cpp/src/slice2confluence/Slice2Confluence.rc
+++ b/cpp/src/slice2confluence/Slice2Confluence.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Slice to Confluence Markup Translator\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "slice2confluence\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "slice2confluence.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index 05de885e742..6da3a90e809 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -3088,16 +3088,7 @@ Slice::Gen::ObjectVisitor::visitClassDefStart(const ClassDefPtr& p)
ClassList allBases = p->allBases();
StringList ids;
-#if defined(__IBMCPP__) && defined(NDEBUG)
-//
-// VisualAge C++ 6.0 does not see that ClassDef is a Contained,
-// when inlining is on. The code below issues a warning: better
-// than an error!
-//
- transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun<string,ClassDef>(&Contained::scoped));
-#else
transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun(&Contained::scoped));
-#endif
StringList other;
other.push_back(p->scoped());
other.push_back("::Ice::Object");
@@ -3211,16 +3202,9 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p)
if(!allOps.empty())
{
StringList allOpNames;
-#if defined(__IBMCPP__) && defined(NDEBUG)
-//
-// See comment for transform above
-//
- transform(allOps.begin(), allOps.end(), back_inserter(allOpNames),
- ::IceUtil::constMemFun<string,Operation>(&Contained::name));
-#else
transform(allOps.begin(), allOps.end(), back_inserter(allOpNames),
::IceUtil::constMemFun(&Contained::name));
-#endif
+
allOpNames.push_back("ice_id");
allOpNames.push_back("ice_ids");
allOpNames.push_back("ice_isA");
diff --git a/cpp/src/slice2cpp/Slice2Cpp.rc b/cpp/src/slice2cpp/Slice2Cpp.rc
index 7cbc107d57e..f7c47855132 100644
--- a/cpp/src/slice2cpp/Slice2Cpp.rc
+++ b/cpp/src/slice2cpp/Slice2Cpp.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Slice to C++ Translator\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "slice2cpp\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "slice2cpp.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp
index 76ef3049cbc..59c2ccae3ad 100644
--- a/cpp/src/slice2cs/Gen.cpp
+++ b/cpp/src/slice2cs/Gen.cpp
@@ -714,18 +714,7 @@ Slice::CsVisitor::writeDispatchAndMarshalling(const ClassDefPtr& p, bool stream)
StringList ids;
ClassList bases = p->bases();
bool hasBaseClass = !bases.empty() && !bases.front()->isInterface();
-
-#if defined(__IBMCPP__) && defined(NDEBUG)
- //
- // VisualAge C++ 6.0 does not see that ClassDef is a Contained,
- // when inlining is on. The code below issues a warning: better
- // than an error!
- //
- transform(allBases.begin(), allBases.end(), back_inserter(ids), constMemFun<string,ClassDef>(&Contained::scoped));
-#else
transform(allBases.begin(), allBases.end(), back_inserter(ids), constMemFun(&Contained::scoped));
-#endif
-
StringList other;
other.push_back(p->scoped());
other.push_back("::Ice::Object");
@@ -1130,14 +1119,7 @@ Slice::CsVisitor::writeDispatchAndMarshalling(const ClassDefPtr& p, bool stream)
if(!allOps.empty() || (!p->isInterface() && !hasBaseClass))
{
StringList allOpNames;
-#if defined(__IBMCPP__) && defined(NDEBUG)
- //
- // See comment for transform above
- //
- transform(allOps.begin(), allOps.end(), back_inserter(allOpNames), constMemFun<string,Operation>(&Contained::name));
-#else
transform(allOps.begin(), allOps.end(), back_inserter(allOpNames), constMemFun(&Contained::name));
-#endif
allOpNames.push_back("ice_id");
allOpNames.push_back("ice_ids");
allOpNames.push_back("ice_isA");
@@ -6061,16 +6043,7 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p)
string scoped = p->scoped();
ClassList allBases = p->allBases();
StringList ids;
-#if defined(__IBMCPP__) && defined(NDEBUG)
- //
- // VisualAge C++ 6.0 does not see that ClassDef is a Contained,
- // when inlining is on. The code below issues a warning: better
- // than an error!
- //
- transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun<string,ClassDef>(&Contained::scoped));
-#else
transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun(&Contained::scoped));
-#endif
StringList other;
other.push_back(p->scoped());
other.push_back("::Ice::Object");
diff --git a/cpp/src/slice2cs/Slice2Cs.rc b/cpp/src/slice2cs/Slice2Cs.rc
index 4b935adc752..174785ed336 100644
--- a/cpp/src/slice2cs/Slice2Cs.rc
+++ b/cpp/src/slice2cs/Slice2Cs.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Slice to C# Translator\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "slice2cs\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "slice2cs.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/slice2freeze/Slice2Freeze.rc b/cpp/src/slice2freeze/Slice2Freeze.rc
index 0c894708bb1..d90e354140f 100644
--- a/cpp/src/slice2freeze/Slice2Freeze.rc
+++ b/cpp/src/slice2freeze/Slice2Freeze.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Slice to Freeze for C++ Translator\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "slice2freeze\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "slice2freeze.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/slice2freezej/Slice2FreezeJ.rc b/cpp/src/slice2freezej/Slice2FreezeJ.rc
index bf4ebd81097..8140ddb772b 100644
--- a/cpp/src/slice2freezej/Slice2FreezeJ.rc
+++ b/cpp/src/slice2freezej/Slice2FreezeJ.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Slice to Freeze for Java Translator\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "slice2freezej\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "slice2freezej.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/slice2html/Slice2Html.rc b/cpp/src/slice2html/Slice2Html.rc
index ced3bb32952..2e833c2e8ab 100644
--- a/cpp/src/slice2html/Slice2Html.rc
+++ b/cpp/src/slice2html/Slice2Html.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Slice to HTML Translator\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "slice2html\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "slice2html.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/slice2java/Slice2Java.rc b/cpp/src/slice2java/Slice2Java.rc
index ac1a8cde05f..6b1d0209dac 100644
--- a/cpp/src/slice2java/Slice2Java.rc
+++ b/cpp/src/slice2java/Slice2Java.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Slice to Java Translator\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "slice2java\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "slice2java.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/slice2js/Gen.cpp b/cpp/src/slice2js/Gen.cpp
index 573d0180c67..9e55b8b65f2 100644
--- a/cpp/src/slice2js/Gen.cpp
+++ b/cpp/src/slice2js/Gen.cpp
@@ -1294,17 +1294,7 @@ Slice::Gen::TypesVisitor::visitClassDefStart(const ClassDefPtr& p)
_out << ", undefined";
}
-#if defined(__IBMCPP__) && defined(NDEBUG)
- //
- // VisualAge C++ 6.0 does not see that ClassDef is a Contained,
- // when inlining is on. The code below issues a warning: better
- // than an error!
- //
- transform(allBases.begin(), allBases.end(), back_inserter(ids),
- ::IceUtil::constMemFun<string,ClassDef>(&Contained::scoped));
-#else
transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun(&Contained::scoped));
-#endif
StringList other;
other.push_back(scoped);
other.push_back("::Ice::Object");
diff --git a/cpp/src/slice2js/Slice2Js.rc b/cpp/src/slice2js/Slice2Js.rc
index 855d1667576..dc1c9b05377 100644
--- a/cpp/src/slice2js/Slice2Js.rc
+++ b/cpp/src/slice2js/Slice2Js.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Slice to JavaScript Translator\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "slice2js\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "slice2js.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/slice2php/Slice2PHP.rc b/cpp/src/slice2php/Slice2PHP.rc
index 9c4f8362217..bcbe9d3048e 100644
--- a/cpp/src/slice2php/Slice2PHP.rc
+++ b/cpp/src/slice2php/Slice2PHP.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Slice to PHP Translator\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "slice2php\0"
VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0"
VALUE "OriginalFilename", "slice2php.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"
diff --git a/cpp/src/slice2py/Slice2Py.rc b/cpp/src/slice2py/Slice2Py.rc
index e6cc7f9f4b9..8be8601392a 100644
--- a/cpp/src/slice2py/Slice2Py.rc
+++ b/cpp/src/slice2py/Slice2Py.rc
@@ -1,8 +1,8 @@
#include "winver.h"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,6,2,0
- PRODUCTVERSION 3,6,2,0
+ FILEVERSION 3,6,3,0
+ PRODUCTVERSION 3,6,3,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
@@ -19,12 +19,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "ZeroC, Inc.\0"
VALUE "FileDescription", "Slice To Python Translator\0"
- VALUE "FileVersion", "3.6.2\0"
+ VALUE "FileVersion", "3.6.3\0"
VALUE "InternalName", "slice2py\0"
VALUE "LegalCopyright", "Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.\0"
VALUE "OriginalFilename", "slice2py.exe\0"
VALUE "ProductName", "Ice\0"
- VALUE "ProductVersion", "3.6.2\0"
+ VALUE "ProductVersion", "3.6.3\0"
END
END
BLOCK "VarFileInfo"