diff -ruN --exclude=CVS ../ice.orig/Makefile ./Makefile
--- ../ice.orig/Makefile	2013-04-27 10:50:46.000000000 +0200
+++ ./Makefile	2013-06-02 14:20:04.000000000 +0200
@@ -2,14 +2,15 @@
 # $FreeBSD: devel/ice/Makefile 316654 2013-04-27 08:50:46Z mva $
 
 PORTNAME=		Ice
-PORTVERSION=		3.4.2
-PORTREVISION=		3
+PORTVERSION=		3.5.0
 CATEGORIES=		devel
-MASTER_SITES=		http://download.zeroc.com/Ice/3.4/
+MASTER_SITES=		http://download.zeroc.com/Ice/3.5/
 
 MAINTAINER=		freebsd@grem.de
 COMMENT=		Modern alternative to object middleware such as CORBA/COM/DCOM/COM+
 
+LICENSE=		GPLv2
+
 LIB_DEPENDS=		expat:${PORTSDIR}/textproc/expat2 \
 			mcpp:${PORTSDIR}/devel/mcpp
 
@@ -26,8 +27,8 @@
 
 USE_GMAKE=		yes
 USES=			iconv
-USE_BDB=		42+
-INVALID_BDB_VER=	2 3 40 41
+USE_BDB=		5
+INVALID_BDB_VER=	2 3 40 41 42 43 44 46 47 48
 USE_LDCONFIG=		yes
 BUILD_WRKSRC=		${WRKSRC}/cpp
 INSTALL_WRKSRC=		${WRKSRC}/cpp
diff -ruN --exclude=CVS ../ice.orig/distinfo ./distinfo
--- ../ice.orig/distinfo	2012-07-14 15:54:48.000000000 +0200
+++ ./distinfo	2013-05-19 23:35:43.000000000 +0200
@@ -1,2 +1,2 @@
-SHA256 (Ice-3.4.2.tar.gz) = dcf0484495b6df0849ec90a00e8204fe5fe1c0d3882bb438bf2c1d062f15c979
-SIZE (Ice-3.4.2.tar.gz) = 5485106
+SHA256 (Ice-3.5.0.tar.gz) = 583d4a819d50ad8b79b1e9ad45abfa3078f981486271ca8cd9ede8fa420ff575
+SIZE (Ice-3.5.0.tar.gz) = 5388847
diff -ruN --exclude=CVS ../ice.orig/files/patch-Make.rules ./files/patch-Make.rules
--- ../ice.orig/files/patch-Make.rules	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-Make.rules	1970-01-01 01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
---- cpp/config/Make.rules.orig	Fri Mar  9 00:16:54 2007
-+++ cpp/config/Make.rules	Fri Apr 13 20:05:04 2007
-@@ -188,7 +188,9 @@
-       DB_FLAGS          = -I/usr/include/db45
-       DB_LIBS           = -L/usr/$(libsubdir)/db45 -ldb_cxx
-    else
--      DB_LIBS           = -ldb_cxx
-+      DB_FLAGS          = -I%%BDB_INCLUDE_DIR%%
-+      DB_LIBS           = -L%%BDB_LIB_DIR%% -l%%BDB_LIB_CXX_NAME%%
-+      DB_RPATH_LINK     = $(call rpathlink,%%BDB_LIB_DIR%%)
-    endif
- endif
diff -ruN --exclude=CVS ../ice.orig/files/patch-Makefile ./files/patch-Makefile
--- ../ice.orig/files/patch-Makefile	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-Makefile	1970-01-01 01:00:00.000000000 +0100
@@ -1,26 +0,0 @@
---- cpp.orig/Makefile	2012-03-04 21:38:42.000000000 +0100
-+++ cpp/Makefile	2012-03-04 21:38:42.000000000 +0100
-@@ -11,7 +11,22 @@
- 
- include $(top_srcdir)/config/Make.rules
- 
--SUBDIRS		= config src include test demo
-+SUBDIRS		= config src include
-+
-+ifeq ($(NOTESTS),)
-+SUBDIRS		+= test
-+endif
-+
-+ifeq ($(NODEMOS),)
-+SUBDIRS		+= demo
-+endif
-+
-+ifeq ($(NOPORTDOCS),)
-+SUBDIRS		+= doc
-+endif
-+ 
-+ INSTALL_SUBDIRS	= $(install_bindir) $(install_libdir) $(install_includedir) $(install_configdir)
-+ 
- 
- INSTALL_SUBDIRS	= $(install_bindir) $(install_libdir) $(install_includedir) $(install_configdir)
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-config-Make.common.rules ./files/patch-config-Make.common.rules
--- ../ice.orig/files/patch-config-Make.common.rules	1970-01-01 01:00:00.000000000 +0100
+++ ./files/patch-config-Make.common.rules	2013-06-01 19:52:09.000000000 +0200
@@ -0,0 +1,18 @@
+--- config.orig/Make.common.rules	2013-05-20 22:21:58.666286011 +0000
++++ config/Make.common.rules	2013-05-20 22:20:50.897196090 +0000
+@@ -378,11 +378,15 @@
+ 	then \
+ 	    echo "Creating $(install_slicedir)..." ; \
+ 	    $(call mkdir, $(install_slicedir)) ; \
++	fi
++
++	@if test -d $(install_slicedir) ; \
++	then \
+ 	    cd $(top_srcdir)/../slice ; \
+ 	    for subdir in * ; \
+ 	    do \
+ 	        echo "Copying slice/$$subdir to $(install_slicedir)..." ; \
+ 	        cp -fpr $$subdir $(install_slicedir) ; \
+ 	    done ; \
+-	    fi
++	fi
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-Makefile ./files/patch-cpp-Makefile
--- ../ice.orig/files/patch-cpp-Makefile	1970-01-01 01:00:00.000000000 +0100
+++ ./files/patch-cpp-Makefile	2013-05-20 01:05:19.000000000 +0200
@@ -0,0 +1,26 @@
+--- cpp.orig/Makefile	2013-03-11 15:19:46.000000000 +0000
++++ cpp/Makefile	2013-05-19 22:06:57.713280491 +0000
+@@ -11,11 +11,22 @@
+ 
+ include $(top_srcdir)/config/Make.rules
+ 
+-SUBDIRS		= config src include test
++SUBDIRS		= config src include
++
++ifeq ($(NOTESTS),)
++SUBDIRS		:= $(SUBDIRS) test
++endif
+ 
+ ifeq ($(shell uname | grep MINGW),)
++ifeq ($(NODEMOS),)
+ SUBDIRS		:= $(SUBDIRS) demo
+ endif
++endif
++
++ifeq ($(NOPORTDOCS),)
++SUBDIRS		:= $(SUBDIRS) doc
++endif
++
+ 
+ INSTALL_SUBDIRS	= $(install_bindir) $(install_libdir) $(install_includedir) $(install_configdir)
+ 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-allTests.py ./files/patch-cpp-allTests.py
--- ../ice.orig/files/patch-cpp-allTests.py	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-allTests.py	2013-05-20 00:26:42.000000000 +0200
@@ -1,13 +1,5 @@
---- cpp.orig/allTests.py	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/allTests.py	2012-03-04 20:14:52.000000000 +0100
-@@ -25,6 +25,7 @@
- # List of all basic tests.
- #
- tests = [ 
-+
-     ("IceUtil/condvar", ["once", "win32only"]),
-     ("IceUtil/thread",  ["once"]),
-     ("IceUtil/unicode", ["once"]),
+--- cpp.orig/allTests.py	2013-03-11 15:19:58.000000000 +0000
++++ cpp/allTests.py	2013-05-19 22:25:00.000000000 +0000
 @@ -62,7 +63,7 @@
      ("Ice/servantLocator", ["core"]),
      ("Ice/interceptor", ["core"]),
@@ -22,9 +14,9 @@
  if TestUtil.isWin32() or os.getuid() == 0:
      tests += [
 -        ("IceUtil/priority", ["core", "nodarwin"]),
--        ("Ice/threadPoolPriority", ["core", "nodarwin"])
+-        ("Ice/threadPoolPriority", ["core", "nodarwin", "nomx"])
 +        ("IceUtil/priority", ["core", "nodarwin", "nofreebsd"]),
-+        ("Ice/threadPoolPriority", ["core", "nodarwin", "nofreebsd"])
++        ("Ice/threadPoolPriority", ["core", "nodarwin", "nofreebsd", "nomx"])
          ]
  
  if __name__ == "__main__":
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-config-Make.rules ./files/patch-cpp-config-Make.rules
--- ../ice.orig/files/patch-cpp-config-Make.rules	1970-01-01 01:00:00.000000000 +0100
+++ ./files/patch-cpp-config-Make.rules	2013-05-21 02:45:50.000000000 +0200
@@ -0,0 +1,13 @@
+--- cpp.orig/config/Make.rules	Fri Mar 11 16:19:00 2013
++++ cpp/config/Make.rules	Fri May 19 22:00:09 2013
+@@ -233,7 +233,9 @@
+           DB_FLAGS          = -I/usr/local/include/db53
+           DB_LIBS           = -L/usr/local/$(libsubdir)/db53 -ldb_cxx
+       else
+-        DB_LIBS      = -ldb_cxx
++        DB_FLAGS          = -I%%BDB_INCLUDE_DIR%%
++        DB_LIBS           = -L%%BDB_LIB_DIR%% -l%%BDB_LIB_CXX_NAME%%
++        DB_RPATH_LINK     = $(call rpathlink,%%BDB_LIB_DIR%%)
+       endif
+    endif
+ endif
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-demo-Freeze-customEvictor-Evictor.h ./files/patch-cpp-demo-Freeze-customEvictor-Evictor.h
--- ../ice.orig/files/patch-cpp-demo-Freeze-customEvictor-Evictor.h	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-demo-Freeze-customEvictor-Evictor.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
---- cpp.orig/demo/Freeze/customEvictor/Evictor.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/demo/Freeze/customEvictor/Evictor.h	2012-09-10 11:43:58.000000000 +0200
-@@ -66,6 +66,7 @@ class Evictor : public Ice::ServantLocator
- public:
-     
-     Evictor(CurrentDatabase&, int);
-+    virtual ~Evictor() ICE_NOEXCEPT_TRUE {};
-     
-     virtual Ice::ObjectPtr locate(const Ice::Current&, Ice::LocalObjectPtr&);
-     virtual void finished(const Ice::Current&, const Ice::ObjectPtr&, const Ice::LocalObjectPtr&);
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-demo-IceGrid-secure-README ./files/patch-cpp-demo-IceGrid-secure-README
--- ../ice.orig/files/patch-cpp-demo-IceGrid-secure-README	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-demo-IceGrid-secure-README	1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
---- cpp.orig/demo/IceGrid/secure/README	2011-06-15 21:44:00.000000000 +0200
-+++ cpp/demo/IceGrid/secure/README	2012-03-04 19:55:44.000000000 +0100
-@@ -31,9 +31,10 @@
- the filesystem permissions to restrict access to the certificate.
- 
- Once the certificates are generated, you can start the IceGrid
--registry, node, and Glacier2 router:
-+registries, node, and Glacier2 router:
- 
--$ icegridregistry --Ice.Config=config.registry
-+$ icegridregistry --Ice.Config=config.master
-+$ icegridregistry --Ice.Config=config.slave
- $ icegridnode --Ice.Config=config.node
- $ glacier2router --Ice.Config=config.glacier2
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-demo-IceGrid-secure-application.xml ./files/patch-cpp-demo-IceGrid-secure-application.xml
--- ../ice.orig/files/patch-cpp-demo-IceGrid-secure-application.xml	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-demo-IceGrid-secure-application.xml	1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
---- cpp.orig/demo/IceGrid/secure/application.xml	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/demo/IceGrid/secure/application.xml	2012-03-04 19:55:44.000000000 +0100
-@@ -20,8 +20,8 @@
-       <property name="IceSSL.DefaultDir" value="certs"/>
- 
-       <property name="Ice.Admin.Endpoints" value="ssl -h 127.0.0.1"/>
--      <property name="IceSSL.TrustOnly.Client" value="CN=IceGrid Registry"/>
--      <property name="IceSSL.TrustOnly.Server.Ice.Admin" value="CN=IceGrid Node"/>
-+      <property name="IceSSL.TrustOnly.Client" value="CN=Master;CN=Slave"/>
-+      <property name="IceSSL.TrustOnly.Server.Ice.Admin" value="CN=Node"/>
-     </properties>
- 
-     <node name="Node">
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-demo-IceGrid-secure-config.admin ./files/patch-cpp-demo-IceGrid-secure-config.admin
--- ../ice.orig/files/patch-cpp-demo-IceGrid-secure-config.admin	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-demo-IceGrid-secure-config.admin	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/demo/IceGrid/secure/config.admin	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/demo/IceGrid/secure/config.admin	2012-03-04 19:55:44.000000000 +0100
-@@ -14,7 +14,7 @@
- # SSL Configuration
- #
- IceSSL.DefaultDir=certs
--IceSSL.TrustOnly.Client=CN="IceGrid Registry";CN="Glacier2"
-+IceSSL.TrustOnly.Client=CN="Master";CN="Slave";CN="Glacier2"
- 
- # C++ configuration
- Ice.Plugin.IceSSL.cpp=IceSSL:createIceSSL
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-demo-IceGrid-secure-config.client ./files/patch-cpp-demo-IceGrid-secure-config.client
--- ../ice.orig/files/patch-cpp-demo-IceGrid-secure-config.client	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-demo-IceGrid-secure-config.client	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/demo/IceGrid/secure/config.client	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/demo/IceGrid/secure/config.client	2012-03-04 19:55:44.000000000 +0100
-@@ -1,7 +1,7 @@
- #
- # The IceGrid locator proxy.
- #
--Ice.Default.Locator=DemoIceGrid/Locator:tcp -p 4061
-+Ice.Default.Locator=DemoIceGrid/Locator:tcp -p 4061:tcp -p 14061
- 
- #
- # Trace properties.
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-demo-IceGrid-secure-config.master ./files/patch-cpp-demo-IceGrid-secure-config.master
--- ../ice.orig/files/patch-cpp-demo-IceGrid-secure-config.master	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-demo-IceGrid-secure-config.master	1970-01-01 01:00:00.000000000 +0100
@@ -1,64 +0,0 @@
---- cpp.orig/demo/IceGrid/secure/config.master	2012-03-04 19:55:44.000000000 +0100
-+++ cpp/demo/IceGrid/secure/config.master	2012-03-04 19:55:44.000000000 +0100
-@@ -0,0 +1,61 @@
-+#
-+# The IceGrid instance name.
-+#
-+IceGrid.InstanceName=DemoIceGrid
-+
-+#
-+# IceGrid registry configuration.
-+#
-+IceGrid.Registry.Client.Endpoints=tcp -p 4061 -t 10000:ssl -p 4062 -t 10000
-+IceGrid.Registry.Server.Endpoints=ssl -t 10000
-+IceGrid.Registry.Internal.Endpoints=ssl -t 10000
-+IceGrid.Registry.Data=db/master
-+
-+#
-+# Ensure that nodes and slaves connecting to this registry have a name
-+# matching the certificate CN.
-+#
-+IceGrid.Registry.RequireNodeCertCN=1
-+IceGrid.Registry.RequireReplicaCertCN=1
-+
-+#
-+# IceGrid admin clients must use a secure connection to connect to the
-+# registry or use Glacier2.
-+#
-+IceGrid.Registry.AdminSessionManager.Endpoints=ssl -t 10000
-+IceGrid.Registry.AdminPermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
-+
-+#
-+# IceGrid SQL configuration if using SQL database.
-+#
-+#Ice.Plugin.DB=IceGridSqlDB:createSqlDB
-+#IceGrid.SQL.DatabaseType=QSQLITE
-+#IceGrid.SQL.DatabaseName=db/master/Registry.db
-+
-+#
-+# Trace properties.
-+#
-+Ice.ProgramName=Master
-+IceGrid.Registry.Trace.Node=2
-+IceGrid.Registry.Trace.Replica=2
-+
-+#
-+# SSL Configuration
-+#
-+Ice.Plugin.IceSSL=IceSSL:createIceSSL
-+IceSSL.DefaultDir=certs
-+IceSSL.CertAuthFile=ca_cert.pem
-+IceSSL.CertFile=master_cert.pem
-+IceSSL.KeyFile=master_key.pem
-+
-+#
-+# Don't require certificates. This is useful for admin clients that don't
-+# use certificate but still need to establish a secure connection for the
-+# username/password authentication
-+#
-+IceSSL.VerifyPeer=1
-+
-+IceSSL.TrustOnly.Client=CN="Master";CN="Slave";CN="Node";CN="Glacier2"
-+IceSSL.TrustOnly.Server.IceGrid.Registry.Server=CN="Server"
-+IceSSL.TrustOnly.Server.IceGrid.Registry.Internal=CN="Node";CN="Master";CN="Slave"
-+IceSSL.TrustOnly.Server.IceGrid.Registry.AdminSessionManager=CN="Glacier2"
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-demo-IceGrid-secure-config.node ./files/patch-cpp-demo-IceGrid-secure-config.node
--- ../ice.orig/files/patch-cpp-demo-IceGrid-secure-config.node	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-demo-IceGrid-secure-config.node	1970-01-01 01:00:00.000000000 +0100
@@ -1,19 +0,0 @@
---- cpp.orig/demo/IceGrid/secure/config.node	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/demo/IceGrid/secure/config.node	2012-03-04 19:55:44.000000000 +0100
-@@ -1,7 +1,7 @@
- #
- # The IceGrid locator proxy.
- #
--Ice.Default.Locator=DemoIceGrid/Locator:ssl -p 4062 -t 10000
-+Ice.Default.Locator=DemoIceGrid/Locator:ssl -p 4062 -t 10000:ssl -p 14062 -t 10000
- 
- #
- # IceGrid node configuration.
-@@ -26,5 +26,5 @@
- IceSSL.CertFile=node_cert.pem
- IceSSL.KeyFile=node_key.pem
- 
--IceSSL.TrustOnly.Client=CN="Server";CN="IceGrid Registry"
--IceSSL.TrustOnly.Server=CN="IceGrid Registry"
-+IceSSL.TrustOnly.Client=CN="Server";CN="Master";CN="Slave"
-+IceSSL.TrustOnly.Server=CN="Master";CN="Slave"
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-demo-IceGrid-secure-config.registry ./files/patch-cpp-demo-IceGrid-secure-config.registry
--- ../ice.orig/files/patch-cpp-demo-IceGrid-secure-config.registry	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-demo-IceGrid-secure-config.registry	1970-01-01 01:00:00.000000000 +0100
@@ -1,57 +0,0 @@
---- cpp.orig/demo/IceGrid/secure/config.registry	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/demo/IceGrid/secure/config.registry	2012-03-04 19:55:44.000000000 +0100
-@@ -1,54 +0,0 @@
--#
--# The IceGrid instance name.
--#
--IceGrid.InstanceName=DemoIceGrid
--
--#
--# IceGrid registry configuration.
--#
--IceGrid.Registry.Client.Endpoints=tcp -p 4061 -t 10000:ssl -p 4062 -t 10000
--IceGrid.Registry.Server.Endpoints=ssl -t 10000
--IceGrid.Registry.Internal.Endpoints=ssl -t 10000
--IceGrid.Registry.Data=db/registry
--
--#
--# IceGrid admin clients must use a secure connection to connect to the
--# registry or use Glacier2.
--#
--IceGrid.Registry.AdminSessionManager.Endpoints=ssl -t 10000
--IceGrid.Registry.AdminPermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
--
--#
--# IceGrid SQL configuration if using SQL database.
--#
--#Ice.Plugin.DB=IceGridSqlDB:createSqlDB
--#IceGrid.SQL.DatabaseType=QSQLITE
--#IceGrid.SQL.DatabaseName=db/registry/Registry.db
--
--#
--# Trace properties.
--#
--Ice.ProgramName=Registry
--IceGrid.Registry.Trace.Node=2
--IceGrid.Registry.Trace.Replica=2
--
--#
--# SSL Configuration
--#
--Ice.Plugin.IceSSL=IceSSL:createIceSSL
--IceSSL.DefaultDir=certs
--IceSSL.CertAuthFile=ca_cert.pem
--IceSSL.CertFile=registry_cert.pem
--IceSSL.KeyFile=registry_key.pem
--
--#
--# Don't require certificates. This is useful for admin clients that don't
--# use certificate but still need to establish a secure connection for the
--# username/password authentication
--#
--IceSSL.VerifyPeer=1
--
--IceSSL.TrustOnly.Client=CN="IceGrid Registry";CN="IceGrid Node";CN="Glacier2"
--IceSSL.TrustOnly.Server.IceGrid.Registry.Server=CN="Server"
--IceSSL.TrustOnly.Server.IceGrid.Registry.Internal=CN="IceGrid Node";CN="IceGrid Registry"
--IceSSL.TrustOnly.Server.IceGrid.Registry.AdminSessionManager=CN="Glacier2"
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-demo-IceGrid-secure-config.slave ./files/patch-cpp-demo-IceGrid-secure-config.slave
--- ../ice.orig/files/patch-cpp-demo-IceGrid-secure-config.slave	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-demo-IceGrid-secure-config.slave	1970-01-01 01:00:00.000000000 +0100
@@ -1,69 +0,0 @@
---- cpp.orig/demo/IceGrid/secure/config.slave	2012-03-04 19:55:44.000000000 +0100
-+++ cpp/demo/IceGrid/secure/config.slave	2012-03-04 19:55:44.000000000 +0100
-@@ -0,0 +1,66 @@
-+#
-+# The IceGrid locator proxy.
-+#
-+Ice.Default.Locator=DemoIceGrid/Locator:ssl -p 4062 -t 10000
-+
-+#
-+# The IceGrid instance name.
-+#
-+IceGrid.InstanceName=DemoIceGrid
-+
-+#
-+# IceGrid registry configuration.
-+#
-+IceGrid.Registry.Client.Endpoints=tcp -p 14061 -t 10000:ssl -p 14062 -t 10000
-+IceGrid.Registry.Server.Endpoints=ssl -t 10000
-+IceGrid.Registry.Internal.Endpoints=ssl -t 10000
-+IceGrid.Registry.Data=db/slave
-+IceGrid.Registry.ReplicaName=Slave
-+
-+#
-+# Ensure that nodes connecting to this registry have a name matching
-+# the certificate CN.
-+#
-+IceGrid.Registry.RequireNodeCertCN=1
-+
-+#
-+# IceGrid admin clients must use a secure connection to connect to the
-+# registry or use Glacier2.
-+#
-+IceGrid.Registry.AdminSessionManager.Endpoints=ssl -t 10000
-+IceGrid.Registry.AdminPermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
-+
-+#
-+# IceGrid SQL configuration if using SQL database.
-+#
-+#Ice.Plugin.DB=IceGridSqlDB:createSqlDB
-+#IceGrid.SQL.DatabaseType=QSQLITE
-+#IceGrid.SQL.DatabaseName=db/slave/Registry.db
-+
-+#
-+# Trace properties.
-+#
-+Ice.ProgramName=Slave
-+IceGrid.Registry.Trace.Node=2
-+IceGrid.Registry.Trace.Replica=2
-+
-+#
-+# SSL Configuration
-+#
-+Ice.Plugin.IceSSL=IceSSL:createIceSSL
-+IceSSL.DefaultDir=certs
-+IceSSL.CertAuthFile=ca_cert.pem
-+IceSSL.CertFile=slave_cert.pem
-+IceSSL.KeyFile=slave_key.pem
-+
-+#
-+# Don't require certificates. This is useful for admin clients that don't
-+# use certificate but still need to establish a secure connection for the
-+# username/password authentication
-+#
-+IceSSL.VerifyPeer=1
-+
-+IceSSL.TrustOnly.Client=CN="Master";CN="Slave";CN="Node";CN="Glacier2"
-+IceSSL.TrustOnly.Server.IceGrid.Registry.Server=CN="Server"
-+IceSSL.TrustOnly.Server.IceGrid.Registry.Internal=CN="Node";CN="Master";CN="Slave"
-+IceSSL.TrustOnly.Server.IceGrid.Registry.AdminSessionManager=CN="Glacier2"
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-demo-IceGrid-secure-makecerts.py ./files/patch-cpp-demo-IceGrid-secure-makecerts.py
--- ../ice.orig/files/patch-cpp-demo-IceGrid-secure-makecerts.py	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-demo-IceGrid-secure-makecerts.py	1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
---- cpp.orig/demo/IceGrid/secure/makecerts.py	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/demo/IceGrid/secure/makecerts.py	2012-03-04 19:55:44.000000000 +0100
-@@ -44,8 +44,9 @@
- print
- print
- 
--createCertificate("registry", "IceGrid Registry")
--createCertificate("node", "IceGrid Node")
-+createCertificate("master", "Master")
-+createCertificate("slave", "Slave")
-+createCertificate("node", "Node")
- createCertificate("glacier2", "Glacier2")
- createCertificate("server", "Server")
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-Freeze-Map.h ./files/patch-cpp-include-Freeze-Map.h
--- ../ice.orig/files/patch-cpp-include-Freeze-Map.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-include-Freeze-Map.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/include/Freeze/Map.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Freeze/Map.h	2012-03-04 20:14:52.000000000 +0100
-@@ -426,7 +426,7 @@
- 
-     ConstIterator(MapHelper& mapHelper, const Ice::CommunicatorPtr& communicator) :
-         _helper(IteratorHelper::create(mapHelper, true)), 
--        _communicator(_communicator),
-+        _communicator(communicator),
-         _refValid(false)
-     {
-     }
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-Ice-Buffer.h ./files/patch-cpp-include-Ice-Buffer.h
--- ../ice.orig/files/patch-cpp-include-Ice-Buffer.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-include-Ice-Buffer.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
---- cpp.orig/include/Ice/Buffer.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Ice/Buffer.h	2012-03-04 20:14:52.000000000 +0100
-@@ -10,6 +10,7 @@
- #ifndef ICEE_BUFFER_H
- #define ICEE_BUFFER_H
- 
-+#include <cstddef>
- #include <Ice/Config.h>
- 
- namespace IceInternal
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-Ice-ConnectionIF.h ./files/patch-cpp-include-Ice-ConnectionIF.h
--- ../ice.orig/files/patch-cpp-include-Ice-ConnectionIF.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-include-Ice-ConnectionIF.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
---- cpp.orig/include/Ice/ConnectionIF.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Ice/ConnectionIF.h	2012-03-04 20:14:52.000000000 +0100
-@@ -17,13 +17,13 @@
- {
- 
- class ConnectionI;
-+ICE_API Ice::LocalObject* upCast(Ice::ConnectionI*);
- 
- }
- 
- namespace IceInternal
- {
- 
--ICE_API Ice::LocalObject* upCast(Ice::ConnectionI*);
- 
- enum AsyncStatus
- {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-Ice-IconvStringConverter.h ./files/patch-cpp-include-Ice-IconvStringConverter.h
--- ../ice.orig/files/patch-cpp-include-Ice-IconvStringConverter.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-include-Ice-IconvStringConverter.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
---- cpp.orig/include/Ice/IconvStringConverter.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Ice/IconvStringConverter.h	2012-03-04 20:14:52.000000000 +0100
-@@ -225,10 +225,16 @@
- template<typename charT> /*static*/ void
- IconvStringConverter<charT>::close(std::pair<iconv_t, iconv_t> cdp)
- {
--    int rs = iconv_close(cdp.first);
-+#ifndef NDEBUG
-+    int rs = 
-+#endif
-+    iconv_close(cdp.first);
-     assert(rs == 0);
- 
--    rs = iconv_close(cdp.second);
-+#ifndef NDEBUG
-+    rs = 
-+#endif
-+    iconv_close(cdp.second);
-     assert(rs == 0);
- }
-  
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-Ice-IncomingAsyncF.h ./files/patch-cpp-include-Ice-IncomingAsyncF.h
--- ../ice.orig/files/patch-cpp-include-Ice-IncomingAsyncF.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-include-Ice-IncomingAsyncF.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
---- cpp.orig/include/Ice/IncomingAsyncF.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Ice/IncomingAsyncF.h	2012-03-04 20:14:52.000000000 +0100
-@@ -28,12 +28,6 @@
- 
- class AMD_Object_ice_invoke;
- class AMD_Array_Object_ice_invoke;
--
--}
--
--namespace IceInternal
--{
--
- ICE_API IceUtil::Shared* upCast(::Ice::AMD_Object_ice_invoke*);
- ICE_API IceUtil::Shared* upCast(::Ice::AMD_Array_Object_ice_invoke*);
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-Ice-LocalObjectF.h ./files/patch-cpp-include-Ice-LocalObjectF.h
--- ../ice.orig/files/patch-cpp-include-Ice-LocalObjectF.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-include-Ice-LocalObjectF.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
---- cpp.orig/include/Ice/LocalObjectF.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Ice/LocalObjectF.h	2012-03-04 20:14:52.000000000 +0100
-@@ -18,12 +18,6 @@
- {
- 
- class LocalObject;
--
--}
--
--namespace IceInternal
--{
--
- ICE_API IceUtil::Shared* upCast(::Ice::LocalObject*);
- 
- }
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-Ice-ObjectF.h ./files/patch-cpp-include-Ice-ObjectF.h
--- ../ice.orig/files/patch-cpp-include-Ice-ObjectF.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-include-Ice-ObjectF.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,22 +0,0 @@
---- cpp.orig/include/Ice/ObjectF.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Ice/ObjectF.h	2012-03-04 20:14:52.000000000 +0100
-@@ -17,19 +17,8 @@
- {
- 
- class Object;
--
--}
--
--namespace IceInternal
--{
--
- ICE_API IceUtil::Shared* upCast(::Ice::Object*);
- 
--}
--
--namespace Ice
--{
--
- typedef IceInternal::Handle< Object > ObjectPtr;
- 
- void ICE_API __patch__ObjectPtr(void*, ObjectPtr&);
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-Ice-OutgoingAsyncF.h ./files/patch-cpp-include-Ice-OutgoingAsyncF.h
--- ../ice.orig/files/patch-cpp-include-Ice-OutgoingAsyncF.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-include-Ice-OutgoingAsyncF.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
---- cpp.orig/include/Ice/OutgoingAsyncF.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Ice/OutgoingAsyncF.h	2012-03-04 20:14:52.000000000 +0100
-@@ -19,13 +19,13 @@
- 
- class AsyncResult;
- typedef IceInternal::Handle<AsyncResult> AsyncResultPtr;
-+ICE_API IceUtil::Shared* upCast(::Ice::AsyncResult*);
- 
- }
- 
- namespace IceInternal
- {
- 
--ICE_API IceUtil::Shared* upCast(::Ice::AsyncResult*);
- 
- class OutgoingAsync;
- ICE_API IceUtil::Shared* upCast(OutgoingAsync*);
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-Ice-Proxy.h ./files/patch-cpp-include-Ice-Proxy.h
--- ../ice.orig/files/patch-cpp-include-Ice-Proxy.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-include-Ice-Proxy.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,56 +0,0 @@
---- cpp.orig/include/Ice/Proxy.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Ice/Proxy.h	2012-03-04 20:14:52.000000000 +0100
-@@ -38,6 +38,8 @@
- 
- class Locator;
- class Router;
-+ICE_API ::IceProxy::Ice::Object* upCast(::IceProxy::Ice::Locator*);
-+ICE_API ::IceProxy::Ice::Object* upCast(::IceProxy::Ice::Router*);
- 
- }
- 
-@@ -46,8 +48,6 @@
- namespace IceInternal
- {
- 
--ICE_API ::IceProxy::Ice::Object* upCast(::IceProxy::Ice::Locator*);
--ICE_API ::IceProxy::Ice::Object* upCast(::IceProxy::Ice::Router*);
- 
- class LocalExceptionWrapper;
- 
-@@ -1172,7 +1172,7 @@
- 
-     TwowayCallbackNC(const TPtr& instance, bool cb, Exception excb, Sent sentcb) : CallbackNC<T>(instance, excb, sentcb)
-     {
--        checkCallback(instance, cb || excb != 0);
-+        this->checkCallback(instance, cb || excb != 0);
-     }
- };
- 
-@@ -1188,7 +1188,7 @@
- 
-     TwowayCallback(const TPtr& instance, bool cb, Exception excb, Sent sentcb) : Callback<T, CT>(instance, excb, sentcb)
-     {
--        checkCallback(instance, cb || excb != 0);
-+        this->checkCallback(instance, cb || excb != 0);
-     }
- };
- 
-@@ -1209,7 +1209,7 @@
-     OnewayCallbackNC(const TPtr& instance, Response cb, Exception excb, Sent sentcb) : 
-         CallbackNC<T>(instance, excb, sentcb), response(cb)
-     {
--        checkCallback(instance, cb != 0 || excb != 0);
-+        this->checkCallback(instance, cb != 0 || excb != 0);
-     }
- 
-     virtual void __completed(const ::Ice::AsyncResultPtr& result) const
-@@ -1254,7 +1254,7 @@
-     OnewayCallback(const TPtr& instance, Response cb, Exception excb, Sent sentcb) : 
-         Callback<T, CT>(instance, excb, sentcb),  response(cb)
-     {
--        checkCallback(instance, cb != 0 || excb != 0);
-+        this->checkCallback(instance, cb != 0 || excb != 0);
-     }
- 
-     virtual void __completed(const ::Ice::AsyncResultPtr& result) const
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-Ice-ProxyF.h ./files/patch-cpp-include-Ice-ProxyF.h
--- ../ice.orig/files/patch-cpp-include-Ice-ProxyF.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-include-Ice-ProxyF.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,76 +0,0 @@
---- cpp.orig/include/Ice/ProxyF.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Ice/ProxyF.h	2012-03-04 20:14:52.000000000 +0100
-@@ -22,6 +22,11 @@
- {
- 
- class Object;
-+inline ::IceProxy::Ice::Object* 
-+upCast(::IceProxy::Ice::Object* o)
-+{
-+    return o;
-+}
- 
- }
- 
-@@ -34,6 +39,11 @@
- {
- 
- class Object;
-+inline ::IceDelegate::Ice::Object*
-+upCast(::IceDelegate::Ice::Object* o)
-+{
-+    return o;
-+}
- 
- }
- 
-@@ -47,6 +57,12 @@
- 
- class Object;
- 
-+inline ::IceDelegateM::Ice::Object*
-+upCast(::IceDelegateM::Ice::Object* o)
-+{
-+    return o;
-+}
-+
- }
- 
- }
-@@ -58,36 +74,12 @@
- {
- 
- class Object;
--
--}
--
--}
--
--namespace IceInternal
--{
--
--inline ::IceProxy::Ice::Object* 
--upCast(::IceProxy::Ice::Object* o)
--{
--    return o;
--}
--
--inline ::IceDelegate::Ice::Object*
--upCast(::IceDelegate::Ice::Object* o)
--{
--    return o;
--}
--
- inline ::IceDelegateD::Ice::Object*
- upCast(::IceDelegateD::Ice::Object* o)
- {
-     return o;
- }
- 
--inline ::IceDelegateM::Ice::Object*
--upCast(::IceDelegateM::Ice::Object* o)
--{
--    return o;
- }
- 
- }
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-Ice-Stream.h ./files/patch-cpp-include-Ice-Stream.h
--- ../ice.orig/files/patch-cpp-include-Ice-Stream.h	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-include-Ice-Stream.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,90 +0,0 @@
---- cpp.orig/include/Ice/Stream.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Ice/Stream.h	2012-03-04 20:14:52.000000000 +0100
-@@ -17,6 +17,12 @@
- #include <Ice/Proxy.h>
- #include <IceUtil/Shared.h>
- 
-+namespace IceInternal
-+{
-+    // Forward declaration required for writer specializations.
-+    void delegateThrowMarshalException(const char*, int, const ::std::string&);
-+}
-+
- namespace Ice
- {
-     
-@@ -45,9 +51,6 @@
-     StreamTraitTypeUnknown
- };
- 
--// Forward declaration required for writer specializations.
--class MarshalException;
--
- //
- // Base trait template. This doesn't actually do anything -- we just
- // use it as a template that we can specialize.
-@@ -542,7 +545,7 @@
-     {
-         if(static_cast<int>(v) < 0 || static_cast<int>(v) >= StreamTrait<T>::enumLimit)
-         {
--            throw MarshalException(__FILE__, __LINE__, "enumerator out of range");
-+            IceInternal::delegateThrowMarshalException(__FILE__, __LINE__, "enumerator out of range");
-         }
-         outS->write(static_cast<Byte>(v));
-     }
-@@ -558,7 +561,7 @@
-         inS->read(val);
-         if(val > StreamTrait<T>::enumLimit)
-         {
--            throw MarshalException(__FILE__, __LINE__, "enumerator out of range");
-+            IceInternal::delegateThrowMarshalException(__FILE__, __LINE__, "enumerator out of range");
-         }
-         v = static_cast<T>(val);
-     }
-@@ -573,7 +576,7 @@
-     {
-         if(static_cast<int>(v) < 0 || static_cast<int>(v) >= StreamTrait<T>::enumLimit)
-         {
--            throw MarshalException(__FILE__, __LINE__, "enumerator out of range");
-+            IceInternal::delegateThrowMarshalException(__FILE__, __LINE__, "enumerator out of range");
-         }
-         outS->write(static_cast<Short>(v));
-     }
-@@ -589,7 +592,7 @@
-         inS->read(val);
-         if(val < 0 || val > StreamTrait<T>::enumLimit)
-         {
--            throw MarshalException(__FILE__, __LINE__, "enumerator out of range");
-+            IceInternal::delegateThrowMarshalException(__FILE__, __LINE__, "enumerator out of range");
-         }
-         v = static_cast<T>(val);
-     }
-@@ -603,7 +606,7 @@
-     {
-         if(static_cast<int>(v) < 0 || static_cast<int>(v) >= StreamTrait<T>::enumLimit)
-         {
--            throw MarshalException(__FILE__, __LINE__, "enumerator out of range");
-+            IceInternal::delegateThrowMarshalException(__FILE__, __LINE__, "enumerator out of range");
-         }
-         outS->write(static_cast<Int>(v));
-     }
-@@ -619,7 +622,7 @@
-         inS->read(val);
-         if(val < 0 || val > StreamTrait<T>::enumLimit)
-         {
--            throw MarshalException(__FILE__, __LINE__, "enumerator out of range");
-+            IceInternal::delegateThrowMarshalException(__FILE__, __LINE__, "enumerator out of range");
-         }
-         v = static_cast<T>(val);
-     }
---- cpp.orig/include/Ice/Stream.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Ice/Stream.h	2012-09-10 11:43:58.000000000 +0200
-@@ -664,7 +664,7 @@ struct StreamWriter<StreamTraitTypeSequenceBool>
-         outS->writeSize(static_cast<Int>(v.size()));
-         for(typename T::const_iterator p = v.begin(); p != v.end(); ++p)
-         {
--            outS->write(*p);
-+            outS->write(static_cast<bool>(*p));
-         }
-     }
- };
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-Ice-StreamF.h ./files/patch-cpp-include-Ice-StreamF.h
--- ../ice.orig/files/patch-cpp-include-Ice-StreamF.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-include-Ice-StreamF.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
---- cpp.orig/include/Ice/StreamF.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/Ice/StreamF.h	2012-03-04 20:14:52.000000000 +0100
-@@ -19,12 +19,6 @@
- 
- class InputStream;
- class OutputStream;
--
--}
--
--namespace IceInternal
--{
--
- ICE_API IceUtil::Shared* upCast(::Ice::InputStream*);
- ICE_API IceUtil::Shared* upCast(::Ice::OutputStream*);
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-IceUtil-Cache.h ./files/patch-cpp-include-IceUtil-Cache.h
--- ../ice.orig/files/patch-cpp-include-IceUtil-Cache.h	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-include-IceUtil-Cache.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
---- cpp.orig/include/IceUtil/Cache.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/IceUtil/Cache.h	2012-09-10 11:43:58.000000000 +0200
-@@ -77,6 +77,6 @@ protected:
-     {
-     }
-     
--    virtual ~Cache()
-+    virtual ~Cache() ICE_NOEXCEPT_FALSE
-     {
-     }
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-IceUtil-Config.h ./files/patch-cpp-include-IceUtil-Config.h
--- ../ice.orig/files/patch-cpp-include-IceUtil-Config.h	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-include-IceUtil-Config.h	2013-05-20 04:19:22.000000000 +0200
@@ -1,19 +1,11 @@
---- cpp.orig/include/IceUtil/Config.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/IceUtil/Config.h	2012-09-10 11:43:58.000000000 +0200
-@@ -248,3 +248,16 @@ public:
- #define ICE_DEFAULT_MUTEX_PROTOCOL PrioNone
- 
+--- cpp.orig/include/IceUtil/Config.h	2013-03-11 15:19:46.000000000 +0000
++++ cpp/include/IceUtil/Config.h	2013-05-20 02:09:58.239194578 +0000
+@@ -51,7 +51,7 @@
+ // Check for C++ 11 support
+ //
+ #if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \
+-    (defined(__clang__) && (__clang_major__ >= 4) && __cplusplus >= 201103) || \
++    (defined(__clang__) && ((defined(__APPLE__) && __clang_major__ >= 4) || (!defined(__APPLE__) && __clang_major__ >= 3)) && __cplusplus >= 201103) || \
+     (defined(_MSC_VER) && (_MSC_VER >= 1600))
+ #   define ICE_CPP11
  #endif
-+
-+
-+//
-+// Macro used for declaring destructors that might throw - required for C++11
-+//
-+#if __cplusplus >= 201103L
-+#define ICE_DESTRUCTORS_DONT_THROW_BY_DEFAULT
-+#define ICE_NOEXCEPT_FALSE noexcept(false)
-+#define ICE_NOEXCEPT_TRUE noexcept(true)
-+#else
-+#define ICE_NOEXCEPT_FALSE
-+#define ICE_NOEXCEPT_TRUE
-+#endif
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-IceUtil-Mutex.h ./files/patch-cpp-include-IceUtil-Mutex.h
--- ../ice.orig/files/patch-cpp-include-IceUtil-Mutex.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-include-IceUtil-Mutex.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
---- cpp.orig/include/IceUtil/Mutex.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/IceUtil/Mutex.h	2012-03-04 20:14:52.000000000 +0100
-@@ -251,8 +251,11 @@
- inline
- Mutex::~Mutex()
- {
-+#ifndef NDEBUG
-     int rc = 0;
--    rc = pthread_mutex_destroy(&_mutex);
-+    rc = 
-+#endif    
-+    pthread_mutex_destroy(&_mutex);
-     assert(rc == 0);
- }
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-include-IceUtil-Shared.h ./files/patch-cpp-include-IceUtil-Shared.h
--- ../ice.orig/files/patch-cpp-include-IceUtil-Shared.h	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-include-IceUtil-Shared.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,72 +0,0 @@
---- cpp.orig/include/IceUtil/Shared.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/include/IceUtil/Shared.h	2012-09-10 11:43:58.000000000 +0200
-@@ -50,6 +50,11 @@
- //
- // A non thread-safe base class for reference-counted types.
- //
-+// IceUtil::SimpleSharedUnsafeDestructor
-+// =====================
-+//
-+// A non thread-safe base class for reference-counted types - destructor might throw.
-+//
- // IceUtil::Shared
- // ===============
- //
-@@ -109,6 +114,57 @@ private:
-     bool _noDelete;
- };
- 
-+class ICE_UTIL_API SimpleSharedUnsafeDestructor
-+{
-+public:
-+
-+    SimpleSharedUnsafeDestructor();
-+    SimpleSharedUnsafeDestructor(const SimpleSharedUnsafeDestructor&);
-+
-+    virtual ~SimpleSharedUnsafeDestructor() ICE_NOEXCEPT_FALSE
-+    {
-+    }
-+
-+    SimpleSharedUnsafeDestructor& operator=(const SimpleSharedUnsafeDestructor&)
-+    {
-+        return *this;
-+    }
-+
-+    void __incRef()
-+    {
-+        assert(_ref >= 0);
-+        ++_ref;
-+    }
-+
-+    void __decRef()
-+    {
-+        assert(_ref > 0);
-+        if(--_ref == 0)
-+        {
-+            if(!_noDelete)
-+            {
-+                _noDelete = true;
-+                delete this;
-+            }
-+        }
-+    }
-+
-+    int __getRef() const
-+    {
-+        return _ref;
-+    }
-+
-+    void __setNoDelete(bool b)
-+    {
-+        _noDelete = b;
-+    }
-+
-+private:
-+
-+    int _ref;
-+    bool _noDelete;
-+};
-+
- class ICE_UTIL_API Shared
- {
- public:
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Freeze-MapDb.cpp ./files/patch-cpp-src-Freeze-MapDb.cpp
--- ../ice.orig/files/patch-cpp-src-Freeze-MapDb.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-Freeze-MapDb.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,29 +0,0 @@
---- cpp.orig/src/Freeze/MapDb.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Freeze/MapDb.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -72,7 +72,13 @@ Freeze::MapDb::~MapDb()
-         }
-         catch(const ::DbException& dx)
-         {
-+#if defined(ICE_DESTRUCTORS_DONT_THROW_BY_DEFAULT)
-+            Error out(_communicator->getLogger());
-+            out << "DbException while closing database " << _dbName << ": "
-+                << dx.what();
-+#else
-             throw DatabaseException(__FILE__, __LINE__, dx.what());
-+#endif
-         }
-     }
- }
-@@ -229,7 +229,11 @@
- #ifndef NDEBUG
-                 bool inserted = 
- #endif
--                    _indices.insert(IndexMap::value_type(indexBase->name(), indexI.get())).second;
-+                    _indices.insert(IndexMap::value_type(indexBase->name(), indexI.get()))
-+#ifndef NDEBUG                    
-+                    .second
-+#endif
-+                ;
-                 assert(inserted);
-                 
-                 indexBase->_impl = indexI.release();
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Freeze-MapI.cpp ./files/patch-cpp-src-Freeze-MapI.cpp
--- ../ice.orig/files/patch-cpp-src-Freeze-MapI.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Freeze-MapI.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,41 +0,0 @@
---- cpp.orig/src/Freeze/MapI.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Freeze/MapI.cpp	2012-03-04 20:14:52.000000000 +0100
-@@ -749,8 +749,11 @@
- 
-     try
-     {
-+#ifndef NDEBUG
-         int err;
--        err = _dbc->put(&dbKey, &dbValue, DB_CURRENT);
-+        err = 
-+#endif
-+        _dbc->put(&dbKey, &dbValue, DB_CURRENT);
-         assert(err == 0);
-     }
-     catch(const ::DbDeadlockException& dx)
-@@ -1023,7 +1026,11 @@
- #ifndef NDEBUG
-         bool inserted =
- #endif 
--            _indices.insert(IndexMap::value_type(indexBase->name(), indexBase)).second;
-+            _indices.insert(IndexMap::value_type(indexBase->name(), indexBase))
-+#ifndef NDEBUG
-+            .second
-+#endif
-+            ;
-         assert(inserted);
-         indexBase->_map = this;
-     }
-@@ -1360,8 +1367,11 @@
-         try
-         {
-             u_int32_t count;
-+#ifndef NDEBUG
-             int err;
--            err = _db->truncate(txn, &count, txn != 0 ? 0 : DB_AUTO_COMMIT);
-+            err = 
-+#endif            
-+            _db->truncate(txn, &count, txn != 0 ? 0 : DB_AUTO_COMMIT);
-             assert(err == 0);
-             break;
-         }
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Freeze-MapI.h ./files/patch-cpp-src-Freeze-MapI.h
--- ../ice.orig/files/patch-cpp-src-Freeze-MapI.h	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-Freeze-MapI.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,18 +0,0 @@
---- cpp.orig/src/Freeze/MapI.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Freeze/MapI.h	2012-09-10 11:43:58.000000000 +0200
-@@ -63,12 +63,13 @@ public:
-     void
-     close();
- 
--    class Tx : public IceUtil::SimpleShared
-+    class Tx : public IceUtil::SimpleSharedUnsafeDestructor
-     {
-     public:
- 
-         Tx(const MapHelperI&);
--        ~Tx();
-+        ~Tx() ICE_NOEXCEPT_FALSE;
-+        ;
- 
-         void dead();
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Freeze-ObjectStore.cpp ./files/patch-cpp-src-Freeze-ObjectStore.cpp
--- ../ice.orig/files/patch-cpp-src-Freeze-ObjectStore.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-Freeze-ObjectStore.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/Freeze/ObjectStore.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Freeze/ObjectStore.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -189,7 +189,7 @@ Freeze::ObjectStoreBase::ObjectStoreBase(const string& facet, const string& face
-     }
- }
- 
--Freeze::ObjectStoreBase::~ObjectStoreBase()
-+Freeze::ObjectStoreBase::~ObjectStoreBase() ICE_NOEXCEPT_FALSE
- {
-     try
-     {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Freeze-ObjectStore.h ./files/patch-cpp-src-Freeze-ObjectStore.h
--- ../ice.orig/files/patch-cpp-src-Freeze-ObjectStore.h	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-Freeze-ObjectStore.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/Freeze/ObjectStore.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Freeze/ObjectStore.h	2012-09-10 11:43:58.000000000 +0200
-@@ -36,7 +36,7 @@ public:
-     ObjectStoreBase(const std::string&, const std::string&, bool, EvictorIBase*, 
-                     const std::vector<IndexPtr>&, bool);
- 
--    virtual ~ObjectStoreBase();
-+    virtual ~ObjectStoreBase() ICE_NOEXCEPT_FALSE;
- 
-     const Ice::ObjectPtr& sampleServant() const;
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Freeze-SharedDbEnv.cpp ./files/patch-cpp-src-Freeze-SharedDbEnv.cpp
--- ../ice.orig/files/patch-cpp-src-Freeze-SharedDbEnv.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Freeze-SharedDbEnv.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
---- cpp.orig/src/Freeze/SharedDbEnv.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Freeze/SharedDbEnv.cpp	2012-03-04 20:14:52.000000000 +0100
-@@ -336,8 +336,11 @@
-         // Remove from map
-         //
-      
-+#ifndef NDEBUG
-         size_t one;
--        one = sharedDbEnvMap->erase(key);
-+        one = 
-+#endif
-+        sharedDbEnvMap->erase(key);
-         assert(one == 1);
- 
-         if(sharedDbEnvMap->size() == 0)
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Freeze-TransactionalEvictorContext.cpp ./files/patch-cpp-src-Freeze-TransactionalEvictorContext.cpp
--- ../ice.orig/files/patch-cpp-src-Freeze-TransactionalEvictorContext.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-Freeze-TransactionalEvictorContext.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/Freeze/TransactionalEvictorContext.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Freeze/TransactionalEvictorContext.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -273,7 +273,7 @@ Freeze::TransactionalEvictorContext::ServantHolder::ServantHolder() :
- }
- 
- 
--Freeze::TransactionalEvictorContext::ServantHolder::~ServantHolder()
-+Freeze::TransactionalEvictorContext::ServantHolder::~ServantHolder() ICE_NOEXCEPT_FALSE
- {
-     if(_ownBody && _body.ownServant)
-     {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Freeze-TransactionalEvictorContext.h ./files/patch-cpp-src-Freeze-TransactionalEvictorContext.h
--- ../ice.orig/files/patch-cpp-src-Freeze-TransactionalEvictorContext.h	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-Freeze-TransactionalEvictorContext.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/Freeze/TransactionalEvictorContext.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Freeze/TransactionalEvictorContext.h	2012-09-10 11:43:58.000000000 +0200
-@@ -34,7 +34,7 @@ public:
-     public:
-         
-         ServantHolder();
--        ~ServantHolder();
-+        ~ServantHolder() ICE_NOEXCEPT_FALSE;
- 
-         void init(const TransactionalEvictorContextPtr&, const Ice::Current&, ObjectStore<TransactionalEvictorElement>*);
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Freeze-TransactionalEvictorI.cpp ./files/patch-cpp-src-Freeze-TransactionalEvictorI.cpp
--- ../ice.orig/files/patch-cpp-src-Freeze-TransactionalEvictorI.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-Freeze-TransactionalEvictorI.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/Freeze/TransactionalEvictorI.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Freeze/TransactionalEvictorI.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -346,7 +346,7 @@ Freeze::TransactionalEvictorI::dispatch(Request& request)
-         {
-         }
-         
--        ~CtxHolder()
-+        ~CtxHolder() ICE_NOEXCEPT_FALSE
-         {
-             if(_ownCtx)
-             {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Glacier2-Blobject.cpp ./files/patch-cpp-src-Glacier2-Blobject.cpp
--- ../ice.orig/files/patch-cpp-src-Glacier2-Blobject.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Glacier2-Blobject.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,18 +0,0 @@
---- cpp.orig/src/Glacier2/Blobject.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Glacier2/Blobject.cpp	2012-03-04 19:39:27.000000000 +0100
-@@ -171,6 +171,15 @@
- }
- 
- void
-+Glacier2::Blobject::destroy()
-+{
-+    if(_requestQueue)
-+    {
-+        _requestQueue->destroy();
-+    }
-+}
-+
-+void
- Glacier2::Blobject::invoke(ObjectPrx& proxy, const AMD_Object_ice_invokePtr& amdCB, 
-                            const std::pair<const Ice::Byte*, const Ice::Byte*>& inParams, const Current& current)
- {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Glacier2-Blobject.h ./files/patch-cpp-src-Glacier2-Blobject.h
--- ../ice.orig/files/patch-cpp-src-Glacier2-Blobject.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Glacier2-Blobject.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/Glacier2/Blobject.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Glacier2/Blobject.h	2012-03-04 19:39:27.000000000 +0100
-@@ -24,6 +24,8 @@
-     Blobject(const InstancePtr&, const Ice::ConnectionPtr&, const Ice::Context&);
-     virtual ~Blobject();
- 
-+    void destroy();
-+
- protected:
- 
-     void invoke(Ice::ObjectPrx&, const Ice::AMD_Object_ice_invokePtr&, 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Glacier2-RequestQueue.cpp ./files/patch-cpp-src-Glacier2-RequestQueue.cpp
--- ../ice.orig/files/patch-cpp-src-Glacier2-RequestQueue.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Glacier2-RequestQueue.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,74 +0,0 @@
---- cpp.orig/src/Glacier2/RequestQueue.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Glacier2/RequestQueue.cpp	2012-03-04 19:39:27.000000000 +0100
-@@ -185,7 +185,8 @@
-     _callback(newCallback_Object_ice_invoke(this, &RequestQueue::response, &RequestQueue::exception,
-                                             &RequestQueue::sent)),
-     _flushCallback(newCallback_Connection_flushBatchRequests(this, &RequestQueue::exception, &RequestQueue::sent)),
--    _pendingSend(false)
-+    _pendingSend(false),
-+    _destroyed(false)
- {
- }
- 
-@@ -241,6 +242,37 @@
- }
- 
- void
-+Glacier2::RequestQueue::destroy()
-+{
-+    IceUtil::Mutex::Lock lock(*this);
-+
-+    _destroyed = true;
-+
-+    //
-+    // Although the session has been destroyed, we cannot destroy this queue
-+    // until all requests have completed.
-+    //
-+    if(_requests.empty())
-+    {
-+        destroyInternal();
-+    }
-+}
-+
-+void
-+Glacier2::RequestQueue::destroyInternal()
-+{
-+    //
-+    // Must be called with the mutex locked.
-+    //
-+
-+    //
-+    // Remove cyclic references.
-+    //
-+    const_cast<Ice::Callback_Object_ice_invokePtr&>(_callback) = 0;
-+    const_cast<Ice::Callback_Connection_flushBatchRequestsPtr&>(_flushCallback) = 0;
-+}
-+
-+void
- Glacier2::RequestQueue::flush()
- {
-     assert(_connection);
-@@ -289,6 +321,11 @@
-             _pendingSendRequest = 0;
-         }
-     }
-+
-+    if(_destroyed && _requests.empty())
-+    {
-+        destroyInternal();
-+    }
- }
- 
- void
-@@ -312,6 +349,11 @@
-         }
-     }
-     _requests.clear();
-+
-+    if(_destroyed)
-+    {
-+        destroyInternal();
-+    }
- }
- 
- void
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Glacier2-RequestQueue.h ./files/patch-cpp-src-Glacier2-RequestQueue.h
--- ../ice.orig/files/patch-cpp-src-Glacier2-RequestQueue.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Glacier2-RequestQueue.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,23 +0,0 @@
---- cpp.orig/src/Glacier2/RequestQueue.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Glacier2/RequestQueue.h	2012-03-04 19:39:27.000000000 +0100
-@@ -65,8 +65,12 @@
-     bool addRequest(const RequestPtr&);
-     void flushRequests(std::set<Ice::ObjectPrx>&);
- 
-+    void destroy();
-+
- private:
- 
-+    void destroyInternal();
-+
-     void flush();
-     void flush(std::set<Ice::ObjectPrx>&);
- 
-@@ -83,6 +87,7 @@
-     std::deque<RequestPtr> _requests;
-     bool _pendingSend;
-     RequestPtr _pendingSendRequest;
-+    bool _destroyed;
- };
- typedef IceUtil::Handle<RequestQueue> RequestQueuePtr;
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Glacier2-RouterI.cpp ./files/patch-cpp-src-Glacier2-RouterI.cpp
--- ../ice.orig/files/patch-cpp-src-Glacier2-RouterI.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Glacier2-RouterI.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
---- cpp.orig/src/Glacier2/RouterI.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Glacier2/RouterI.cpp	2012-03-04 19:39:27.000000000 +0100
-@@ -98,6 +98,12 @@
-             _session->destroy_async(amiCB);
-         }
-     }
-+
-+    _clientBlobject->destroy();
-+    if(_serverBlobject)
-+    {
-+        _serverBlobject->destroy();
-+    }
- }
- 
- ObjectPrx
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Ice-.depend ./files/patch-cpp-src-Ice-.depend
--- ../ice.orig/files/patch-cpp-src-Ice-.depend	1970-01-01 01:00:00.000000000 +0100
+++ ./files/patch-cpp-src-Ice-.depend	2013-05-22 04:23:27.000000000 +0200
@@ -0,0 +1,8 @@
+--- cpp.orig/src/Ice/.depend	2013-05-21 00:29:56.146194325 +0000
++++ cpp/src/Ice/.depend	2013-05-21 00:42:56.956197313 +0000
+@@ -1,5 +1,5 @@
+-Acceptor$(OBJEXT): Acceptor.cpp ../Ice/Acceptor.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h ../Ice/AcceptorF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h ../Ice/TransceiverF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/Version.h $(includedir)/Ice/EndpointTypes.h
++Acceptor$(OBJEXT): Acceptor.cpp ../Ice/Acceptor.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h ../Ice/AcceptorF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h ../Ice/TransceiverF.h ../Ice/Network.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/Version.h $(includedir)/Ice/EndpointTypes.h
+ Application$(OBJEXT): Application.cpp $(includedir)/Ice/Application.h $(includedir)/Ice/Ice.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/InstrumentationF.h $(includedir)/Ice/Dispatcher.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/MutexProtocol.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Version.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Identity.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/EndpointF.h $(includedir)/Ice/EndpointTypes.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/UniquePtr.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Object.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/ObjectFactoryManagerF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/SlicedDataF.h $(includedir)/Ice/ObserverHelper.h $(includedir)/Ice/Instrumentation.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/CommunicatorAsync.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/SlicedData.h $(includedir)/Ice/Process.h $(includedir)/Ice/Connection.h $(includedir)/Ice/ConnectionAsync.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/PropertiesAdmin.h $(includedir)/Ice/Metrics.h $(includedir)/Ice/Service.h $(includedir)/Ice/IconvStringConverter.h ../Ice/LoggerI.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/ArgVector.h ../Ice/GC.h
+ Base64$(OBJEXT): Base64.cpp ../Ice/Base64.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h
+ Buffer$(OBJEXT): Buffer.cpp $(includedir)/Ice/Buffer.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ProxyF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/ProxyHandle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Exception.h $(includedir)/Ice/Format.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/StreamHelpers.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/Optional.h $(includedir)/Ice/Identity.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Version.h $(includedir)/Ice/BuiltinSequences.h
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Ice-ConnectionI.cpp ./files/patch-cpp-src-Ice-ConnectionI.cpp
--- ../ice.orig/files/patch-cpp-src-Ice-ConnectionI.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Ice-ConnectionI.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,27 +0,0 @@
---- cpp.orig/src/Ice/ConnectionI.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Ice/ConnectionI.cpp	2012-03-04 20:14:52.000000000 +0100
-@@ -31,7 +31,7 @@
- using namespace Ice;
- using namespace IceInternal;
- 
--Ice::LocalObject* IceInternal::upCast(ConnectionI* p) { return p; }
-+Ice::LocalObject* Ice::upCast(ConnectionI* p) { return p; }
- 
- namespace
- {
-@@ -600,6 +600,7 @@
-     }
-     catch(const LocalException& ex)
-     {
-+        status = IceInternal::AsyncStatusQueued; // this is only to apeace the compiler
-         setState(StateClosed, ex);
-         assert(_exception.get());
-         _exception->ice_throw();
-@@ -971,6 +972,7 @@
-     }
-     catch(const Ice::LocalException& ex)
-     {
-+        status = IceInternal::AsyncStatusQueued; // this is only to apeace the compiler
-         setState(StateClosed, ex);
-         assert(_exception.get());
-         _exception->ice_throw();
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Ice-IncomingAsync.cpp ./files/patch-cpp-src-Ice-IncomingAsync.cpp
--- ../ice.orig/files/patch-cpp-src-Ice-IncomingAsync.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Ice-IncomingAsync.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/Ice/IncomingAsync.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Ice/IncomingAsync.cpp	2012-03-04 20:14:52.000000000 +0100
-@@ -24,7 +24,7 @@
- using namespace IceInternal;
- 
- IceUtil::Shared* IceInternal::upCast(IncomingAsync* p) { return p; }
--IceUtil::Shared* IceInternal::upCast(AMD_Object_ice_invoke* p) { return p; }
-+IceUtil::Shared* Ice::upCast(AMD_Object_ice_invoke* p) { return p; }
- 
- namespace
- {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Ice-LocalObject.cpp ./files/patch-cpp-src-Ice-LocalObject.cpp
--- ../ice.orig/files/patch-cpp-src-Ice-LocalObject.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Ice-LocalObject.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/Ice/LocalObject.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Ice/LocalObject.cpp	2012-03-04 20:14:52.000000000 +0100
-@@ -13,7 +13,7 @@
- using namespace Ice;
- using namespace IceInternal;
- 
--IceUtil::Shared* IceInternal::upCast(LocalObject* obj) { return obj; }
-+IceUtil::Shared* Ice::upCast(LocalObject* obj) { return obj; }
- 
- bool
- Ice::LocalObject::operator==(const LocalObject& r) const
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Ice-Network.cpp ./files/patch-cpp-src-Ice-Network.cpp
--- ../ice.orig/files/patch-cpp-src-Ice-Network.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-Ice-Network.cpp	2013-05-20 00:56:41.000000000 +0200
@@ -1,6 +1,6 @@
---- cpp.orig/src/Ice/Network.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Ice/Network.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -715,7 +715,11 @@
+--- cpp.orig/src/Ice/Network.cpp	2013-03-11 15:19:46.000000000 +0000
++++ cpp/src/Ice/Network.cpp	2013-05-19 22:55:40.257195813 +0000
+@@ -936,7 +936,11 @@
      WSASetLastError(error);
  #else
      int error = errno;
@@ -13,12 +13,3 @@
      {
          SocketException ex(__FILE__, __LINE__);
          ex.error = getSocketErrno();
-@@ -1098,7 +1098,7 @@ IceInternal::doBind(SOCKET fd, const struct sockaddr_storage& addr)
-         size = 0; // Keep the compiler happy.
-     }
- 
--    if(bind(fd, reinterpret_cast<const struct sockaddr*>(&addr), size) == SOCKET_ERROR)
-+    if(::bind(fd, reinterpret_cast<const struct sockaddr*>(&addr), size) == SOCKET_ERROR)
-     {
-         closeSocketNoThrow(fd);
-         SocketException ex(__FILE__, __LINE__);
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Ice-Object.cpp ./files/patch-cpp-src-Ice-Object.cpp
--- ../ice.orig/files/patch-cpp-src-Ice-Object.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Ice-Object.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/Ice/Object.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/Ice/Object.cpp	2012-03-04 20:14:52.000000000 +0100
-@@ -19,7 +19,7 @@
- using namespace Ice;
- using namespace IceInternal;
- 
--IceUtil::Shared* IceInternal::upCast(Object* p) { return p; }
-+IceUtil::Shared* Ice::upCast(Object* p) { return p; }
- 
- bool
- Ice::Object::operator==(const Object& r) const
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Ice-OutgoingAsync.cpp ./files/patch-cpp-src-Ice-OutgoingAsync.cpp
--- ../ice.orig/files/patch-cpp-src-Ice-OutgoingAsync.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Ice-OutgoingAsync.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/Ice/OutgoingAsync.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/Ice/OutgoingAsync.cpp	2012-03-04 20:14:52.000000000 +0100
-@@ -30,7 +30,7 @@
- using namespace Ice;
- using namespace IceInternal;
- 
--IceUtil::Shared* IceInternal::upCast(AsyncResult* p) { return p; }
-+IceUtil::Shared* Ice::upCast(AsyncResult* p) { return p; }
- 
- IceUtil::Shared* IceInternal::upCast(OutgoingAsyncMessageCallback* p) { return p; }
- IceUtil::Shared* IceInternal::upCast(OutgoingAsync* p) { return p; }
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Ice-PropertyNames.cpp ./files/patch-cpp-src-Ice-PropertyNames.cpp
--- ../ice.orig/files/patch-cpp-src-Ice-PropertyNames.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Ice-PropertyNames.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
---- cpp.orig/src/Ice/PropertyNames.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/Ice/PropertyNames.cpp	2012-03-04 19:55:44.000000000 +0100
-@@ -8,7 +8,7 @@
- // **********************************************************************
- 
- //
--// Generated by makeprops.py from file ..\config\PropertyNames.xml, Mon May 09 07:39:43 2011
-+// Generated by makeprops.py from file ../config/PropertyNames.xml, Tue Jul 12 07:22:34 2011
- 
- // IMPORTANT: Do not edit this file -- any edits made here will be lost!
- 
-@@ -335,6 +335,8 @@
-     IceInternal::Property("IceGrid.Registry.PermissionsVerifier", false, 0),
-     IceInternal::Property("IceGrid.Registry.ReplicaName", false, 0),
-     IceInternal::Property("IceGrid.Registry.ReplicaSessionTimeout", false, 0),
-+    IceInternal::Property("IceGrid.Registry.RequireNodeCertCN", false, 0),
-+    IceInternal::Property("IceGrid.Registry.RequireReplicaCertCN", false, 0),
-     IceInternal::Property("IceGrid.Registry.Server.ACM", false, 0),
-     IceInternal::Property("IceGrid.Registry.Server.AdapterId", false, 0),
-     IceInternal::Property("IceGrid.Registry.Server.Endpoints", false, 0),
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Ice-PropertyNames.h ./files/patch-cpp-src-Ice-PropertyNames.h
--- ../ice.orig/files/patch-cpp-src-Ice-PropertyNames.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Ice-PropertyNames.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/Ice/PropertyNames.h	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/Ice/PropertyNames.h	2012-03-04 19:55:44.000000000 +0100
-@@ -8,7 +8,7 @@
- // **********************************************************************
- 
- //
--// Generated by makeprops.py from file ..\config\PropertyNames.xml, Mon May 09 07:39:43 2011
-+// Generated by makeprops.py from file ../config/PropertyNames.xml, Tue Jul 12 07:22:34 2011
- 
- // IMPORTANT: Do not edit this file -- any edits made here will be lost!
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Ice-Service.cpp ./files/patch-cpp-src-Ice-Service.cpp
--- ../ice.orig/files/patch-cpp-src-Ice-Service.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Ice-Service.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,32 +0,0 @@
---- cpp.orig/src/Ice/Service.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/Ice/Service.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -2136,17 +2136,26 @@
-             //
-             // Associate stdin, stdout and stderr with /dev/null.
-             //
-+#ifndef NDEBUG
-             int fd;
--            fd = open("/dev/null", O_RDWR);
-+            fd = 
-+#endif
-+            open("/dev/null", O_RDWR);
-             assert(fd == 0);
-             if(stdOut.empty())
-             {
--                fd = dup2(0, 1);
-+#ifndef NDEBUG
-+                fd = 
-+#endif
-+                dup2(0, 1);
-                 assert(fd == 1);
-             }
-             if(stdErr.empty())
-             {
--                fd = dup2(1, 2);
-+#ifndef NDEBUG
-+                fd = 
-+#endif
-+                dup2(1, 2);
-                 assert(fd == 2);
-             }
-         }
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Ice-Stream.cpp ./files/patch-cpp-src-Ice-Stream.cpp
--- ../ice.orig/files/patch-cpp-src-Ice-Stream.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Ice-Stream.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,24 +0,0 @@
---- cpp.orig/src/Ice/Stream.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/Ice/Stream.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -8,10 +8,19 @@
- // **********************************************************************
- 
- #include <Ice/Stream.h>
-+#include <Ice/LocalException.h>
- 
- using namespace std;
- using namespace Ice;
- using namespace IceInternal;
- 
--IceUtil::Shared* IceInternal::upCast(InputStream* p) { return p; }
--IceUtil::Shared* IceInternal::upCast(OutputStream* p) { return p; }
-+IceUtil::Shared* Ice::upCast(InputStream* p) { return p; }
-+IceUtil::Shared* Ice::upCast(OutputStream* p) { return p; }
-+
-+namespace IceInternal
-+{
-+  void delegateThrowMarshalException(const char* file, int line , const ::std::string& message)
-+  {
-+    throw Ice::MarshalException(file, line, message);
-+  }
-+}
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceGrid-AdminCallbackRouter.cpp ./files/patch-cpp-src-IceGrid-AdminCallbackRouter.cpp
--- ../ice.orig/files/patch-cpp-src-IceGrid-AdminCallbackRouter.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceGrid-AdminCallbackRouter.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,16 +0,0 @@
---- cpp.orig/src/IceGrid/AdminCallbackRouter.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceGrid/AdminCallbackRouter.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -49,7 +49,12 @@
- #ifndef NDEBUG
-     bool inserted =
- #endif
--        _categoryToConnection.insert(map<string, ConnectionPtr>::value_type(category, con)).second;
-+        _categoryToConnection.insert(map<string, ConnectionPtr>::value_type(category, con))
-+#ifndef NDEBUG
-+        .second
-+#endif
-+        ;
-+
-     
-     assert(inserted == true);
- }
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceGrid-DescriptorHelper.cpp ./files/patch-cpp-src-IceGrid-DescriptorHelper.cpp
--- ../ice.orig/files/patch-cpp-src-IceGrid-DescriptorHelper.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceGrid-DescriptorHelper.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,35 +0,0 @@
---- cpp.orig/src/IceGrid/DescriptorHelper.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceGrid/DescriptorHelper.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -198,15 +198,6 @@
-     return result;
- }
- 
--template<typename Dict> Dict
--getDictUpdatedElts(const Dict& ldict, const Dict& rdict)
--{
--#if defined(_MSC_VER) && (_MSC_VER < 1300)
--    return getDictUpdatedEltsWithEq(ldict, rdict, equal_to<Dict::mapped_type>());
--#else
--    return getDictUpdatedEltsWithEq(ldict, rdict, equal_to<typename Dict::mapped_type>());
--#endif
--}
- 
- template<typename EqFunc, typename Dict> Dict
- getDictUpdatedEltsWithEq(const Dict& ldict, const Dict& rdict, EqFunc eq)
-@@ -223,6 +214,16 @@
-     return result;
- }
- 
-+template<typename Dict> Dict
-+getDictUpdatedElts(const Dict& ldict, const Dict& rdict)
-+{
-+#if defined(_MSC_VER) && (_MSC_VER < 1300)
-+    return getDictUpdatedEltsWithEq(ldict, rdict, equal_to<Dict::mapped_type>());
-+#else
-+    return getDictUpdatedEltsWithEq(ldict, rdict, equal_to<typename Dict::mapped_type>());
-+#endif
-+}
-+
- template <typename Dict> Ice::StringSeq
- getDictRemovedElts(const Dict& ldict, const Dict& rdict)
- {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceGrid-FileCache.cpp ./files/patch-cpp-src-IceGrid-FileCache.cpp
--- ../ice.orig/files/patch-cpp-src-IceGrid-FileCache.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-IceGrid-FileCache.cpp	2013-06-01 19:51:46.000000000 +0200
@@ -1,20 +1,16 @@
---- cpp.orig/src/IceGrid/FileCache.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/IceGrid/FileCache.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -195,15 +195,12 @@ FileCache::read(const string& file, Ice::Long offset, int size, Ice::Long& newOf
- 
-         totalSize += lineSize;
-         lines.push_back(line);
--#if defined(_MSC_VER) && (_MSC_VER < 1300)
+--- cpp.orig/src/IceGrid/FileCache.cpp	2013-03-11 15:19:12.271195149 +0000
++++ cpp/src/IceGrid/FileCache.cpp	2013-06-01 17:47:48.636196265 +0000
+@@ -195,11 +195,11 @@
+         // Some eofbit cases will also set failbit. So first
+         // check eof.
+         //
 -        if(is.eof())
-+        
 +        if(is.eof() || is.fail())
          {
              newOffset += line.size();
          }
-         else
--#else
--        if(!is.fail())
--#endif
+-        else if(!is.fail())
++        else
          {
              newOffset = is.tellg();
          }
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceGrid-Internal.ice ./files/patch-cpp-src-IceGrid-Internal.ice
--- ../ice.orig/files/patch-cpp-src-IceGrid-Internal.ice	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceGrid-Internal.ice	1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
---- cpp.orig/src/IceGrid/Internal.ice	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceGrid/Internal.ice	2012-03-04 19:55:44.000000000 +0100
-@@ -702,7 +702,7 @@
-      *
-      **/
-     NodeSession* registerNode(InternalNodeInfo info, Node* prx, LoadInfo loadInf)
--        throws NodeActiveException;
-+        throws NodeActiveException, PermissionDeniedException;
- 
-     /**
-      *
-@@ -721,7 +721,7 @@
-      *
-      **/
-     ReplicaSession* registerReplica(InternalReplicaInfo info, InternalRegistry* prx)
--        throws ReplicaActiveException;
-+        throws ReplicaActiveException, PermissionDeniedException;
- 
-     /**
-      *
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceGrid-InternalRegistryI.cpp ./files/patch-cpp-src-IceGrid-InternalRegistryI.cpp
--- ../ice.orig/files/patch-cpp-src-IceGrid-InternalRegistryI.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceGrid-InternalRegistryI.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,136 +0,0 @@
---- cpp.orig/src/IceGrid/InternalRegistryI.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceGrid/InternalRegistryI.cpp	2012-03-04 19:55:44.000000000 +0100
-@@ -19,6 +19,8 @@
- #include <IceGrid/ReplicaSessionI.h>
- #include <IceGrid/ReplicaSessionManager.h>
- #include <IceGrid/FileCache.h>
-+#include <IceSSL/IceSSL.h>
-+#include <IceSSL/RFC2253.h>
- 
- using namespace std;
- using namespace IceGrid;
-@@ -38,6 +40,8 @@
-     Ice::PropertiesPtr properties = database->getCommunicator()->getProperties();
-     _nodeSessionTimeout = properties->getPropertyAsIntWithDefault("IceGrid.Registry.NodeSessionTimeout", 30);
-     _replicaSessionTimeout = properties->getPropertyAsIntWithDefault("IceGrid.Registry.ReplicaSessionTimeout", 30);
-+    _requireNodeCertCN = properties->getPropertyAsIntWithDefault("IceGrid.Registry.RequireNodeCertCN", 0);
-+    _requireReplicaCertCN = properties->getPropertyAsIntWithDefault("IceGrid.Registry.RequireReplicaCertCN", 0);
- }
- 
- InternalRegistryI::~InternalRegistryI()
-@@ -50,7 +54,56 @@
-                                 const LoadInfo& load, 
-                                 const Ice::Current& current)
- {
--    const Ice::LoggerPtr logger = _database->getTraceLevels()->logger;
-+    const TraceLevelsPtr traceLevels = _database->getTraceLevels();
-+    const Ice::LoggerPtr logger = traceLevels->logger;
-+    if(!info || !node)
-+    {
-+        return 0;
-+    }
-+
-+    if(_requireNodeCertCN)
-+    {
-+        try
-+        {
-+            IceSSL::ConnectionInfoPtr sslConnInfo = IceSSL::ConnectionInfoPtr::dynamicCast(current.con->getInfo());
-+            if(sslConnInfo)
-+            {
-+                if (sslConnInfo->certs.empty() ||
-+                    !IceSSL::Certificate::decode(sslConnInfo->certs[0])->getSubjectDN().match("CN=" + info->name))
-+                {
-+                    if(traceLevels->node > 0)
-+                    {
-+                        Ice::Trace out(logger, traceLevels->nodeCat);
-+                        out << "certificate CN doesn't match node name `" << info->name << "'";
-+                    }
-+                    throw PermissionDeniedException("certificate CN doesn't match node name `" + info->name + "'");
-+                }
-+            }
-+            else
-+            {
-+                if(traceLevels->node > 0)
-+                {
-+                    Ice::Trace out(logger, traceLevels->nodeCat);
-+                    out << "node certificate for `" << info->name << "' is required to connect to this registry";
-+                }
-+                throw PermissionDeniedException("node certificate is required to connect to this registry");
-+            }
-+        }
-+        catch(const PermissionDeniedException& ex)
-+        {
-+            throw ex;
-+        }
-+        catch(const IceUtil::Exception&)
-+        {
-+            if(traceLevels->node > 0)
-+            {
-+                Ice::Trace out(logger, traceLevels->nodeCat);
-+                out << "unexpected exception while verifying certificate for node `" << info->name << "'";
-+            }
-+            throw PermissionDeniedException("unable to verify certificate for node `" + info->name + "'");
-+        }
-+    }
-+ 
-     try
-     {
-         NodeSessionIPtr session = new NodeSessionI(_database, node, info, _nodeSessionTimeout, load);
-@@ -68,7 +121,56 @@
-                                    const InternalRegistryPrx& prx,
-                                    const Ice::Current& current)
- {
--    const Ice::LoggerPtr logger = _database->getTraceLevels()->logger;
-+    const TraceLevelsPtr traceLevels = _database->getTraceLevels();
-+    const Ice::LoggerPtr logger = traceLevels->logger;
-+    if(!info || !prx)
-+    {
-+        return 0;
-+    }
-+
-+    if(_requireReplicaCertCN)
-+    {
-+        try
-+        {
-+            IceSSL::ConnectionInfoPtr sslConnInfo = IceSSL::ConnectionInfoPtr::dynamicCast(current.con->getInfo());
-+            if(sslConnInfo)
-+            {
-+                if (sslConnInfo->certs.empty() ||
-+                    !IceSSL::Certificate::decode(sslConnInfo->certs[0])->getSubjectDN().match("CN=" + info->name))
-+                {
-+                    if(traceLevels->replica > 0)
-+                    {
-+                        Ice::Trace out(logger, traceLevels->replicaCat);
-+                        out << "certificate CN doesn't match replica name `" << info->name << "'";
-+                    }
-+                    throw PermissionDeniedException("certificate CN doesn't match replica name `" + info->name + "'");
-+                }
-+            }
-+            else
-+            {
-+                if(traceLevels->replica > 0)
-+                {
-+                    Ice::Trace out(logger, traceLevels->replicaCat);
-+                    out << "replica certificate for `" << info->name << "' is required to connect to this registry";
-+                }
-+                throw PermissionDeniedException("replica certificate is required to connect to this registry");
-+            }
-+        }
-+        catch(const PermissionDeniedException& ex)
-+        {
-+            throw ex;
-+        }
-+        catch(const IceUtil::Exception&)
-+        {
-+            if(traceLevels->replica > 0)
-+            {
-+                Ice::Trace out(logger, traceLevels->replicaCat);
-+                out << "unexpected exception while verifying certificate for replica `" << info->name << "'";
-+            }
-+            throw PermissionDeniedException("unable to verify certificate for replica `" + info->name + "'");
-+        }
-+    }
-+    
-     try
-     {
-         ReplicaSessionIPtr s = new ReplicaSessionI(_database, _wellKnownObjects, info, prx, _replicaSessionTimeout);
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceGrid-InternalRegistryI.h ./files/patch-cpp-src-IceGrid-InternalRegistryI.h
--- ../ice.orig/files/patch-cpp-src-IceGrid-InternalRegistryI.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceGrid-InternalRegistryI.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/IceGrid/InternalRegistryI.h	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceGrid/InternalRegistryI.h	2012-03-04 19:55:44.000000000 +0100
-@@ -68,6 +68,8 @@
-     ReplicaSessionManager& _session;
-     int _nodeSessionTimeout;
-     int _replicaSessionTimeout;
-+    bool _requireNodeCertCN;
-+    bool _requireReplicaCertCN;
- };
-     
- };
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceGrid-NodeSessionManager.cpp ./files/patch-cpp-src-IceGrid-NodeSessionManager.cpp
--- ../ice.orig/files/patch-cpp-src-IceGrid-NodeSessionManager.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceGrid-NodeSessionManager.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
---- cpp.orig/src/IceGrid/NodeSessionManager.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceGrid/NodeSessionManager.cpp	2012-03-04 19:55:44.000000000 +0100
-@@ -110,6 +110,14 @@
-         }
-         exception.reset(ex.ice_clone());
-     }
-+    catch(const PermissionDeniedException& ex)
-+    {
-+        if(traceLevels)
-+        { 
-+            traceLevels->logger->error("connection to the the registry `" + _name + "' was denied:\n" + ex.reason);
-+        }
-+        exception.reset(ex.ice_clone());
-+    }
-     catch(const Ice::Exception& ex)
-     {
-         exception.reset(ex.ice_clone());
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceGrid-ReplicaCache.cpp ./files/patch-cpp-src-IceGrid-ReplicaCache.cpp
--- ../ice.orig/files/patch-cpp-src-IceGrid-ReplicaCache.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceGrid-ReplicaCache.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/IceGrid/ReplicaCache.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceGrid/ReplicaCache.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -40,7 +40,7 @@
-     Lock sync(*this);
-     
-     ReplicaEntryPtr entry;
--    while(entry = getImpl(name))
-+    while((entry = getImpl(name)))
-     {
-         ReplicaSessionIPtr session = entry->getSession();
-         if(session->isDestroyed())
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceGrid-ReplicaSessionManager.cpp ./files/patch-cpp-src-IceGrid-ReplicaSessionManager.cpp
--- ../ice.orig/files/patch-cpp-src-IceGrid-ReplicaSessionManager.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceGrid-ReplicaSessionManager.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
---- cpp.orig/src/IceGrid/ReplicaSessionManager.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceGrid/ReplicaSessionManager.cpp	2012-03-04 19:55:44.000000000 +0100
-@@ -500,6 +500,14 @@
-         }
-         exception.reset(ex.ice_clone());
-     }
-+    catch(const PermissionDeniedException& ex)
-+    {
-+        if(_traceLevels)
-+        {
-+            _traceLevels->logger->error("connection to the the registry `" + _name + "' was denied:\n" + ex.reason);
-+        }
-+        exception.reset(ex.ice_clone());
-+    }
-     catch(const Ice::Exception& ex)
-     {
-         exception.reset(ex.ice_clone());
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceGrid-SessionI.h ./files/patch-cpp-src-IceGrid-SessionI.h
--- ../ice.orig/files/patch-cpp-src-IceGrid-SessionI.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceGrid-SessionI.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/IceGrid/SessionI.h	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceGrid/SessionI.h	2012-03-04 20:14:53.000000000 +0100
-@@ -35,7 +35,7 @@
- class SessionI;
- typedef IceUtil::Handle<SessionI> SessionIPtr;
- 
--class BaseSessionI : virtual Ice::Object, public IceUtil::Mutex
-+class BaseSessionI : virtual public Ice::Object, public IceUtil::Mutex
- {
- public:
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceSSL-Instance.cpp ./files/patch-cpp-src-IceSSL-Instance.cpp
--- ../ice.orig/files/patch-cpp-src-IceSSL-Instance.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceSSL-Instance.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/IceSSL/Instance.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceSSL/Instance.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -38,7 +38,7 @@
- using namespace Ice;
- using namespace IceSSL;
- 
--IceUtil::Shared* IceInternal::upCast(IceSSL::Instance* p) { return p; }
-+IceUtil::Shared* IceSSL::upCast(IceSSL::Instance* p) { return p; }
- 
- namespace
- {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceSSL-InstanceF.h ./files/patch-cpp-src-IceSSL-InstanceF.h
--- ../ice.orig/files/patch-cpp-src-IceSSL-InstanceF.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceSSL-InstanceF.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
---- cpp.orig/src/IceSSL/InstanceF.h	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceSSL/InstanceF.h	2012-03-04 20:14:53.000000000 +0100
-@@ -18,13 +18,13 @@
- {
- 
- class Instance;
-+IceUtil::Shared* upCast(IceSSL::Instance*);
- 
- }
- 
- namespace IceInternal
- {
- 
--IceUtil::Shared* upCast(IceSSL::Instance*);
- 
- }
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceSSL-TrustManager.cpp ./files/patch-cpp-src-IceSSL-TrustManager.cpp
--- ../ice.orig/files/patch-cpp-src-IceSSL-TrustManager.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceSSL-TrustManager.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/IceSSL/TrustManager.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceSSL/TrustManager.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -20,7 +20,7 @@
- using namespace std;
- using namespace IceSSL;
- 
--IceUtil::Shared* IceInternal::upCast(IceSSL::TrustManager* p) { return p; }
-+IceUtil::Shared* IceSSL::upCast(IceSSL::TrustManager* p) { return p; }
- 
- TrustManager::TrustManager(const Ice::CommunicatorPtr& communicator) :
-     _communicator(communicator)
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceSSL-TrustManagerF.h ./files/patch-cpp-src-IceSSL-TrustManagerF.h
--- ../ice.orig/files/patch-cpp-src-IceSSL-TrustManagerF.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceSSL-TrustManagerF.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
---- cpp.orig/src/IceSSL/TrustManagerF.h	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceSSL/TrustManagerF.h	2012-03-04 20:14:53.000000000 +0100
-@@ -18,13 +18,13 @@
- {
- 
- class TrustManager;
-+IceUtil::Shared* upCast(IceSSL::TrustManager*);
- 
- }
- 
- namespace IceInternal
- {
- 
--IceUtil::Shared* upCast(IceSSL::TrustManager*);
- 
- }
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceSSL-Util.cpp ./files/patch-cpp-src-IceSSL-Util.cpp
--- ../ice.orig/files/patch-cpp-src-IceSSL-Util.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceSSL-Util.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/src/IceSSL/Util.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceSSL/Util.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -175,7 +175,7 @@
-     return dh;
- }
- 
--IceUtil::Shared* IceInternal::upCast(IceSSL::DHParams* p) { return p; }
-+IceUtil::Shared* IceSSL::upCast(IceSSL::DHParams* p) { return p; }
- 
- IceSSL::DHParams::DHParams() :
-     _dh512(0), _dh1024(0), _dh2048(0), _dh4096(0)
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceSSL-UtilF.h ./files/patch-cpp-src-IceSSL-UtilF.h
--- ../ice.orig/files/patch-cpp-src-IceSSL-UtilF.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceSSL-UtilF.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
---- cpp.orig/src/IceSSL/UtilF.h	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceSSL/UtilF.h	2012-03-04 20:14:53.000000000 +0100
-@@ -21,13 +21,13 @@
- {
- 
- class DHParams;
-+IceUtil::Shared* upCast(IceSSL::DHParams*);
- 
- }
- 
- namespace IceInternal
- {
- 
--IceUtil::Shared* upCast(IceSSL::DHParams*);
- 
- }
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceStorm-NodeI.cpp ./files/patch-cpp-src-IceStorm-NodeI.cpp
--- ../ice.orig/files/patch-cpp-src-IceStorm-NodeI.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceStorm-NodeI.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
---- cpp.orig/src/IceStorm/NodeI.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceStorm/NodeI.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -18,11 +18,6 @@
- namespace
- {
- 
--bool operator==(const GroupNodeInfo& info, int id)
--{
--    return info.id == id;
--}
--
- class CheckTask : public IceUtil::TimerTask
- {
-     const NodeIPtr _node;
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceStorm-Replica.h ./files/patch-cpp-src-IceStorm-Replica.h
--- ../ice.orig/files/patch-cpp-src-IceStorm-Replica.h	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-IceStorm-Replica.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
---- cpp.orig/src/IceStorm/Replica.h	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/IceStorm/Replica.h	2012-09-10 11:43:58.000000000 +0200
-@@ -23,9 +23,9 @@ struct GroupNodeInfo
-     GroupNodeInfo(int i, LogUpdate l, const Ice::ObjectPrx& o = Ice::ObjectPrx());
-     bool operator<(const GroupNodeInfo& rhs) const;
-     bool operator==(const GroupNodeInfo& rhs) const;
--    const int id;
--    const LogUpdate llu;
--    const Ice::ObjectPrx observer;
-+    int id;
-+    LogUpdate llu;
-+    Ice::ObjectPrx observer;
- };
- 
- class Replica : virtual public IceUtil::Shared
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceStorm-TopicI.cpp ./files/patch-cpp-src-IceStorm-TopicI.cpp
--- ../ice.orig/files/patch-cpp-src-IceStorm-TopicI.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-IceStorm-TopicI.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,74 +0,0 @@
---- cpp.orig/src/IceStorm/TopicI.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/IceStorm/TopicI.cpp	2012-09-12 22:14:00.000000000 +0200
-@@ -666,7 +666,7 @@ TopicImpl::subscribe(const QoS& origQoS, const Ice::ObjectPrx& obj)
-         {
-             try
-             {
--                DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+                DatabaseConnectionPtr connection = _databaseCache->newConnection();
-                 TransactionHolder txn(connection);
- 
-                 SubscriberRecordKey key;
-@@ -703,7 +703,7 @@ TopicImpl::subscribe(const QoS& origQoS, const Ice::ObjectPrx& obj)
-     {
-         try
-         {
--            DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+            DatabaseConnectionPtr connection = _databaseCache->newConnection();
-             TransactionHolder txn(connection);
- 
-             SubscriberRecordKey key;
-@@ -788,7 +788,7 @@ TopicImpl::subscribeAndGetPublisher(const QoS& qos, const Ice::ObjectPrx& obj)
-     {
-         try
-         {
--            DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+            DatabaseConnectionPtr connection = _databaseCache->newConnection();
-             TransactionHolder txn(connection);
- 
-             SubscriberRecordKey key;
-@@ -912,7 +912,7 @@ TopicImpl::link(const TopicPrx& topic, Ice::Int cost)
-     {
-         try
-         {
--            DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+            DatabaseConnectionPtr connection = _databaseCache->newConnection();
-             TransactionHolder txn(connection);
- 
-             SubscriberRecordKey key;
-@@ -1311,7 +1311,7 @@ TopicImpl::observerAddSubscriber(const LogUpdate& llu, const SubscriberRecord& r
-     {
-         try
-         {
--            DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+            DatabaseConnectionPtr connection = _databaseCache->newConnection();
-             TransactionHolder txn(connection);
- 
-             SubscriberRecordKey key;
-@@ -1380,7 +1380,7 @@ TopicImpl::observerRemoveSubscriber(const LogUpdate& llu, const Ice::IdentitySeq
-     {
-         try
-         {
--            DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+            DatabaseConnectionPtr connection = _databaseCache->newConnection();
-             TransactionHolder txn(connection);
- 
-             for(Ice::IdentitySeq::const_iterator id = ids.begin(); id != ids.end(); ++id)
-@@ -1456,7 +1456,7 @@ TopicImpl::destroyInternal(const LogUpdate& origLLU, bool master)
-     {
-         try
-         {
--            DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+            DatabaseConnectionPtr connection = _databaseCache->newConnection();
-             TransactionHolder txn(connection);
- 
-             // Erase all subscriber records and the topic record.
-@@ -1531,7 +1531,7 @@ TopicImpl::removeSubscribers(const Ice::IdentitySeq& ids)
-     {
-         try
-         {
--            DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+            DatabaseConnectionPtr connection = _databaseCache->newConnection();
-             TransactionHolder txn(connection);
- 
-             for(Ice::IdentitySeq::const_iterator id = ids.begin(); id != ids.end(); ++id)
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceStorm-TopicManagerI.cpp ./files/patch-cpp-src-IceStorm-TopicManagerI.cpp
--- ../ice.orig/files/patch-cpp-src-IceStorm-TopicManagerI.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-IceStorm-TopicManagerI.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,47 +0,0 @@
---- cpp.orig/src/IceStorm/TopicManagerI.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/IceStorm/TopicManagerI.cpp	2012-09-12 22:14:00.000000000 +0200
-@@ -312,7 +312,7 @@ TopicManagerImpl::TopicManagerImpl(const InstancePtr& instance) :
-             _sync = _instance->nodeAdapter()->addWithUUID(_syncImpl);
-         }
- 
--        DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+        DatabaseConnectionPtr connection = _databaseCache->newConnection();
- 
-         // Ensure that the llu counter is present in the log.
-         LLUWrapperPtr lluWrapper = _databaseCache->getLLU(connection);
-@@ -381,7 +381,7 @@ TopicManagerImpl::create(const string& name)
-     {
-         try
-         {
--            DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+            DatabaseConnectionPtr connection = _databaseCache->newConnection();
-             TransactionHolder txn(connection);
- 
-             SubscriberRecordKey key;
-@@ -486,7 +486,7 @@ TopicManagerImpl::observerInit(const LogUpdate& llu, const TopicContentSeq& cont
-     {
-         try
-         {
--            DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+            DatabaseConnectionPtr connection = _databaseCache->newConnection();
-             TransactionHolder txn(connection);
- 
-             LLUWrapperPtr lluWrapper = _databaseCache->getLLU(connection);
-@@ -590,7 +590,7 @@ TopicManagerImpl::observerCreateTopic(const LogUpdate& llu, const string& name)
-     {
-         try
-         {
--            DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+            DatabaseConnectionPtr connection = _databaseCache->newConnection();
-             TransactionHolder txn(connection);
- 
-             SubscriberRecordKey key;
-@@ -776,7 +776,7 @@ TopicManagerImpl::initMaster(const set<GroupNodeInfo>& slaves, const LogUpdate&
-         {
-             content.clear();
- 
--            DatabaseConnectionPtr connection = _databaseCache->getConnection();
-+            DatabaseConnectionPtr connection = _databaseCache->newConnection();
-             TransactionHolder txn(connection);
- 
-             for(map<string, TopicImplPtr>::const_iterator p = _topics.begin(); p != _topics.end(); ++p)
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceUtil-Cond.cpp ./files/patch-cpp-src-IceUtil-Cond.cpp
--- ../ice.orig/files/patch-cpp-src-IceUtil-Cond.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceUtil-Cond.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
---- cpp.orig/src/IceUtil/Cond.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceUtil/Cond.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -330,8 +330,11 @@
- 
- IceUtil::Cond::~Cond()
- {
-+#ifndef NDEBUG
-     int rc = 0;
--    rc = pthread_cond_destroy(&_cond);
-+    rc = 
-+#endif
-+    pthread_cond_destroy(&_cond);
-     assert(rc == 0);
- }
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceUtil-CountDownLatch.cpp ./files/patch-cpp-src-IceUtil-CountDownLatch.cpp
--- ../ice.orig/files/patch-cpp-src-IceUtil-CountDownLatch.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceUtil-CountDownLatch.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
---- cpp.orig/src/IceUtil/CountDownLatch.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceUtil/CountDownLatch.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -44,10 +44,16 @@
- #ifdef _WIN32
-     CloseHandle(_event);
- #else
-+#ifndef NDEBUG
-     int rc = 0;
--    rc = pthread_mutex_destroy(&_mutex);
-+    rc = 
-+#endif
-+    pthread_mutex_destroy(&_mutex);
-     assert(rc == 0);
--    rc = pthread_cond_destroy(&_cond);
-+#ifndef NDEBUG
-+    rc = 
-+#endif
-+    pthread_cond_destroy(&_cond);
-     assert(rc == 0);
- #endif
- }
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceUtil-CtrlCHandler.cpp ./files/patch-cpp-src-IceUtil-CtrlCHandler.cpp
--- ../ice.orig/files/patch-cpp-src-IceUtil-CtrlCHandler.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceUtil-CtrlCHandler.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,49 +0,0 @@
---- cpp.orig/src/IceUtil/CtrlCHandler.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceUtil/CtrlCHandler.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -219,29 +219,41 @@
-         sigaddset(&ctrlCLikeSignals, SIGHUP);
-         sigaddset(&ctrlCLikeSignals, SIGINT);
-         sigaddset(&ctrlCLikeSignals, SIGTERM);
--        int rc = pthread_sigmask(SIG_BLOCK, &ctrlCLikeSignals, 0);
-+#ifndef NDEBUG
-+        int rc = 
-+#endif        
-+        pthread_sigmask(SIG_BLOCK, &ctrlCLikeSignals, 0);
-         assert(rc == 0);
- 
-         // Joinable thread
--        rc = pthread_create(&_tid, 0, sigwaitThread, 0);
-+#ifndef NDEBUG
-+        rc = 
-+#endif
-+        pthread_create(&_tid, 0, sigwaitThread, 0);
-         assert(rc == 0);
-     }
- }
- 
- CtrlCHandler::~CtrlCHandler()
- {
--    int rc = pthread_cancel(_tid);
-+#ifndef NDEBUG
-+    int rc = 
-+#endif
-+    pthread_cancel(_tid);
-     assert(rc == 0);
- #if defined(__APPLE__)
-     //
-     // WORKAROUND: sigwait isn't a cancellation point on MacOS X, see
-     // comment in sigwaitThread
-     //
--    rc = pthread_kill(_tid, SIGTERM);
-+    pthread_kill(_tid, SIGTERM);
-     //assert(rc == 0); For some reaosns, this assert is sometime triggered
- #endif
-     void* status = 0;
--    rc = pthread_join(_tid, &status);
-+#ifndef NDEBUG
-+    rc = 
-+#endif
-+    pthread_join(_tid, &status);
-     assert(rc == 0);
- #if !defined(__APPLE__)
-     assert(status == PTHREAD_CANCELED);
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceUtil-FileUtil.cpp ./files/patch-cpp-src-IceUtil-FileUtil.cpp
--- ../ice.orig/files/patch-cpp-src-IceUtil-FileUtil.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceUtil-FileUtil.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
---- cpp.orig/src/IceUtil/FileUtil.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceUtil/FileUtil.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -26,6 +26,10 @@
- #  include <dir.h>
- #endif
- 
-+#ifdef __FreeBSD__
-+#  include <unistd.h>
-+#endif
-+
- using namespace std;
- 
- //
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceUtil-RecMutex.cpp ./files/patch-cpp-src-IceUtil-RecMutex.cpp
--- ../ice.orig/files/patch-cpp-src-IceUtil-RecMutex.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-IceUtil-RecMutex.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,28 +0,0 @@
---- cpp.orig/src/IceUtil/RecMutex.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/IceUtil/RecMutex.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -148,8 +148,11 @@
- IceUtil::RecMutex::~RecMutex()
- {
-     assert(_count == 0);
-+#ifndef NDEBUG
-     int rc = 0;
--    rc = pthread_mutex_destroy(&_mutex);
-+    rc = 
-+#endif
-+    pthread_mutex_destroy(&_mutex);
-     assert(rc == 0);
- }
- 
-@@ -196,8 +199,11 @@
- {
-     if(--_count == 0)
-     {
-+#ifndef NDEBUG
-         int rc = 0; // Prevent warnings when NDEBUG is defined.
--        rc = pthread_mutex_unlock(&_mutex);
-+        rc = 
-+#endif
-+        pthread_mutex_unlock(&_mutex);
-         assert(rc == 0);
-     }
- }
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-IceUtil-Shared.cpp ./files/patch-cpp-src-IceUtil-Shared.cpp
--- ../ice.orig/files/patch-cpp-src-IceUtil-Shared.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-IceUtil-Shared.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
---- cpp.orig/src/IceUtil/Shared.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/IceUtil/Shared.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -96,6 +96,18 @@ IceUtil::SimpleShared::SimpleShared(const SimpleShared&) :
- {
- }
- 
-+IceUtil::SimpleSharedUnsafeDestructor::SimpleSharedUnsafeDestructor() :
-+    _ref(0),
-+    _noDelete(false)
-+{
-+}
-+
-+IceUtil::SimpleSharedUnsafeDestructor::SimpleSharedUnsafeDestructor(const SimpleSharedUnsafeDestructor&) :
-+    _ref(0),
-+    _noDelete(false)
-+{
-+}
-+
- IceUtil::Shared::Shared() :
-     _ref(0),
-     _noDelete(false)
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Slice-CPlusPlusUtil.cpp ./files/patch-cpp-src-Slice-CPlusPlusUtil.cpp
--- ../ice.orig/files/patch-cpp-src-Slice-CPlusPlusUtil.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Slice-CPlusPlusUtil.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
---- cpp.orig/src/Slice/CPlusPlusUtil.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/Slice/CPlusPlusUtil.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -631,7 +631,7 @@
-         string scope = fixKwd(cl->scope());
-         if(marshal)
-         {
--            out << nl << stream << deref << "write(::Ice::ObjectPtr(::IceInternal::upCast(" << fixedParam 
-+            out << nl << stream << deref << "write(::Ice::ObjectPtr(" << scope << "upCast(" << fixedParam 
-                 << ".get())));";
-         }
-         else
-@@ -649,7 +649,7 @@
-         string scope = fixKwd(px->_class()->scope());
-         if(marshal)
-         {
--            out << nl << stream << deref << "write(::Ice::ObjectPrx(::IceInternal::upCast(" << fixedParam 
-+            out << nl << stream << deref << "write(::Ice::ObjectPrx(::IceProxy" << scope << "upCast(" << fixedParam 
-                 << ".get())));";
-         }
-         else
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-Slice-FileTracker.cpp ./files/patch-cpp-src-Slice-FileTracker.cpp
--- ../ice.orig/files/patch-cpp-src-Slice-FileTracker.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-Slice-FileTracker.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
---- cpp.orig/src/Slice/FileTracker.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/Slice/FileTracker.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -17,6 +17,10 @@
- #   include <direct.h>
- #endif
- 
-+#ifdef __FreeBSD__
-+#   include <unistd.h>
-+#endif
-+
- using namespace std;
- 
- Slice::FileException::FileException(const char* file, int line, const string& r) :
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-slice2cpp-Gen.cpp ./files/patch-cpp-src-slice2cpp-Gen.cpp
--- ../ice.orig/files/patch-cpp-src-slice2cpp-Gen.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-slice2cpp-Gen.cpp	2013-05-21 02:46:05.000000000 +0200
@@ -1,111 +1,13 @@
---- cpp.orig/src/slice2cpp/Gen.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/slice2cpp/Gen.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -1944,8 +1944,10 @@
+--- cpp.orig/src/slice2cpp/Gen.cpp	2013-03-11 15:19:46.000000000 +0000
++++ cpp/src/slice2cpp/Gen.cpp	2013-05-20 19:51:48.109197053 +0000
+@@ -385,6 +385,10 @@
+         H << "\n#include <Ice/Proxy.h>";
+         H << "\n#include <Ice/OutgoingAsync.h>";
      }
- 
-     string name = fixKwd(p->name());
-+    string scoped = fixKwd(p->scoped());
- 
-     H << sp << nl << "class " << name << ';';
-+    H << nl << _dllExport << "::IceProxy::Ice::Object* upCast(::IceProxy" << scoped << "*);";
- }
- 
- Slice::Gen::ProxyVisitor::ProxyVisitor(Output& h, Output& c, const string& dllExport) :
-@@ -3691,10 +3693,22 @@
- Slice::Gen::ObjectDeclVisitor::visitClassDecl(const ClassDeclPtr& p)
- {
-     string name = fixKwd(p->name());
-+    string scoped = fixKwd(p->scoped());
- 
-     H << sp << nl << "class " << name << ';';
-     H << nl << "bool operator==(const " << name << "&, const " << name << "&);";
-     H << nl << "bool operator<(const " << name << "&, const " << name << "&);";
-+
-+    H << sp;
-+
-+    if(!p->isLocal())
++    else if(p->hasNonLocalClassDecls())
 +    {
-+        H << nl << _dllExport << "::Ice::Object* upCast(" << scoped << "*);";
++        H << "\n#include <Ice/Proxy.h>";
 +    }
-+    else
-+    {
-+        H << nl << _dllExport << "::Ice::LocalObject* upCast(" << scoped << "*);";
-+    }
- }
- 
- void
-@@ -4922,13 +4936,13 @@
- {
-     if((BuiltinPtr::dynamicCast(p) && BuiltinPtr::dynamicCast(p)->kind() == Builtin::KindObject)
-        || ClassDeclPtr::dynamicCast(p))
--    {
--        C << nl << "if(" << prefix << name << ')';
-+    {        C << nl << "if(" << prefix << name << ')';
-         C << sb;
-         ClassDeclPtr decl = ClassDeclPtr::dynamicCast(p);
-         if(decl)
-         {
--            C << nl << "::IceInternal::upCast(" << prefix << name << ".get())->__addObject(_c);";
-+            string scope = fixKwd(decl->scope());
-+            C << nl << scope << "upCast(" << prefix << name << ".get())->__addObject(_c);";
-         }
-         else
-         {
-@@ -4991,9 +5005,10 @@
-         ClassDeclPtr decl = ClassDeclPtr::dynamicCast(p);
-         if(decl)
-         {
--            C << nl << "if(" << "::IceInternal::upCast(" << prefix << name << ".get())->__usesClasses())";
-+            string scope = fixKwd(decl->scope());
-+            C << nl << "if(" << scope << "upCast(" << prefix << name << ".get())->__usesClasses())";
-             C << sb;
--            C << nl << "::IceInternal::upCast(" << prefix << name << ".get())->__decRefUnsafe();";
-+            C << nl << scope << "upCast(" << prefix << name << ".get())->__decRefUnsafe();";
-             C << nl << prefix << name << ".__clearHandleUnsafe();";
  
-         }
-@@ -5629,40 +5644,30 @@
- {
-     string scoped = fixKwd(p->scoped());
- 
--    H << sp;
--
--    if(!p->isLocal())
--    {
--        H << nl << _dllExport << "::Ice::Object* upCast(" << scoped << "*);";
--        H << nl << _dllExport << "::IceProxy::Ice::Object* upCast(::IceProxy" << scoped << "*);";
--    }
--    else
--    {
--        H << nl << _dllExport << "::Ice::LocalObject* upCast(" << scoped << "*);";
--    }
- }
- 
- bool
- Slice::Gen::IceInternalVisitor::visitClassDefStart(const ClassDefPtr& p)
- {
-     string scoped = fixKwd(p->scoped());
-+    string scope = fixKwd(p->scope());
- 
-     C << sp;
-     if(!p->isLocal())
+     if(p->hasNonLocalDataOnlyClasses() || p->hasNonLocalExceptions())
      {
-         C << nl
- 	  << (_dllExport.empty() ? "" : "ICE_DECLSPEC_EXPORT ")
--	  << "::Ice::Object* IceInternal::upCast(" << scoped << "* p) { return p; }";
-+	  << "::Ice::Object* " << scope << "upCast(" << scoped << "* p) { return p; }";
-         C << nl
- 	  << (_dllExport.empty() ? "" : "ICE_DECLSPEC_EXPORT ")
--	  << "::IceProxy::Ice::Object* IceInternal::upCast(::IceProxy" << scoped
-+	  << "::IceProxy::Ice::Object* IceProxy" << scope << "upCast(::IceProxy" << scoped
-           << "* p) { return p; }";
-     }
-     else
-     {
-         C << nl
- 	  << (_dllExport.empty() ? "" : "ICE_DECLSPEC_EXPORT ")
--	  << "::Ice::LocalObject* IceInternal::upCast(" << scoped << "* p) { return p; }";
-+	  << "::Ice::LocalObject* " << scope << "upCast(" << scoped << "* p) { return p; }";
-     }
- 
-     return true;
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-slice2cpp-Main.cpp ./files/patch-cpp-src-slice2cpp-Main.cpp
--- ../ice.orig/files/patch-cpp-src-slice2cpp-Main.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-slice2cpp-Main.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,46 +0,0 @@
---- cpp.orig/src/slice2cpp/Main.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/slice2cpp/Main.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -22,7 +22,7 @@ using namespace Slice;
- namespace
- {
- 
--IceUtil::Mutex* mutex = 0;
-+IceUtil::Mutex* mtx = 0;
- bool interrupted = false;
- 
- class Init
-@@ -31,13 +31,13 @@ public:
- 
-     Init()
-     {
--        mutex = new IceUtil::Mutex;
-+        mtx = new IceUtil::Mutex;
-     }
- 
-     ~Init()
-     {
--        delete mutex;
--        mutex = 0;
-+        delete mtx;
-+        mtx = 0;
-     }
- };
- 
-@@ -48,7 +48,7 @@ Init init;
- void
- interruptedCallback(int signal)
- {
--    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-     interrupted = true;
- }
-@@ -294,7 +294,7 @@ compile(int argc, char* argv[])
-         }
- 
-         {
--            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-             if(interrupted)
-             {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-slice2cs-Gen.cpp ./files/patch-cpp-src-slice2cs-Gen.cpp
--- ../ice.orig/files/patch-cpp-src-slice2cs-Gen.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-slice2cs-Gen.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,28 +0,0 @@
---- cpp.orig/src/slice2cs/Gen.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/slice2cs/Gen.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -1281,7 +1281,7 @@
-         {
-             _out << value << "F";
-         }
--        else if(ep = EnumPtr::dynamicCast(type))
-+        else if((ep = EnumPtr::dynamicCast(type)))
-         {
-             string enumName = fixId(ep->scoped());
-             string::size_type colon = value.rfind(':');
-@@ -3914,16 +3914,6 @@
-     ClassDefPtr cl = ClassDefPtr::dynamicCast(p->container());
-     string name = fixId(p->name(), DotNet::ICloneable, true);
-     vector<string> params = getParams(p);
--    bool hasOutParams = false;
--    ParamDeclList paramList = p->parameters();
--    for(ParamDeclList::const_iterator pli = paramList.begin(); pli != paramList.end(); ++pli)
--    {
--        if((*pli)->isOutParam())
--        {
--            hasOutParams = true;
--            break;
--        }
--    }
- 
-     _out << sp;
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-slice2cs-Main.cpp ./files/patch-cpp-src-slice2cs-Main.cpp
--- ../ice.orig/files/patch-cpp-src-slice2cs-Main.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-slice2cs-Main.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,46 +0,0 @@
---- cpp.orig/src/slice2cs/Main.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/slice2cs/Main.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -22,7 +22,7 @@ using namespace Slice;
- namespace
- {
- 
--IceUtil::Mutex* mutex = 0;
-+IceUtil::Mutex* mtx = 0;
- bool interrupted = false;
- 
- class Init
-@@ -31,13 +31,13 @@ public:
- 
-     Init()
-     {
--        mutex = new IceUtil::Mutex;
-+        mtx = new IceUtil::Mutex;
-     }
- 
-     ~Init()
-     {
--        delete mutex;
--        mutex = 0;
-+        delete mtx;
-+        mtx = 0;
-     }
- };
- 
-@@ -48,7 +48,7 @@ Init init;
- void
- interruptedCallback(int signal)
- {
--    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-     interrupted = true;
- }
-@@ -303,7 +303,7 @@ compile(int argc, char* argv[])
-         }
- 
-         {
--            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-             if(interrupted)
-             {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-slice2freeze-Main.cpp ./files/patch-cpp-src-slice2freeze-Main.cpp
--- ../ice.orig/files/patch-cpp-src-slice2freeze-Main.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-slice2freeze-Main.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,55 +0,0 @@
---- cpp.orig/src/slice2freeze/Main.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/slice2freeze/Main.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -28,7 +28,7 @@ using namespace Slice;
- namespace
- {
- 
--IceUtil::Mutex* mutex = 0;
-+IceUtil::Mutex* mtx = 0;
- bool interrupted = false;
- 
- class Init
-@@ -37,13 +37,13 @@ public:
- 
-     Init()
-     {
--        mutex = new IceUtil::Mutex;
-+        mtx = new IceUtil::Mutex;
-     }
- 
-     ~Init()
-     {
--        delete mutex;
--        mutex = 0;
-+        delete mtx;
-+        mtx = 0;
-     }
- };
- 
-@@ -56,7 +56,7 @@ string ICE_ENCODING_COMPARE = "Freeze::IceEncodingCompare";
- void
- interruptedCallback(int signal)
- {
--    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-     interrupted = true;
- }
-@@ -1995,7 +1995,7 @@ compile(int argc, char* argv[])
-         }
- 
-         {
--            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-             if(interrupted)
-             {
-@@ -2042,7 +2042,7 @@ compile(int argc, char* argv[])
-     u->destroy();
- 
-     {
--        IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+        IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-         if(interrupted)
-         {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-slice2freezej-Main.cpp ./files/patch-cpp-src-slice2freezej-Main.cpp
--- ../ice.orig/files/patch-cpp-src-slice2freezej-Main.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-slice2freezej-Main.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,55 +0,0 @@
---- cpp.orig/src/slice2freezej/Main.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/slice2freezej/Main.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -26,7 +26,7 @@ using namespace IceUtilInternal;
- namespace
- {
- 
--IceUtil::Mutex* mutex = 0;
-+IceUtil::Mutex* mtx = 0;
- bool interrupted = false;
- 
- class Init
-@@ -35,13 +35,13 @@ public:
- 
-     Init()
-     {
--        mutex = new IceUtil::Mutex;
-+        mtx = new IceUtil::Mutex;
-     }
- 
-     ~Init()
-     {
--        delete mutex;
--        mutex = 0;
-+        delete mtx;
-+        mtx = 0;
-     }
- };
- 
-@@ -52,7 +52,7 @@ Init init;
- void
- interruptedCallback(int signal)
- {
--    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(mutex);
-+    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(mtx);
- 
-     interrupted = true;
- }
-@@ -1828,7 +1828,7 @@ compile(int argc, char* argv[])
-         }
- 
-         {
--            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-             if(interrupted)
-             {
-@@ -1923,7 +1923,7 @@ compile(int argc, char* argv[])
-     u->destroy();
- 
-     {
--        IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+        IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-         if(interrupted)
-         {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-slice2html-Main.cpp ./files/patch-cpp-src-slice2html-Main.cpp
--- ../ice.orig/files/patch-cpp-src-slice2html-Main.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-slice2html-Main.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,55 +0,0 @@
---- cpp.orig/src/slice2html/Main.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/slice2html/Main.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -24,7 +24,7 @@ using namespace IceUtil;
- namespace
- {
- 
--IceUtil::Mutex* mutex = 0;
-+IceUtil::Mutex* mtx = 0;
- bool interrupted = false;
- 
- class Init
-@@ -33,13 +33,13 @@ public:
- 
-     Init()
-     {
--        mutex = new IceUtil::Mutex;
-+        mtx = new IceUtil::Mutex;
-     }
- 
-     ~Init()
-     {
--        delete mutex;
--        mutex = 0;
-+        delete mtx;
-+        mtx = 0;
-     }
- };
- 
-@@ -50,7 +50,7 @@ Init init;
- void
- interruptedCallback(int signal)
- {
--    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-     interrupted = true;
- }
-@@ -254,7 +254,7 @@ compile(int argc, char* argv[])
-         }
- 
-         {
--            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-             if(interrupted)
-             {
-@@ -296,7 +296,7 @@ compile(int argc, char* argv[])
-     p->destroy();
- 
-     {
--        IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+        IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-         if(interrupted)
-         {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-slice2java-Gen.cpp ./files/patch-cpp-src-slice2java-Gen.cpp
--- ../ice.orig/files/patch-cpp-src-slice2java-Gen.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-src-slice2java-Gen.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
---- cpp.orig/src/slice2java/Gen.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/src/slice2java/Gen.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -1246,7 +1246,7 @@
-     {
-         BuiltinPtr bp;
-         EnumPtr ep;
--        if(bp = BuiltinPtr::dynamicCast(type))
-+        if((bp = BuiltinPtr::dynamicCast(type)))
-         {
-             switch(bp->kind())
-             {
-@@ -1349,7 +1349,7 @@
-             }
- 
-         }
--        else if(ep = EnumPtr::dynamicCast(type))
-+        else if((ep = EnumPtr::dynamicCast(type)))
-         {
-             string val = value;
-             string::size_type pos = val.rfind(':');
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-slice2java-Main.cpp ./files/patch-cpp-src-slice2java-Main.cpp
--- ../ice.orig/files/patch-cpp-src-slice2java-Main.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-slice2java-Main.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,46 +0,0 @@
---- cpp.orig/src/slice2java/Main.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/slice2java/Main.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -23,7 +23,7 @@ using namespace Slice;
- namespace
- {
- 
--IceUtil::Mutex* mutex = 0;
-+IceUtil::Mutex* mtx = 0;
- bool interrupted = false;
- 
- class Init
-@@ -32,13 +32,13 @@ public:
- 
-     Init()
-     {
--        mutex = new IceUtil::Mutex;
-+        mtx = new IceUtil::Mutex;
-     }
- 
-     ~Init()
-     {
--        delete mutex;
--        mutex = 0;
-+        delete mtx;
-+        mtx = 0;
-     }
- };
- 
-@@ -49,7 +49,7 @@ Init init;
- void
- interruptedCallback(int signal)
- {
--    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-     interrupted = true;
- }
-@@ -356,7 +356,7 @@ compile(int argc, char* argv[])
-         }
- 
-         {
--            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-             if(interrupted)
-             {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-slice2php-Main.cpp ./files/patch-cpp-src-slice2php-Main.cpp
--- ../ice.orig/files/patch-cpp-src-slice2php-Main.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-slice2php-Main.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,46 +0,0 @@
---- cpp.orig/src/slice2php/Main.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/slice2php/Main.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -1488,7 +1488,7 @@ printHeader(IceUtilInternal::Output& out)
- namespace
- {
- 
--IceUtil::Mutex* mutex = 0;
-+IceUtil::Mutex* mtx = 0;
- bool interrupted = false;
- 
- class Init
-@@ -1497,13 +1497,13 @@ public:
- 
-     Init()
-     {
--        mutex = new IceUtil::Mutex;
-+        mtx = new IceUtil::Mutex;
-     }
- 
-     ~Init()
-     {
--        delete mutex;
--        mutex = 0;
-+        delete mtx;
-+        mtx = 0;
-     }
- };
- 
-@@ -1514,7 +1514,7 @@ Init init;
- static void
- interruptedCallback(int signal)
- {
--    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-     interrupted = true;
- }
-@@ -1777,7 +1777,7 @@ compile(int argc, char* argv[])
-         }
- 
-         {
--            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-             if(interrupted)
-             {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-slice2py-Main.cpp ./files/patch-cpp-src-slice2py-Main.cpp
--- ../ice.orig/files/patch-cpp-src-slice2py-Main.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-slice2py-Main.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,46 +0,0 @@
---- cpp.orig/src/slice2py/Main.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/slice2py/Main.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -40,7 +40,7 @@ using namespace Slice::Python;
- namespace
- {
- 
--IceUtil::Mutex* mutex = 0;
-+IceUtil::Mutex* mtx = 0;
- bool interrupted = false;
- 
- class Init
-@@ -49,13 +49,13 @@ public:
- 
-     Init()
-     {
--        mutex = new IceUtil::Mutex;
-+        mtx = new IceUtil::Mutex;
-     }
- 
-     ~Init()
-     {
--        delete mutex;
--        mutex = 0;
-+        delete mtx;
-+        mtx = 0;
-     }
- };
- 
-@@ -66,7 +66,7 @@ Init init;
- void
- interruptedCallback(int signal)
- {
--    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-     interrupted = true;
- }
-@@ -631,7 +631,7 @@ compile(int argc, char* argv[])
-         }
- 
-         {
--            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-             if(interrupted)
-             {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-src-slice2rb-Main.cpp ./files/patch-cpp-src-slice2rb-Main.cpp
--- ../ice.orig/files/patch-cpp-src-slice2rb-Main.cpp	2012-09-23 16:45:33.000000000 +0200
+++ ./files/patch-cpp-src-slice2rb-Main.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,46 +0,0 @@
---- cpp.orig/src/slice2rb/Main.cpp	2011-06-15 21:43:58.000000000 +0200
-+++ cpp/src/slice2rb/Main.cpp	2012-09-10 11:43:58.000000000 +0200
-@@ -39,7 +39,7 @@ using namespace Slice::Ruby;
- namespace
- {
- 
--IceUtil::Mutex* mutex = 0;
-+IceUtil::Mutex* mtx = 0;
- bool interrupted = false;
- 
- class Init
-@@ -48,13 +48,13 @@ public:
- 
-     Init()
-     {
--        mutex = new IceUtil::Mutex;
-+        mtx = new IceUtil::Mutex;
-     }
- 
-     ~Init()
-     {
--        delete mutex;
--        mutex = 0;
-+        delete mtx;
-+        mtx = 0;
-     }
- };
- 
-@@ -65,7 +65,7 @@ Init init;
- void
- interruptedCallback(int signal)
- {
--    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+    IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-     interrupted = true;
- }
-@@ -316,7 +316,7 @@ compile(int argc, char* argv[])
-         }
- 
-         {
--            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mutex);
-+            IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mtx);
- 
-             if(interrupted)
-             {
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-test-Glacier2-ssl-Server.cpp ./files/patch-cpp-test-Glacier2-ssl-Server.cpp
--- ../ice.orig/files/patch-cpp-test-Glacier2-ssl-Server.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-test-Glacier2-ssl-Server.cpp	2013-05-20 01:06:16.000000000 +0200
@@ -18,15 +18,6 @@
  }
  
  }
-@@ -99,7 +105,7 @@
-     }
- 
-     virtual void
--    ice_ping(const Ice::Current& current)
-+    ice_ping(const Ice::Current& current) const
-     {
-         testContext(_ssl, current.ctx);
-     }
 @@ -133,8 +139,11 @@
      {
          testContext(true, current.ctx);
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-test-Ice-background-EndpointI.h ./files/patch-cpp-test-Ice-background-EndpointI.h
--- ../ice.orig/files/patch-cpp-test-Ice-background-EndpointI.h	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-test-Ice-background-EndpointI.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
---- cpp.orig/test/Ice/background/EndpointI.h	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/test/Ice/background/EndpointI.h	2012-03-04 20:14:53.000000000 +0100
-@@ -48,7 +48,7 @@
- 
-     virtual Ice::Int hashInit() const;
- #if !defined(_MSC_VER) || _MSC_VER > 1300
--    using IceInternal::EndpointI::connectors;
-+    using ::IceInternal::EndpointI::connectors;
- #endif
-     
- private:
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-test-Ice-custom-AllTests.cpp ./files/patch-cpp-test-Ice-custom-AllTests.cpp
--- ../ice.orig/files/patch-cpp-test-Ice-custom-AllTests.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-test-Ice-custom-AllTests.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,32 +0,0 @@
---- cpp.orig/test/Ice/custom/AllTests.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/test/Ice/custom/AllTests.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -1384,7 +1384,8 @@
-                        const ::Test::ClassStructSeq& seq,
-                        const InParamPtr& cookie)
-     {
--        pair< ::Test::ClassStructPtr, ::Test::ClassStructSeq> in = getIn(in, cookie);
-+        pair< ::Test::ClassStructPtr, ::Test::ClassStructSeq> in;
-+        in = getIn(in, cookie);
-         test(ret == in.first);
-         test(cs1 == in.first);
-         test(seq == in.second);
-@@ -1432,7 +1433,8 @@
- 
-     void throwExcept1(const Ice::AsyncResultPtr& result)
-     {
--        wstring in = getIn(in, InParamPtr::dynamicCast(result->getCookie()));
-+        wstring in;
-+        in = getIn(in, InParamPtr::dynamicCast(result->getCookie()));
-         try
-         {
-             Test1::WstringClassPrx t = Test1::WstringClassPrx::uncheckedCast(result->getProxy());
-@@ -1451,7 +1453,8 @@
- 
-     void throwExcept2(const Ice::AsyncResultPtr& result)
-     {
--        wstring in = getIn(in, InParamPtr::dynamicCast(result->getCookie()));
-+        wstring in;
-+        in = getIn(in, InParamPtr::dynamicCast(result->getCookie()));
-         try
-         {
-             Test2::WstringClassPrx t = Test2::WstringClassPrx::uncheckedCast(result->getProxy());
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-test-Ice-metrics-AllTests.cpp ./files/patch-cpp-test-Ice-metrics-AllTests.cpp
--- ../ice.orig/files/patch-cpp-test-Ice-metrics-AllTests.cpp	1970-01-01 01:00:00.000000000 +0100
+++ ./files/patch-cpp-test-Ice-metrics-AllTests.cpp	2013-05-20 04:20:07.000000000 +0200
@@ -0,0 +1,32 @@
+--- cpp.orig/test/Ice/metrics/AllTests.cpp	2013-03-11 15:19:47.000000000 +0000
++++ cpp/test/Ice/metrics/AllTests.cpp	2013-05-20 02:11:00.939194168 +0000
+@@ -597,9 +597,12 @@
+     testAttribute(clientMetrics, clientProps, update, "Connection", "incoming", "false");
+     testAttribute(clientMetrics, clientProps, update, "Connection", "adapterName", "");
+     testAttribute(clientMetrics, clientProps, update, "Connection", "connectionId", "Con1");
+-    testAttribute(clientMetrics, clientProps, update, "Connection", "localHost", "127.0.0.1");
++    if (!inFreeBSDJail())
++    {
++      testAttribute(clientMetrics, clientProps, update, "Connection", "localHost", "127.0.0.1");
++      testAttribute(clientMetrics, clientProps, update, "Connection", "remoteHost", "127.0.0.1");
++    }
+     //testAttribute(clientMetrics, clientProps, update, "Connection", "localPort", "");
+-    testAttribute(clientMetrics, clientProps, update, "Connection", "remoteHost", "127.0.0.1");
+     testAttribute(clientMetrics, clientProps, update, "Connection", "remotePort", "12010");
+     testAttribute(clientMetrics, clientProps, update, "Connection", "mcastHost", "");
+     testAttribute(clientMetrics, clientProps, update, "Connection", "mcastPort", "");
+@@ -814,9 +817,12 @@
+     testAttribute(serverMetrics, serverProps, update, "Dispatch", "incoming", "true", op);
+     testAttribute(serverMetrics, serverProps, update, "Dispatch", "adapterName", "TestAdapter", op);
+     testAttribute(serverMetrics, serverProps, update, "Dispatch", "connectionId", "", op);
+-    testAttribute(serverMetrics, serverProps, update, "Dispatch", "localHost", "127.0.0.1", op);
++    if (!inFreeBSDJail())
++    {
++      testAttribute(serverMetrics, serverProps, update, "Dispatch", "localHost", "127.0.0.1", op);
++      testAttribute(serverMetrics, serverProps, update, "Dispatch", "remoteHost", "127.0.0.1", op);
++    }
+     testAttribute(serverMetrics, serverProps, update, "Dispatch", "localPort", "12010", op);
+-    testAttribute(serverMetrics, serverProps, update, "Dispatch", "remoteHost", "127.0.0.1", op);
+     //testAttribute(serverMetrics, serverProps, update, "Dispatch", "remotePort", "12010", op);
+     testAttribute(serverMetrics, serverProps, update, "Dispatch", "mcastHost", "", op);
+     testAttribute(serverMetrics, serverProps, update, "Dispatch", "mcastPort", "", op);
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-test-Ice-properties-run.py ./files/patch-cpp-test-Ice-properties-run.py
--- ../ice.orig/files/patch-cpp-test-Ice-properties-run.py	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-test-Ice-properties-run.py	2013-06-01 19:52:55.000000000 +0200
@@ -1,18 +1,29 @@
---- cpp.orig/test/Ice/properties/run.py	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/test/Ice/properties/run.py	2012-03-04 20:14:53.000000000 +0100
-@@ -26,7 +26,7 @@
+--- cpp.orig/test/Ice/properties/run.py	2013-03-11 15:19:47.000000000 +0000
++++ cpp/test/Ice/properties/run.py	2013-05-21 03:48:13.020195761 +0000
+@@ -28,15 +28,15 @@
  #
- # Write config
- #
--configPath = u"./config/中国_client.config"
-+configPath = u"./config/中国_client.config".encode("utf-8")
+ if sys.version_info[0] == 2:
+     configPath = "./config/\xe4\xb8\xad\xe5\x9b\xbd_client.config".decode("utf-8")
+-    TestUtil.createConfig(configPath, 
++    TestUtil.createConfig(configPath.encode("utf-8"), 
+                           ["# Automatically generated by Ice test driver.", 
+                            "Ice.Trace.Protocol=1",
+                            "Ice.Trace.Network=1", 
+                            "Ice.ProgramName=PropertiesClient", 
+-                           "Config.Path=./config/中国_client.config"])
++                           "Config.Path=" + configPath.encode("utf-8")])
+ else:
+     configPath = "./config/\u4e2d\u56fd_client.config"
+-    TestUtil.createConfig(configPath, 
++    TestUtil.createConfig(configPath.encode("utf-8"), 
+                           ["# Automatically generated by Ice test driver.", 
+                            "Ice.Trace.Protocol=1",
+                            "Ice.Trace.Network=1", 
+@@ -46,5 +46,5 @@
  
- TestUtil.createConfig(configPath, 
-                       ["# Automatically generated by Ice test driver.", 
-@@ -38,4 +38,4 @@
  TestUtil.simpleTest(client)
  
- if os.path.exists(configPath):
+-if os.path.exists(configPath):
 -    os.remove(configPath)
-\ No newline at end of file
-+    os.remove(configPath)
++if os.path.exists(configPath.encode("utf-8")):
++    os.remove(configPath.encode("utf-8"))
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-test-IceUtil-unicode-Client.cpp ./files/patch-cpp-test-IceUtil-unicode-Client.cpp
--- ../ice.orig/files/patch-cpp-test-IceUtil-unicode-Client.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-test-IceUtil-unicode-Client.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
---- cpp.orig/test/IceUtil/unicode/Client.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/test/IceUtil/unicode/Client.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -15,6 +15,10 @@
- #   include <io.h>
- #endif
- 
-+#ifdef __FreeBSD__
-+#   include <unistd.h>
-+#endif
-+
- using namespace IceUtil;
- using namespace std;
- 
diff -ruN --exclude=CVS ../ice.orig/files/patch-cpp-test-Slice-keyword-Client.cpp ./files/patch-cpp-test-Slice-keyword-Client.cpp
--- ../ice.orig/files/patch-cpp-test-Slice-keyword-Client.cpp	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-cpp-test-Slice-keyword-Client.cpp	1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
---- cpp.orig/test/Slice/keyword/Client.cpp	2011-06-15 21:43:59.000000000 +0200
-+++ cpp/test/Slice/keyword/Client.cpp	2012-03-04 20:14:53.000000000 +0100
-@@ -73,6 +73,9 @@
-     virtual void ice_response(Ice::Int)  {}
-     virtual void ice_exception(const ::Ice::Exception&) {}
- };
-+
-+template<typename T>
-+void unused(T const &) { }
-    
- //
- // This section of the test is present to ensure that the C++ types
-@@ -86,6 +89,7 @@
- 
-     _cpp_and::_cpp_auto b;
-     b._cpp_default = 0;
-+    unused(b);
- 
-     _cpp_and::deletePtr c = new _cpp_and::_cpp_delete();
-     c->_cpp_else = "";
diff -ruN --exclude=CVS ../ice.orig/files/patch-scripts-TestUtil.py ./files/patch-scripts-TestUtil.py
--- ../ice.orig/files/patch-scripts-TestUtil.py	2012-07-14 15:54:48.000000000 +0200
+++ ./files/patch-scripts-TestUtil.py	2013-05-21 02:45:33.000000000 +0200
@@ -1,6 +1,6 @@
---- scripts.orig/TestUtil.py	2011-06-15 21:44:00.000000000 +0200
-+++ scripts/TestUtil.py	2012-03-04 20:14:53.000000000 +0100
-@@ -74,6 +74,25 @@
+--- scripts.orig/TestUtil.py	2013-03-11 15:19:47.000000000 +0000
++++ scripts/TestUtil.py	2013-05-21 00:29:37.903194948 +0000
+@@ -84,6 +84,25 @@
  def isLinux():
      return sys.platform.startswith("linux")
  
@@ -26,19 +26,18 @@
  def getCppCompiler():
      compiler = ""
      if os.environ.get("CPP_COMPILER", "") != "":
-@@ -1590,7 +1609,15 @@
-             if isDarwin() and "nodarwin" in config:
-                 print "%s*** test not supported under Darwin%s" % (prefix, suffix)
+@@ -1846,6 +1865,14 @@
+                 print("%s*** test not supported under Darwin%s" % (prefix, suffix))
                  continue
-+
+ 
 +            if isFreeBSD() and "nofreebsd" in config:
-+                print "%s*** test not supported under FreeBSD%s" % (prefix, suffix)
++                print("%s*** test not supported under FreeBSD%s" % (prefix, suffix))
 +                continue
-             
++
 +            if isFreeBSDJail() and "nofreebsdjail" in config:
-+                print "%s*** test not supported within a FreeBSD Jail%s" % (prefix, suffix)
++                print("%s*** test not supported within a FreeBSD Jail%s" % (prefix, suffix))
 +                continue
 +
              if not isWin32() and "win32only" in config:
-                 print "%s*** test only supported under Win32%s" % (prefix, suffix)
+                 print("%s*** test only supported under Win32%s" % (prefix, suffix))
                  continue
diff -ruN --exclude=CVS ../ice.orig/pkg-message ./pkg-message
--- ../ice.orig/pkg-message	1970-01-01 01:00:00.000000000 +0100
+++ ./pkg-message	2013-05-20 18:43:50.000000000 +0200
@@ -0,0 +1,14 @@
+The default on-the-wire encoding for Ice changed in version 3.5 and IPv6
+is now enabled by default. ABI versions are not compatible.
+
+For details on these and additional changes please read the upgrading
+instructions available at
+
+	http://doc.zeroc.com/x/SQpN
+
+For on-the-wire background compatibility add
+
+	Ice.IPv6=0
+	Ice.Default.EncodingVersion=1.0
+
+to your Ice application configuration.
diff -ruN --exclude=CVS ../ice.orig/pkg-plist ./pkg-plist
--- ../ice.orig/pkg-plist	2012-07-14 15:54:48.000000000 +0200
+++ ./pkg-plist	2013-06-02 23:37:47.000000000 +0200
@@ -41,12 +41,14 @@
 include/Freeze/TransactionalEvictor.h
 include/Glacier2/Application.h
 include/Glacier2/Glacier2.h
+include/Glacier2/Metrics.h
 include/Glacier2/PermissionsVerifier.h
 include/Glacier2/PermissionsVerifierF.h
 include/Glacier2/Router.h
 include/Glacier2/RouterF.h
 include/Glacier2/SSLInfo.h
 include/Glacier2/Session.h
+include/Glacier2/SessionHelper.h
 include/Ice/Application.h
 include/Ice/BasicStream.h
 include/Ice/Buffer.h
@@ -77,6 +79,7 @@
 include/Ice/FacetMap.h
 include/Ice/FactoryTable.h
 include/Ice/FactoryTableInit.h
+include/Ice/Format.h
 include/Ice/Functional.h
 include/Ice/GCCountMap.h
 include/Ice/GCShared.h
@@ -91,6 +94,8 @@
 include/Ice/IncomingAsyncF.h
 include/Ice/Initialize.h
 include/Ice/InstanceF.h
+include/Ice/Instrumentation.h
+include/Ice/InstrumentationF.h
 include/Ice/LocalException.h
 include/Ice/LocalObject.h
 include/Ice/LocalObjectF.h
@@ -99,6 +104,10 @@
 include/Ice/Logger.h
 include/Ice/LoggerF.h
 include/Ice/LoggerUtil.h
+include/Ice/Metrics.h
+include/Ice/MetricsAdminI.h
+include/Ice/MetricsFunctional.h
+include/Ice/MetricsObserverI.h
 include/Ice/Object.h
 include/Ice/ObjectAdapter.h
 include/Ice/ObjectAdapterF.h
@@ -106,6 +115,8 @@
 include/Ice/ObjectF.h
 include/Ice/ObjectFactory.h
 include/Ice/ObjectFactoryF.h
+include/Ice/ObjectFactoryManagerF.h
+include/Ice/ObserverHelper.h
 include/Ice/Outgoing.h
 include/Ice/OutgoingAsync.h
 include/Ice/OutgoingAsyncF.h
@@ -114,6 +125,7 @@
 include/Ice/Process.h
 include/Ice/ProcessF.h
 include/Ice/Properties.h
+include/Ice/PropertiesAdmin.h
 include/Ice/PropertiesF.h
 include/Ice/Protocol.h
 include/Ice/ProtocolPluginFacade.h
@@ -132,13 +144,17 @@
 include/Ice/Service.h
 include/Ice/SliceChecksumDict.h
 include/Ice/SliceChecksums.h
+include/Ice/SlicedData.h
+include/Ice/SlicedDataF.h
 include/Ice/Stats.h
 include/Ice/StatsF.h
 include/Ice/Stream.h
 include/Ice/StreamF.h
+include/Ice/StreamHelpers.h
 include/Ice/StringConverter.h
 include/Ice/UndefSysMacros.h
 include/Ice/UserExceptionFactory.h
+include/Ice/Version.h
 include/IceBox/IceBox.h
 include/IceGrid/Admin.h
 include/IceGrid/Descriptor.h
@@ -160,6 +176,7 @@
 include/IceSSL/IceSSL.h
 include/IceSSL/Plugin.h
 include/IceStorm/IceStorm.h
+include/IceStorm/Metrics.h
 include/IceUtil/AbstractMutex.h
 include/IceUtil/ArgVector.h
 include/IceUtil/Cache.h
@@ -181,14 +198,15 @@
 include/IceUtil/MutexProtocol.h
 include/IceUtil/MutexPtrLock.h
 include/IceUtil/MutexPtrTryLock.h
+include/IceUtil/Optional.h
 include/IceUtil/Options.h
 include/IceUtil/OutputUtil.h
-include/IceUtil/RWRecMutex.h
 include/IceUtil/Random.h
 include/IceUtil/RecMutex.h
+include/IceUtil/ScannerConfig.h
 include/IceUtil/ScopedArray.h
 include/IceUtil/Shared.h
-include/IceUtil/StaticMutex.h
+include/IceUtil/StopWatch.h
 include/IceUtil/StringUtil.h
 include/IceUtil/Thread.h
 include/IceUtil/ThreadException.h
@@ -196,6 +214,7 @@
 include/IceUtil/Timer.h
 include/IceUtil/UUID.h
 include/IceUtil/Unicode.h
+include/IceUtil/UniquePtr.h
 include/IceXML/Parser.h
 include/Slice/CPlusPlusUtil.h
 include/Slice/Checksum.h
@@ -211,50 +230,50 @@
 include/Slice/Util.h
 lib/ImportKey.class
 lib/libFreeze.so
-lib/libFreeze.so.3.4.2
-lib/libFreeze.so.34
+lib/libFreeze.so.3.5.0
+lib/libFreeze.so.35
 lib/libGlacier2.so
-lib/libGlacier2.so.3.4.2
-lib/libGlacier2.so.34
+lib/libGlacier2.so.3.5.0
+lib/libGlacier2.so.35
 lib/libIce.so
-lib/libIce.so.3.4.2
-lib/libIce.so.34
+lib/libIce.so.3.5.0
+lib/libIce.so.35
 lib/libIceBox.so
-lib/libIceBox.so.3.4.2
-lib/libIceBox.so.34
+lib/libIceBox.so.3.5.0
+lib/libIceBox.so.35
 lib/libIceDB.so
-lib/libIceDB.so.3.4.2
-lib/libIceDB.so.34
+lib/libIceDB.so.3.5.0
+lib/libIceDB.so.35
 lib/libIceGrid.so
-lib/libIceGrid.so.3.4.2
-lib/libIceGrid.so.34
+lib/libIceGrid.so.3.5.0
+lib/libIceGrid.so.35
 lib/libIceGridFreezeDB.so
-lib/libIceGridFreezeDB.so.3.4.2
-lib/libIceGridFreezeDB.so.34
+lib/libIceGridFreezeDB.so.3.5.0
+lib/libIceGridFreezeDB.so.35
 lib/libIcePatch2.so
-lib/libIcePatch2.so.3.4.2
-lib/libIcePatch2.so.34
+lib/libIcePatch2.so.3.5.0
+lib/libIcePatch2.so.35
 lib/libIceSSL.so
-lib/libIceSSL.so.3.4.2
-lib/libIceSSL.so.34
+lib/libIceSSL.so.3.5.0
+lib/libIceSSL.so.35
 lib/libIceStorm.so
-lib/libIceStorm.so.3.4.2
-lib/libIceStorm.so.34
+lib/libIceStorm.so.3.5.0
+lib/libIceStorm.so.35
 lib/libIceStormFreezeDB.so
-lib/libIceStormFreezeDB.so.3.4.2
-lib/libIceStormFreezeDB.so.34
+lib/libIceStormFreezeDB.so.3.5.0
+lib/libIceStormFreezeDB.so.35
 lib/libIceStormService.so
-lib/libIceStormService.so.3.4.2
-lib/libIceStormService.so.34
+lib/libIceStormService.so.3.5.0
+lib/libIceStormService.so.35
 lib/libIceUtil.so
-lib/libIceUtil.so.3.4.2
-lib/libIceUtil.so.34
+lib/libIceUtil.so.3.5.0
+lib/libIceUtil.so.35
 lib/libIceXML.so
-lib/libIceXML.so.3.4.2
-lib/libIceXML.so.34
+lib/libIceXML.so.3.5.0
+lib/libIceXML.so.35
 lib/libSlice.so
-lib/libSlice.so.3.4.2
-lib/libSlice.so.34
+lib/libSlice.so.3.5.0
+lib/libSlice.so.35
 %%DATADIR%%/Freeze/BackgroundSaveEvictor.ice
 %%DATADIR%%/Freeze/CatalogData.ice
 %%DATADIR%%/Freeze/Connection.ice
@@ -266,6 +285,7 @@
 %%DATADIR%%/Freeze/Exception.ice
 %%DATADIR%%/Freeze/Transaction.ice
 %%DATADIR%%/Freeze/TransactionalEvictor.ice
+%%DATADIR%%/Glacier2/Metrics.ice
 %%DATADIR%%/Glacier2/PermissionsVerifier.ice
 %%DATADIR%%/Glacier2/PermissionsVerifierF.ice
 %%DATADIR%%/Glacier2/Router.ice
@@ -286,11 +306,14 @@
 %%DATADIR%%/Ice/Identity.ice
 %%DATADIR%%/Ice/ImplicitContext.ice
 %%DATADIR%%/Ice/ImplicitContextF.ice
+%%DATADIR%%/Ice/Instrumentation.ice
+%%DATADIR%%/Ice/InstrumentationF.ice
 %%DATADIR%%/Ice/LocalException.ice
 %%DATADIR%%/Ice/Locator.ice
 %%DATADIR%%/Ice/LocatorF.ice
 %%DATADIR%%/Ice/Logger.ice
 %%DATADIR%%/Ice/LoggerF.ice
+%%DATADIR%%/Ice/Metrics.ice
 %%DATADIR%%/Ice/ObjectAdapter.ice
 %%DATADIR%%/Ice/ObjectAdapterF.ice
 %%DATADIR%%/Ice/ObjectFactory.ice
@@ -308,6 +331,7 @@
 %%DATADIR%%/Ice/SliceChecksumDict.ice
 %%DATADIR%%/Ice/Stats.ice
 %%DATADIR%%/Ice/StatsF.ice
+%%DATADIR%%/Ice/Version.ice
 %%DATADIR%%/IceBox/IceBox.ice
 %%DATADIR%%/IceGrid/Admin.ice
 %%DATADIR%%/IceGrid/Descriptor.ice
@@ -324,13 +348,16 @@
 %%DATADIR%%/IceSSL/ConnectionInfo.ice
 %%DATADIR%%/IceSSL/EndpointInfo.ice
 %%DATADIR%%/IceStorm/IceStorm.ice
+%%DATADIR%%/IceStorm/Metrics.ice
 %%DATADIR%%/LICENSE
 %%DATADIR%%/config/convertssl.py
 %%DATADIR%%/config/icegrid-slice.3.1.ice.gz
 %%DATADIR%%/config/icegrid-slice.3.2.ice.gz
 %%DATADIR%%/config/icegrid-slice.3.3.ice.gz
+%%DATADIR%%/config/icegrid-slice.3.5.ice.gz
 %%DATADIR%%/config/templates.xml
-%%DATADIR%%/config/upgradeicegrid.py
+%%DATADIR%%/config/upgradeicegrid33.py
+%%DATADIR%%/config/upgradeicegrid35.py
 %%PORTDOCS%%%%DOCSDIR%%/reference/Freeze.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Freeze/BackgroundSaveEvictor.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Freeze/CatalogData.html
@@ -351,7 +378,6 @@
 %%PORTDOCS%%%%DOCSDIR%%/reference/Freeze/TransactionAlreadyInProgressException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Freeze/TransactionalEvictor.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Glacier2.html
-%%PORTDOCS%%%%DOCSDIR%%/reference/Glacier2/Admin.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Glacier2/CannotCreateSessionException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Glacier2/IdentitySet.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Glacier2/PermissionDeniedException.html
@@ -389,6 +415,7 @@
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/DNSException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/DatagramLimitException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/EncapsulationException.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/Ice/EncodingVersion.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/Endpoint.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/EndpointInfo.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/EndpointParseException.html
@@ -407,6 +434,7 @@
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/IllegalMessageSizeException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/ImplicitContext.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/InitializationException.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/Ice/Instrumentation.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/InvalidReplicaGroupIdException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/Locator.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/LocatorRegistry.html
@@ -432,6 +460,7 @@
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/Properties.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/PropertiesAdmin.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/ProtocolException.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/Ice/ProtocolVersion.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/ProxyParseException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/ProxyUnmarshalException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/RequestFailedException.html
@@ -461,6 +490,7 @@
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/UnsupportedEncodingException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/UnsupportedProtocolException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/Ice/VersionMismatchException.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/Ice/VersionParseException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/IceBox.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/IceBox/AlreadyStartedException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/IceBox/AlreadyStoppedException.html
@@ -545,8 +575,20 @@
 %%PORTDOCS%%%%DOCSDIR%%/reference/IceGrid/TemplateDescriptor.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/IceGrid/UserAccountMapper.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/IceGrid/UserAccountNotFoundException.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX/ConnectionMetrics.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX/DispatchMetrics.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX/InvocationMetrics.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX/Metrics.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX/MetricsAdmin.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX/MetricsFailures.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX/RemoteMetrics.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX/SessionMetrics.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX/SubscriberMetrics.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX/ThreadMetrics.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX/TopicMetrics.html
+%%PORTDOCS%%%%DOCSDIR%%/reference/IceMX/UnknownMetricsView.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/IcePatch2.html
-%%PORTDOCS%%%%DOCSDIR%%/reference/IcePatch2/Admin.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/IcePatch2/FileAccessException.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/IcePatch2/FileInfo.html
 %%PORTDOCS%%%%DOCSDIR%%/reference/IcePatch2/FileServer.html
@@ -589,6 +631,7 @@
 %%PORTDOCS%%@dirrm %%DOCSDIR%%/reference/IceStorm
 %%PORTDOCS%%@dirrm %%DOCSDIR%%/reference/IceSSL
 %%PORTDOCS%%@dirrm %%DOCSDIR%%/reference/IcePatch2
+%%PORTDOCS%%@dirrm %%DOCSDIR%%/reference/IceMX
 %%PORTDOCS%%@dirrm %%DOCSDIR%%/reference/IceGrid
 %%PORTDOCS%%@dirrm %%DOCSDIR%%/reference/IceBox
 %%PORTDOCS%%@dirrm %%DOCSDIR%%/reference/Ice
