Page MenuHomePhabricator (Chris)

No OneTemporary

Size
1 MB
Referenced Files
None
Subscribers
None
This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/mongodb-2.1.0/src/LIBMONGOC_VERSION_CURRENT b/mongodb-2.1.0/src/LIBMONGOC_VERSION_CURRENT
deleted file mode 100644
index 593d7210..00000000
--- a/mongodb-2.1.0/src/LIBMONGOC_VERSION_CURRENT
+++ /dev/null
@@ -1 +0,0 @@
-1.30.4
diff --git a/mongodb-2.1.0/src/libmongoc/VERSION_CURRENT b/mongodb-2.1.0/src/libmongoc/VERSION_CURRENT
deleted file mode 100644
index 593d7210..00000000
--- a/mongodb-2.1.0/src/libmongoc/VERSION_CURRENT
+++ /dev/null
@@ -1 +0,0 @@
-1.30.4
diff --git a/mongodb-2.1.0/CONTRIBUTING.md b/mongodb-2.1.1/CONTRIBUTING.md
similarity index 100%
rename from mongodb-2.1.0/CONTRIBUTING.md
rename to mongodb-2.1.1/CONTRIBUTING.md
diff --git a/mongodb-2.1.0/CREDITS b/mongodb-2.1.1/CREDITS
similarity index 100%
rename from mongodb-2.1.0/CREDITS
rename to mongodb-2.1.1/CREDITS
diff --git a/mongodb-2.1.0/LICENSE b/mongodb-2.1.1/LICENSE
similarity index 100%
rename from mongodb-2.1.0/LICENSE
rename to mongodb-2.1.1/LICENSE
diff --git a/mongodb-2.1.0/Makefile.frag b/mongodb-2.1.1/Makefile.frag
similarity index 100%
rename from mongodb-2.1.0/Makefile.frag
rename to mongodb-2.1.1/Makefile.frag
diff --git a/mongodb-2.1.0/README.md b/mongodb-2.1.1/README.md
similarity index 100%
rename from mongodb-2.1.0/README.md
rename to mongodb-2.1.1/README.md
diff --git a/mongodb-2.1.0/THIRD_PARTY_NOTICES b/mongodb-2.1.1/THIRD_PARTY_NOTICES
similarity index 100%
rename from mongodb-2.1.0/THIRD_PARTY_NOTICES
rename to mongodb-2.1.1/THIRD_PARTY_NOTICES
diff --git a/mongodb-2.1.0/Vagrantfile b/mongodb-2.1.1/Vagrantfile
similarity index 100%
rename from mongodb-2.1.0/Vagrantfile
rename to mongodb-2.1.1/Vagrantfile
diff --git a/mongodb-2.1.0/config.m4 b/mongodb-2.1.1/config.m4
similarity index 99%
rename from mongodb-2.1.0/config.m4
rename to mongodb-2.1.1/config.m4
index 5a547089..2f0a0507 100644
--- a/mongodb-2.1.0/config.m4
+++ b/mongodb-2.1.1/config.m4
@@ -1,514 +1,514 @@
dnl Determine the base directory used for subsequent m4_include calls
m4_define(PHP_MONGODB_BASEDIR, esyscmd(printf %s "$(dirname "__file__")"))
PHP_ARG_ENABLE([mongodb],
[whether to enable MongoDB support],
[AS_HELP_STRING([--enable-mongodb],
[Enable MongoDB support])])
if test "$PHP_MONGODB" != "no"; then
dnl Common includes for both bundled and system builds
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/m4/php_mongodb.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/m4/pkg.m4)
PKG_PROG_PKG_CONFIG
dnl Enable C99 (required for libmongoc 1.24+). On Autoconf 2.70+, this will
dnl already have been done when AC_PROG_CC is called from configure.ac.
m4_version_prereq([2.70],,[AC_PROG_CC_C99])
if test "$ac_cv_prog_cc_c99" = no; then
AC_MSG_ERROR([Compiler does not support C99])
fi
dnl Check PHP version is compatible with this extension
AC_MSG_CHECKING([PHP version])
if test -z "${PHP_VERSION_ID}"; then
if test -z "$PHP_CONFIG"; then
AC_MSG_ERROR([php-config not found])
fi
PHP_MONGODB_PHP_VERSION=`${PHP_CONFIG} --version`
PHP_MONGODB_PHP_VERSION_ID=`${PHP_CONFIG} --vernum`
else
PHP_MONGODB_PHP_VERSION="${PHP_VERSION}"
PHP_MONGODB_PHP_VERSION_ID="${PHP_VERSION_ID}"
fi
AC_MSG_RESULT($PHP_MONGODB_PHP_VERSION)
if test "$PHP_MONGODB_PHP_VERSION_ID" -lt "80100"; then
AC_MSG_ERROR([not supported. Need a PHP version >= 8.1.0 (found $PHP_MONGODB_PHP_VERSION)])
fi
PHP_MONGODB_STD_CFLAGS=""
PHP_MONGODB_DEV_CFLAGS=""
PHP_MONGODB_COVERAGE_CFLAGS=""
PHP_ARG_ENABLE([mongodb-developer-flags],
[whether to enable developer build flags],
[AS_HELP_STRING([--enable-mongodb-developer-flags],
[MongoDB: Enable developer flags [default=no]])],
[no],
[no])
PHP_MONGODB_VALIDATE_ARG([PHP_MONGODB_DEVELOPER_FLAGS], [yes no])
if test "$PHP_MONGODB_DEVELOPER_FLAGS" = "yes"; then
PHP_MONGODB_STD_CFLAGS="-g -O0 -Wall"
dnl Warn about functions which might be candidates for format attributes
AX_CHECK_COMPILE_FLAG(-Wmissing-format-attribute, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wmissing-format-attribute" ,, -Werror)
dnl Avoid duplicating values for an enum
AX_CHECK_COMPILE_FLAG(-Wduplicate-enum, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wduplicate-enum" ,, -Werror)
dnl Warns on mismatches between #ifndef and #define header guards
AX_CHECK_COMPILE_FLAG(-Wheader-guard, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wheader-guard" ,, -Werror)
dnl logical not of a non-boolean expression
AX_CHECK_COMPILE_FLAG(-Wlogical-not-parentheses, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wlogical-not-parentheses" ,, -Werror)
dnl Warn about suspicious uses of logical operators in expressions
AX_CHECK_COMPILE_FLAG(-Wlogical-op, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wlogical-op" ,, -Werror)
dnl memory error detector.
dnl FIXME: -fsanitize=address,undefined for clang. The AX_CHECK_COMPILE_FLAG macro isn't happy about that string :(
AX_CHECK_COMPILE_FLAG(-fsanitize-address, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -fsanitize-address" ,, -Werror)
dnl Enable frame debugging
AX_CHECK_COMPILE_FLAG(-fno-omit-frame-pointer, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -fno-omit-frame-pointer" ,, -Werror)
dnl Make sure we don't optimize calls
AX_CHECK_COMPILE_FLAG(-fno-optimize-sibling-calls, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -fno-optimize-sibling-calls" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wlogical-op-parentheses, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wlogical-op-parentheses" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wpointer-bool-conversion, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wpointer-bool-conversion" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wbool-conversion, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wbool-conversion" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wloop-analysis, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wloop-analysis" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wsizeof-array-argument, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wsizeof-array-argument" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wstring-conversion, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wstring-conversion" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wno-variadic-macros, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wno-variadic-macros" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wno-sign-compare, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wno-sign-compare" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-fstack-protector, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -fstack-protector" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-fno-exceptions, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -fno-exceptions" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wformat-security, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wformat-security" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wformat-nonliteral, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wformat-nonliteral" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Winit-self, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Winit-self" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wwrite-strings, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wwrite-strings" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wenum-compare, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wenum-compare" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wempty-body, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wempty-body" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wparentheses, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wparentheses" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wmaybe-uninitialized, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wmaybe-uninitialized" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wimplicit-fallthrough, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wimplicit-fallthrough" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Werror, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Werror" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wextra, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wextra" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wno-unused-parameter, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wno-unused-parameter" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wno-unused-but-set-variable, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wno-unused-but-set-variable" ,, -Werror)
AX_CHECK_COMPILE_FLAG(-Wno-missing-field-initializers, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wno-missing-field-initializers",, -Werror)
if test "$PHP_MONGODB_PHP_VERSION_ID" -ge "80108"; then
AX_CHECK_COMPILE_FLAG(-Wstrict-prototypes, PHP_MONGODB_DEV_CFLAGS="$PHP_MONGODB_DEV_CFLAGS -Wstrict-prototypes",, -Werror)
fi
fi
PHP_ARG_ENABLE([mongodb-coverage],
[whether to enable code coverage],
[AS_HELP_STRING([--enable-mongodb-coverage],
[MongoDB: Enable developer code coverage information [default=no]])],
[no],
[no])
PHP_MONGODB_VALIDATE_ARG([PHP_MONGODB_COVERAGE], [yes no])
if test "$PHP_MONGODB_COVERAGE" = "yes"; then
if test "$ext_shared" != "yes"; then
AC_MSG_ERROR(code coverage is not supported for static builds)
fi
PHP_MONGODB_COVERAGE_CFLAGS="--coverage -g"
MONGODB_SHARED_LIBADD="$MONGODB_SHARED_LIBADD --coverage"
fi
PHP_MONGODB_CFLAGS="$PHP_MONGODB_STD_CFLAGS $PHP_MONGODB_DEV_CFLAGS $PHP_MONGODB_COVERAGE_CFLAGS"
PHP_MONGODB_SOURCES="\
php_phongo.c \
src/phongo_apm.c \
src/phongo_atomic.c \
src/phongo_bson.c \
src/phongo_bson_encode.c \
src/phongo_client.c \
src/phongo_compat.c \
src/phongo_error.c \
src/phongo_execute.c \
src/phongo_ini.c \
src/phongo_log.c \
src/phongo_util.c \
src/BSON/Binary.c \
src/BSON/BinaryInterface.c \
src/BSON/Document.c \
src/BSON/Iterator.c \
src/BSON/DBPointer.c \
src/BSON/Decimal128.c \
src/BSON/Decimal128Interface.c \
src/BSON/Int64.c \
src/BSON/Javascript.c \
src/BSON/JavascriptInterface.c \
src/BSON/MaxKey.c \
src/BSON/MaxKeyInterface.c \
src/BSON/MinKey.c \
src/BSON/MinKeyInterface.c \
src/BSON/ObjectId.c \
src/BSON/ObjectIdInterface.c \
src/BSON/PackedArray.c \
src/BSON/Persistable.c \
src/BSON/Regex.c \
src/BSON/RegexInterface.c \
src/BSON/Serializable.c \
src/BSON/Symbol.c \
src/BSON/Timestamp.c \
src/BSON/TimestampInterface.c \
src/BSON/Type.c \
src/BSON/Undefined.c \
src/BSON/Unserializable.c \
src/BSON/UTCDateTime.c \
src/BSON/UTCDateTimeInterface.c \
src/MongoDB/BulkWrite.c \
src/MongoDB/BulkWriteCommand.c \
src/MongoDB/BulkWriteCommandResult.c \
src/MongoDB/ClientEncryption.c \
src/MongoDB/Command.c \
src/MongoDB/Cursor.c \
src/MongoDB/CursorInterface.c \
src/MongoDB/Manager.c \
src/MongoDB/Query.c \
src/MongoDB/ReadConcern.c \
src/MongoDB/ReadPreference.c \
src/MongoDB/Server.c \
src/MongoDB/ServerApi.c \
src/MongoDB/ServerDescription.c \
src/MongoDB/Session.c \
src/MongoDB/TopologyDescription.c \
src/MongoDB/WriteConcern.c \
src/MongoDB/WriteConcernError.c \
src/MongoDB/WriteError.c \
src/MongoDB/WriteResult.c \
src/MongoDB/Exception/AuthenticationException.c \
src/MongoDB/Exception/BulkWriteException.c \
src/MongoDB/Exception/BulkWriteCommandException.c \
src/MongoDB/Exception/CommandException.c \
src/MongoDB/Exception/ConnectionException.c \
src/MongoDB/Exception/ConnectionTimeoutException.c \
src/MongoDB/Exception/EncryptionException.c \
src/MongoDB/Exception/Exception.c \
src/MongoDB/Exception/ExecutionTimeoutException.c \
src/MongoDB/Exception/InvalidArgumentException.c \
src/MongoDB/Exception/LogicException.c \
src/MongoDB/Exception/RuntimeException.c \
src/MongoDB/Exception/ServerException.c \
src/MongoDB/Exception/UnexpectedValueException.c \
src/MongoDB/Monitoring/CommandFailedEvent.c \
src/MongoDB/Monitoring/CommandStartedEvent.c \
src/MongoDB/Monitoring/CommandSubscriber.c \
src/MongoDB/Monitoring/CommandSucceededEvent.c \
src/MongoDB/Monitoring/LogSubscriber.c \
src/MongoDB/Monitoring/SDAMSubscriber.c \
src/MongoDB/Monitoring/Subscriber.c \
src/MongoDB/Monitoring/ServerChangedEvent.c \
src/MongoDB/Monitoring/ServerClosedEvent.c \
src/MongoDB/Monitoring/ServerHeartbeatFailedEvent.c \
src/MongoDB/Monitoring/ServerHeartbeatStartedEvent.c \
src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent.c \
src/MongoDB/Monitoring/ServerOpeningEvent.c \
src/MongoDB/Monitoring/TopologyChangedEvent.c \
src/MongoDB/Monitoring/TopologyClosedEvent.c \
src/MongoDB/Monitoring/TopologyOpeningEvent.c \
src/MongoDB/Monitoring/functions.c \
"
PHP_ARG_WITH([mongodb-system-libs],
[whether to compile against system libraries instead of bundled],
[AS_HELP_STRING([--with-mongodb-system-libs=@<:@yes/no@:>@],
[MongoDB: Use system libraries for libbson, libmongoc, and libmongocrypt [default=no]])],
[no],
[no])
PHP_MONGODB_VALIDATE_ARG([PHP_MONGODB_SYSTEM_LIBS], [yes no])
PHP_ARG_WITH([mongodb-client-side-encryption],
[whether to enable client-side encryption],
[AS_HELP_STRING([--with-mongodb-client-side-encryption=@<:@auto/yes/no@:>@],
[MongoDB: Enable client-side encryption [default=auto]])],
[auto],
[no])
PHP_MONGODB_VALIDATE_ARG([PHP_MONGODB_CLIENT_SIDE_ENCRYPTION], [auto yes no])
PHP_MONGODB_BSON_VERSION_STRING="None"
PHP_MONGODB_MONGOC_VERSION_STRING="None"
PHP_MONGODB_MONGOCRYPT_VERSION_STRING="None"
if test "$PHP_MONGODB_SYSTEM_LIBS" != "no"; then
- PKG_CHECK_MODULES([PHP_MONGODB_BSON], [libbson-1.0 >= 1.30.4], [
+ PKG_CHECK_MODULES([PHP_MONGODB_BSON], [libbson-1.0 >= 1.30.5], [
PHP_MONGODB_BSON_VERSION=`$PKG_CONFIG libbson-1.0 --modversion`
PHP_MONGODB_BSON_VERSION_STRING="System ($PHP_MONGODB_BSON_VERSION)"
PHP_MONGODB_CFLAGS="$PHP_MONGODB_CFLAGS $PHP_MONGODB_BSON_CFLAGS"
PHP_EVAL_LIBLINE($PHP_MONGODB_BSON_LIBS, MONGODB_SHARED_LIBADD)
AC_DEFINE(HAVE_SYSTEM_LIBBSON, 1, [Use system libbson])
],[
- AC_MSG_ERROR([Could not find system library for libbson >= 1.30.4])
+ AC_MSG_ERROR([Could not find system library for libbson >= 1.30.5])
])
- PKG_CHECK_MODULES([PHP_MONGODB_MONGOC], [libmongoc-1.0 >= 1.30.4], [
+ PKG_CHECK_MODULES([PHP_MONGODB_MONGOC], [libmongoc-1.0 >= 1.30.5], [
PHP_MONGODB_BSON_VERSION=`$PKG_CONFIG libbson-1.0 --modversion`
PHP_MONGODB_BSON_VERSION_STRING="System ($PHP_MONGODB_BSON_VERSION)"
PHP_MONGODB_CFLAGS="$PHP_MONGODB_CFLAGS $PHP_MONGODB_MONGOC_CFLAGS"
PHP_EVAL_LIBLINE($PHP_MONGODB_MONGOC_LIBS, MONGODB_SHARED_LIBADD)
AC_DEFINE(HAVE_SYSTEM_LIBMONGOC, 1, [Use system libmongoc])
],[
- AC_MSG_ERROR(Could not find system library for libmongoc >= 1.30.4)
+ AC_MSG_ERROR(Could not find system library for libmongoc >= 1.30.5)
])
if test "$PHP_MONGODB_CLIENT_SIDE_ENCRYPTION" != "no"; then
PKG_CHECK_MODULES([PHP_MONGODB_MONGOCRYPT], [libmongocrypt >= 1.12.0], [
PHP_MONGODB_MONGOCRYPT_VERSION=`$PKG_CONFIG libmongocrypt --modversion`
PHP_MONGODB_MONGOCRYPT_VERSION_STRING="System ($PHP_MONGODB_MONGOCRYPT_VERSION)"
PHP_MONGODB_CFLAGS="$PHP_MONGODB_CFLAGS $PHP_MONGODB_MONGOCRYPT_CFLAGS"
PHP_EVAL_LIBLINE($PHP_MONGODB_MONGOCRYPT_LIBS, MONGODB_SHARED_LIBADD)
AC_DEFINE(HAVE_SYSTEM_LIBMONGOCRYPT, 1, [Use system libmongocrypt])
],[
AC_MSG_ERROR(Could not find system library for libmongocrypt >= 1.12.0)
])
fi
fi
if test "$PHP_MONGODB_SYSTEM_LIBS" = "no"; then
PHP_MONGODB_BUNDLED_CFLAGS="$PHP_MONGODB_STD_CFLAGS -DBSON_COMPILATION -DMONGOC_COMPILATION"
dnl CheckUtf8Proc.m4 will modify this when using bundled utf8proc
PHP_MONGODB_UTF8PROC_CFLAGS=""
dnl CheckCompression.m4 will modify this when using bundled zlib
PHP_MONGODB_ZLIB_CFLAGS=""
dnl Endian.m4 will modify this when using bundled libmongocrypt
PHP_MONGODB_LIBMONGOCRYPT_CFLAGS=""
dnl Save CPPFLAGS, which PlatformFlags.m4 modifies for subsequent M4 scripts
old_CPPFLAGS="$CPPFLAGS"
dnl Avoid using AC_CONFIG_MACRO_DIR, which might conflict with PHP
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/m4/ax_check_compile_flag.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/m4/ax_prototype.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/m4/ax_prototype_accept.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/m4/ax_pthread.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/CheckCompiler.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/CheckHost.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/PlatformFlags.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libbson/CheckHeaders.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libbson/Endian.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libbson/FindDependencies.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libbson/Versions.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libmongoc/CheckCompression.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libmongoc/CheckResolv.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libmongoc/CheckSasl.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libmongoc/CheckSSL.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libmongoc/CheckUtf8Proc.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libmongoc/Endian.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libmongoc/FindDependencies.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libmongoc/Versions.m4)
dnl This include modifies the value of $PHP_MONGODB_CLIENT_SIDE_ENCRYPTION to "yes"
dnl or "no" depending on whether dependencies for libmongocrypt are fulfilled
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libmongocrypt/CheckSSL.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libmongocrypt/Endian.m4)
m4_include(PHP_MONGODB_BASEDIR/scripts/autotools/libmongocrypt/Version.m4)
dnl Restore CPPFLAGS once all M4 scripts have executed
CPPFLAGS="$old_CPPFLAGS"
PHP_MONGODB_BSON_VERSION_STRING="Bundled ($libbson_VERSION_FULL)"
PHP_MONGODB_MONGOC_VERSION_STRING="Bundled ($libmongoc_VERSION_FULL)"
AC_SUBST(BSON_EXTRA_ALIGN, 0)
AC_SUBST(BSON_OS, 1)
AC_SUBST(MONGOC_NO_AUTOMATIC_GLOBALS, 1)
AC_SUBST(MONGOC_ENABLE_MONGODB_AWS_AUTH, 0)
AC_SUBST(MONGOC_ENABLE_RDTSCP, 0)
AC_SUBST(MONGOC_ENABLE_SHM_COUNTERS, 0)
AC_SUBST(MONGOC_TRACE, 1)
dnl Assignments for metadata handshake. Leave CFLAGS/LDFLAGS empty as they
dnl would likely cause platform info (PHP version) to be truncated. We can
dnl consider restoring CFLAGS/LDFLAGS once CDRIVER-3134 is resolved.
AC_SUBST(MONGOC_CC, [$CC])
AC_SUBST(MONGOC_USER_SET_CFLAGS, [])
AC_SUBST(MONGOC_USER_SET_LDFLAGS, [])
if test "$PHP_MONGODB_CLIENT_SIDE_ENCRYPTION" = "yes"; then
AC_SUBST(MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION, 1)
else
AC_SUBST(MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION, 0)
fi
if test "$PHP_MONGODB_DEVELOPER_FLAGS" = "yes"; then
AC_SUBST(MONGOC_ENABLE_DEBUG_ASSERTIONS, 1)
else
AC_SUBST(MONGOC_ENABLE_DEBUG_ASSERTIONS, 0)
fi
dnl Sources below are updated by scripts/update-submodule-sources.php
PHP_MONGODB_COMMON_SOURCES="common-atomic.c common-b64.c common-json.c common-md5.c common-oid.c common-string.c common-thread.c"
PHP_MONGODB_KMS_MESSAGE_SOURCES="hexlify.c kms_azure_request.c kms_b64.c kms_caller_identity_request.c kms_crypto_apple.c kms_crypto_libcrypto.c kms_crypto_none.c kms_crypto_windows.c kms_decrypt_request.c kms_encrypt_request.c kms_gcp_request.c kms_kmip_reader_writer.c kms_kmip_request.c kms_kmip_response.c kms_kmip_response_parser.c kms_kv_list.c kms_message.c kms_port.c kms_request.c kms_request_opt.c kms_request_str.c kms_response.c kms_response_parser.c sort.c"
- PHP_MONGODB_BSON_SOURCES="bcon.c bson-atomic.c bson.c bson-clock.c bson-context.c bson-decimal128.c bson-error.c bson-iso8601.c bson-iter.c bson-json.c bson-keys.c bson-md5.c bson-memory.c bson-oid.c bson-reader.c bson-string.c bson-timegm.c bson-utf8.c bson-value.c bson-version-functions.c bson-writer.c"
+ PHP_MONGODB_BSON_SOURCES="bcon.c bson-atomic.c bson.c bson-clock.c bson-context.c bson-decimal128.c bson-error.c bson-iso8601.c bson-iter.c bson-json.c bson-keys.c bson-md5.c bson-memory.c bson-oid.c bson-reader.c bson-string.c bson-timegm.c bson-utf8.c bson-value.c bson-version-functions.c bson-writer.c validate.c"
PHP_MONGODB_JSONSL_SOURCES="jsonsl.c"
PHP_MONGODB_MONGOC_SOURCES="mcd-azure.c mcd-nsinfo.c mcd-rpc.c mongoc-aggregate.c mongoc-apm.c mongoc-array.c mongoc-async.c mongoc-async-cmd.c mongoc-buffer.c mongoc-bulk-operation.c mongoc-bulkwrite.c mongoc-change-stream.c mongoc-client.c mongoc-client-pool.c mongoc-client-session.c mongoc-client-side-encryption.c mongoc-cluster-aws.c mongoc-cluster.c mongoc-cluster-cyrus.c mongoc-cluster-sasl.c mongoc-cluster-sspi.c mongoc-cmd.c mongoc-collection.c mongoc-compression.c mongoc-counters.c mongoc-crypt.c mongoc-crypto.c mongoc-crypto-cng.c mongoc-crypto-common-crypto.c mongoc-crypto-openssl.c mongoc-cursor-array.c mongoc-cursor.c mongoc-cursor-change-stream.c mongoc-cursor-cmd.c mongoc-cursor-cmd-deprecated.c mongoc-cursor-find.c mongoc-cursor-find-cmd.c mongoc-cursor-find-opquery.c mongoc-cursor-legacy.c mongoc-cyrus.c mongoc-database.c mongoc-deprioritized-servers.c mongoc-error.c mongoc-find-and-modify.c mongoc-flags.c mongoc-generation-map.c mongoc-gridfs-bucket.c mongoc-gridfs-bucket-file.c mongoc-gridfs.c mongoc-gridfs-file.c mongoc-gridfs-file-list.c mongoc-gridfs-file-page.c mongoc-handshake.c mongoc-host-list.c mongoc-http.c mongoc-index.c mongoc-init.c mongoc-interrupt.c mongoc-libressl.c mongoc-linux-distro-scanner.c mongoc-list.c mongoc-log-and-monitor-private.c mongoc-log.c mongoc-matcher.c mongoc-matcher-op.c mongoc-memcmp.c mongoc-ocsp-cache.c mongoc-opcode.c mongoc-openssl.c mongoc-optional.c mongoc-opts.c mongoc-opts-helpers.c mongoc-queue.c mongoc-rand-cng.c mongoc-rand-common-crypto.c mongoc-rand-openssl.c mongoc-read-concern.c mongoc-read-prefs.c mongoc-rpc.c mongoc-sasl.c mongoc-scram.c mongoc-secure-channel.c mongoc-secure-transport.c mongoc-server-api.c mongoc-server-description.c mongoc-server-monitor.c mongoc-server-stream.c mongoc-set.c mongoc-shared.c mongoc-socket.c mongoc-ssl.c mongoc-sspi.c mongoc-stream-buffered.c mongoc-stream.c mongoc-stream-file.c mongoc-stream-gridfs.c mongoc-stream-gridfs-download.c mongoc-stream-gridfs-upload.c mongoc-stream-socket.c mongoc-stream-tls.c mongoc-stream-tls-libressl.c mongoc-stream-tls-openssl-bio.c mongoc-stream-tls-openssl.c mongoc-stream-tls-secure-channel.c mongoc-stream-tls-secure-transport.c mongoc-structured-log.c mongoc-timeout.c mongoc-topology-background-monitoring.c mongoc-topology.c mongoc-topology-description-apm.c mongoc-topology-description.c mongoc-topology-scanner.c mongoc-ts-pool.c mongoc-uri.c mongoc-util.c mongoc-version-functions.c mongoc-write-command.c mongoc-write-concern.c service-gcp.c"
PHP_MONGODB_UTF8PROC_SOURCES="utf8proc.c"
PHP_MONGODB_ZLIB_SOURCES="adler32.c compress.c crc32.c deflate.c gzclose.c gzlib.c gzread.c gzwrite.c infback.c inffast.c inflate.c inftrees.c trees.c uncompr.c zutil.c"
PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/common/src/], $PHP_MONGODB_COMMON_SOURCES, $PHP_MONGODB_BUNDLED_CFLAGS)
PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/libbson/src/bson/], $PHP_MONGODB_BSON_SOURCES, $PHP_MONGODB_BUNDLED_CFLAGS)
PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/libbson/src/jsonsl/], $PHP_MONGODB_JSONSL_SOURCES, $PHP_MONGODB_BUNDLED_CFLAGS)
PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/libmongoc/src/mongoc/], $PHP_MONGODB_MONGOC_SOURCES, $PHP_MONGODB_BUNDLED_CFLAGS)
PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/common/src/])
PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/uthash/])
PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/libbson/src/])
PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/libbson/src/jsonsl/])
PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/libmongoc/src/])
PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/common/src/])
PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/libbson/src/bson/])
PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/libbson/src/jsonsl/])
PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/libmongoc/src/mongoc/])
dnl If compiling without libmongocrypt, use kms_message sources bundled with libmongoc.
dnl If compiling with libmongocrypt, kms_message bundled with libmongocrypt is used as it is most likely newer.
if test "$PHP_MONGODB_CLIENT_SIDE_ENCRYPTION" != "yes" && test "$PHP_MONGODB_SSL" != "no"; then
AC_SUBST(MONGOC_ENABLE_MONGODB_AWS_AUTH, 1)
PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/kms-message/src/], $PHP_MONGODB_KMS_MESSAGE_SOURCES, $PHP_MONGODB_BUNDLED_CFLAGS)
PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/kms-message/src/])
PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/kms-message/src/])
fi
dnl TODO: Use $ext_srcdir if we can move this after PHP_NEW_EXTENSION
ac_config_dir=PHP_EXT_SRCDIR(mongodb)
AC_CONFIG_FILES([
${ac_config_dir}/src/libmongoc/src/common/src/common-config.h
${ac_config_dir}/src/libmongoc/src/libbson/src/bson/bson-config.h
${ac_config_dir}/src/libmongoc/src/libbson/src/bson/bson-version.h
${ac_config_dir}/src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h
${ac_config_dir}/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h
])
if test "x$bundled_utf8proc" = "xyes"; then
PHP_MONGODB_UTF8PROC_CFLAGS="$PHP_MONGODB_BUNDLED_CFLAGS $PHP_MONGODB_UTF8PROC_CFLAGS"
PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/utf8proc-2.8.0/], $PHP_MONGODB_UTF8PROC_SOURCES, $PHP_MONGODB_UTF8PROC_CFLAGS)
PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/utf8proc-2.8.0/])
PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/utf8proc-2.8.0/])
fi
if test "x$bundled_zlib" = "xyes"; then
PHP_MONGODB_ZLIB_CFLAGS="$PHP_MONGODB_BUNDLED_CFLAGS $PHP_MONGODB_ZLIB_CFLAGS"
PHP_MONGODB_ADD_SOURCES([src/libmongoc/src/zlib-1.3.1/], $PHP_MONGODB_ZLIB_SOURCES, $PHP_MONGODB_ZLIB_CFLAGS)
PHP_MONGODB_ADD_INCLUDE([src/libmongoc/src/zlib-1.3.1/])
PHP_MONGODB_ADD_BUILD_DIR([src/libmongoc/src/zlib-1.3.1/])
AC_CONFIG_FILES([${ac_config_dir}/src/libmongoc/src/zlib-1.3.1/zconf.h])
fi
if test "$PHP_MONGODB_CLIENT_SIDE_ENCRYPTION" = "yes"; then
PHP_MONGODB_LIBMONGOCRYPT_CFLAGS="$PHP_MONGODB_BUNDLED_CFLAGS $PHP_MONGODB_LIBMONGOCRYPT_CFLAGS -DKMS_MSG_STATIC -DMLIB_USER"
PHP_MONGODB_MONGOCRYPT_VERSION_STRING="Bundled ($MONGOCRYPT_BUILD_VERSION)"
dnl Since libmongocrypt adds kms-message, we can enable AWS auth in this case
AC_SUBST(MONGOC_ENABLE_MONGODB_AWS_AUTH, 1)
AC_SUBST(MONGOCRYPT_ENABLE_TRACE, 1)
dnl Sources below are updated by scripts/update-submodule-sources.php
PHP_MONGODB_MONGOCRYPT_SOURCES="mc-array.c mc-efc.c mc-fle2-encryption-placeholder.c mc-fle2-find-equality-payload.c mc-fle2-find-equality-payload-v2.c mc-fle2-find-range-payload.c mc-fle2-find-range-payload-v2.c mc-fle2-insert-update-payload.c mc-fle2-insert-update-payload-v2.c mc-fle2-payload-iev.c mc-fle2-payload-iev-v2.c mc-fle2-payload-uev.c mc-fle2-payload-uev-common.c mc-fle2-payload-uev-v2.c mc-fle2-rfds.c mc-fle2-tag-and-encrypted-metadata-block.c mc-range-edge-generation.c mc-range-encoding.c mc-range-mincover.c mc-rangeopts.c mc-reader.c mc-tokens.c mc-writer.c mongocrypt-binary.c mongocrypt-buffer.c mongocrypt.c mongocrypt-cache.c mongocrypt-cache-collinfo.c mongocrypt-cache-key.c mongocrypt-cache-oauth.c mongocrypt-ciphertext.c mongocrypt-crypto.c mongocrypt-ctx.c mongocrypt-ctx-datakey.c mongocrypt-ctx-decrypt.c mongocrypt-ctx-encrypt.c mongocrypt-ctx-rewrap-many-datakey.c mongocrypt-endpoint.c mongocrypt-kek.c mongocrypt-key-broker.c mongocrypt-key.c mongocrypt-kms-ctx.c mongocrypt-log.c mongocrypt-marking.c mongocrypt-opts.c mongocrypt-status.c mongocrypt-traverse-util.c mongocrypt-util.c"
PHP_MONGODB_MONGOCRYPT_CRYPTO_SOURCES="cng.c commoncrypto.c libcrypto.c none.c"
PHP_MONGODB_MONGOCRYPT_OS_POSIX_SOURCES="os_dll.c os_mutex.c"
PHP_MONGODB_MONGOCRYPT_OS_WIN_SOURCES="os_dll.c os_mutex.c"
PHP_MONGODB_MONGOCRYPT_KMS_MESSAGE_SOURCES="hexlify.c kms_azure_request.c kms_b64.c kms_caller_identity_request.c kms_crypto_apple.c kms_crypto_libcrypto.c kms_crypto_none.c kms_crypto_windows.c kms_decrypt_request.c kms_encrypt_request.c kms_gcp_request.c kms_kmip_reader_writer.c kms_kmip_request.c kms_kmip_response.c kms_kmip_response_parser.c kms_kv_list.c kms_message.c kms_port.c kms_request.c kms_request_opt.c kms_request_str.c kms_response.c kms_response_parser.c sort.c"
PHP_MONGODB_ADD_SOURCES([src/libmongocrypt/src/], $PHP_MONGODB_MONGOCRYPT_SOURCES, $PHP_MONGODB_LIBMONGOCRYPT_CFLAGS)
PHP_MONGODB_ADD_SOURCES([src/libmongocrypt/src/crypto/], $PHP_MONGODB_MONGOCRYPT_CRYPTO_SOURCES, $PHP_MONGODB_LIBMONGOCRYPT_CFLAGS)
PHP_MONGODB_ADD_SOURCES([src/libmongocrypt/src/os_posix/], $PHP_MONGODB_MONGOCRYPT_OS_POSIX_SOURCES, $PHP_MONGODB_LIBMONGOCRYPT_CFLAGS)
PHP_MONGODB_ADD_SOURCES([src/libmongocrypt/src/os_win/], $PHP_MONGODB_MONGOCRYPT_OS_WIN_SOURCES, $PHP_MONGODB_LIBMONGOCRYPT_CFLAGS)
PHP_MONGODB_ADD_SOURCES([src/libmongocrypt/kms-message/src/], $PHP_MONGODB_MONGOCRYPT_KMS_MESSAGE_SOURCES, $PHP_MONGODB_LIBMONGOCRYPT_CFLAGS)
PHP_MONGODB_ADD_INCLUDE([src/libmongocrypt/src/])
PHP_MONGODB_ADD_INCLUDE([src/libmongocrypt/kms-message/src/])
PHP_MONGODB_ADD_INCLUDE([src/libmongocrypt-compat/])
PHP_MONGODB_ADD_BUILD_DIR([src/libmongocrypt/src/])
PHP_MONGODB_ADD_BUILD_DIR([src/libmongocrypt/src/crypto/])
PHP_MONGODB_ADD_BUILD_DIR([src/libmongocrypt/src/os_posix/])
PHP_MONGODB_ADD_BUILD_DIR([src/libmongocrypt/src/os_win/])
PHP_MONGODB_ADD_BUILD_DIR([src/libmongocrypt/kms-message/src/])
AC_CONFIG_FILES([
${ac_config_dir}/src/libmongocrypt/src/mongocrypt-config.h
])
fi
fi
PHP_NEW_EXTENSION(mongodb, $PHP_MONGODB_SOURCES, $ext_shared,, $PHP_MONGODB_CFLAGS)
PHP_SUBST(MONGODB_SHARED_LIBADD)
PHP_ADD_EXTENSION_DEP(mongodb, date)
PHP_ADD_EXTENSION_DEP(mongodb, json)
PHP_ADD_EXTENSION_DEP(mongodb, spl)
PHP_ADD_EXTENSION_DEP(mongodb, standard)
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR(mongodb)[/src/])
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR(mongodb)[/src/BSON/])
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR(mongodb)[/src/MongoDB/])
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR(mongodb)[/src/MongoDB/Exception/])
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR(mongodb)[/src/MongoDB/Monitoring/])
PHP_ADD_INCLUDE(PHP_EXT_SRCDIR(mongodb)[/src/contrib/])
PHP_ADD_BUILD_DIR(PHP_EXT_BUILDDIR(mongodb)[/src/])
PHP_ADD_BUILD_DIR(PHP_EXT_BUILDDIR(mongodb)[/src/BSON/])
PHP_ADD_BUILD_DIR(PHP_EXT_BUILDDIR(mongodb)[/src/MongoDB/])
PHP_ADD_BUILD_DIR(PHP_EXT_BUILDDIR(mongodb)[/src/MongoDB/Exception/])
PHP_ADD_BUILD_DIR(PHP_EXT_BUILDDIR(mongodb)[/src/MongoDB/Monitoring/])
PHP_ADD_BUILD_DIR(PHP_EXT_BUILDDIR(mongodb)[/src/contrib/])
dnl Necessary to ensure that static builds include "-pthread" when linking
if test "$ext_shared" != "yes"; then
EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM $EXTRA_LDFLAGS"
fi
dnl This must come after PHP_NEW_EXTENSION, otherwise the srcdir won't be set
PHP_ADD_MAKEFILE_FRAGMENT
AC_CONFIG_COMMANDS_POST([
if test "$enable_static" = "no"; then
echo "
mongodb was configured with the following options:
Build configuration:
CC : $CC
CFLAGS : $CFLAGS
CPPFLAGS : $CPPFLAGS
Extra flags : $PHP_MONGODB_STD_CFLAGS
Developer flags (slow) : $PHP_MONGODB_DEV_CFLAGS
Code Coverage flags (extra slow) : $PHP_MONGODB_COVERAGE_CFLAGS
libmongoc : $PHP_MONGODB_BSON_VERSION_STRING
libbson : $PHP_MONGODB_MONGOC_VERSION_STRING
libmongocrypt : $PHP_MONGODB_MONGOCRYPT_VERSION_STRING
LDFLAGS : $LDFLAGS
EXTRA_LDFLAGS : $EXTRA_LDFLAGS
MONGODB_SHARED_LIBADD : $MONGODB_SHARED_LIBADD
Please submit bugreports at:
https://jira.mongodb.org/browse/PHPC
"
fi
])
fi
dnl: vim: et sw=2
diff --git a/mongodb-2.1.0/config.w32 b/mongodb-2.1.1/config.w32
similarity index 99%
rename from mongodb-2.1.0/config.w32
rename to mongodb-2.1.1/config.w32
index fb1f2363..8b0c8633 100644
--- a/mongodb-2.1.0/config.w32
+++ b/mongodb-2.1.1/config.w32
@@ -1,337 +1,337 @@
// vim:ft=javascript
function mongodb_generate_header(inpath, outpath, replacements)
{
STDOUT.WriteLine("Generating " + outpath);
var infile = FSO.OpenTextFile(inpath, 1);
var outdata = infile.ReadAll();
infile.Close();
for (var key in replacements) {
var replacement = replacements[key];
if (typeof replacement === 'string') {
replacement = replacement.replace(/"/g, '\\"');
}
outdata = outdata.replace(new RegExp('@' + key + '@', 'g'), replacement);
}
var outfile = FSO.CreateTextFile(outpath, true);
outfile.Write(outdata);
outfile.Close();
}
function mongodb_parse_libmongoc_version_file(prefix)
{
var infile = FSO.OpenTextFile(configure_module_dirname + "/src/LIBMONGOC_VERSION_CURRENT", 1);
var version = infile.ReadLine();
infile.Close();
var xyz_pre = version.split("-");
var xyz = xyz_pre[0].split(".");
var pre = xyz_pre.length > 1 ? xyz_pre[1] : "";
var replacements = {};
replacements[prefix + "VERSION_FULL"] = version;
replacements[prefix + "VERSION_MAJOR"] = xyz[0];
replacements[prefix + "VERSION_MINOR"] = xyz[1];
replacements[prefix + "VERSION_PATCH"] = xyz[2];
replacements[prefix + "VERSION_PRERELEASE"] = pre;
return replacements;
}
function mongodb_get_libmongocrypt_version()
{
var infile = FSO.OpenTextFile(configure_module_dirname + "/src/LIBMONGOCRYPT_VERSION_CURRENT", 1);
var version = infile.ReadLine();
infile.Close();
return version;
}
function create_folder_recursive(path)
{
if (FSO.FolderExists(path)) {
return;
}
create_folder_recursive(FSO.GetParentFolderName(path));
FSO.CreateFolder(path);
}
function MONGODB_ADD_SOURCES(dir, file_list)
{
// Ensure obj_dir and all parent directories exist
create_folder_recursive(FSO.BuildPath(get_define('BUILD_DIR'), dir));
ADD_SOURCES(configure_module_dirname + dir, file_list, "mongodb", dir);
}
ARG_ENABLE("mongodb", "MongoDB support", "no");
ARG_WITH("mongodb-sasl", "MongoDB: Build against Cyrus-SASL", "yes");
ARG_WITH("mongodb-client-side-encryption", "MongoDB: Enable client-side encryption", "yes");
if (PHP_MONGODB != "no") {
ADD_EXTENSION_DEP("mongodb", "date", false);
ADD_EXTENSION_DEP("mongodb", "standard", false);
ADD_EXTENSION_DEP("mongodb", "json", false);
ADD_EXTENSION_DEP("mongodb", "spl", false);
/* MongoDB does not actually depend on PHP's OpenSSL extension, but this is in
* place to ensure that later SSL library checks succeed. This can be removed
* once we support building with Secure Channel. */
ADD_EXTENSION_DEP("mongodb", "openssl", false);
var PHP_MONGODB_CFLAGS="\
/D BSON_COMPILATION /D MONGOC_COMPILATION /D UTF8PROC_STATIC \
/I" + configure_module_dirname + " \
/I" + configure_module_dirname + "/src \
/I" + configure_module_dirname + "/src/BSON \
/I" + configure_module_dirname + "/src/MongoDB \
/I" + configure_module_dirname + "/src/MongoDB/Exception \
/I" + configure_module_dirname + "/src/MongoDB/Monitoring \
/I" + configure_module_dirname + "/src/contrib \
/I" + configure_module_dirname + "/src/libmongoc/src/common/src \
/I" + configure_module_dirname + "/src/libmongoc/src/uthash \
/I" + configure_module_dirname + "/src/libmongoc/src/libbson/src \
/I" + configure_module_dirname + "/src/libmongoc/src/libbson/src/jsonsl \
/I" + configure_module_dirname + "/src/libmongoc/src/libmongoc/src \
/I" + configure_module_dirname + "/src/libmongoc/src/libmongoc/src/mongoc \
/I" + configure_module_dirname + "/src/libmongoc/src/utf8proc-2.8.0 \
";
// Condense whitespace in CFLAGS
PHP_MONGODB_CFLAGS = PHP_MONGODB_CFLAGS.replace(/\s+/g, ' ');
// Sources below are updated by scripts/update-submodule-sources.php
var PHP_MONGODB_COMMON_SOURCES="common-atomic.c common-b64.c common-json.c common-md5.c common-oid.c common-string.c common-thread.c"
var PHP_MONGODB_KMS_MESSAGE_SOURCES="hexlify.c kms_azure_request.c kms_b64.c kms_caller_identity_request.c kms_crypto_apple.c kms_crypto_libcrypto.c kms_crypto_none.c kms_crypto_windows.c kms_decrypt_request.c kms_encrypt_request.c kms_gcp_request.c kms_kmip_reader_writer.c kms_kmip_request.c kms_kmip_response.c kms_kmip_response_parser.c kms_kv_list.c kms_message.c kms_port.c kms_request.c kms_request_opt.c kms_request_str.c kms_response.c kms_response_parser.c sort.c";
- var PHP_MONGODB_BSON_SOURCES="bcon.c bson-atomic.c bson.c bson-clock.c bson-context.c bson-decimal128.c bson-error.c bson-iso8601.c bson-iter.c bson-json.c bson-keys.c bson-md5.c bson-memory.c bson-oid.c bson-reader.c bson-string.c bson-timegm.c bson-utf8.c bson-value.c bson-version-functions.c bson-writer.c";
+ var PHP_MONGODB_BSON_SOURCES="bcon.c bson-atomic.c bson.c bson-clock.c bson-context.c bson-decimal128.c bson-error.c bson-iso8601.c bson-iter.c bson-json.c bson-keys.c bson-md5.c bson-memory.c bson-oid.c bson-reader.c bson-string.c bson-timegm.c bson-utf8.c bson-value.c bson-version-functions.c bson-writer.c validate.c";
var PHP_MONGODB_JSONSL_SOURCES="jsonsl.c";
var PHP_MONGODB_MONGOC_SOURCES="mcd-azure.c mcd-nsinfo.c mcd-rpc.c mongoc-aggregate.c mongoc-apm.c mongoc-array.c mongoc-async.c mongoc-async-cmd.c mongoc-buffer.c mongoc-bulk-operation.c mongoc-bulkwrite.c mongoc-change-stream.c mongoc-client.c mongoc-client-pool.c mongoc-client-session.c mongoc-client-side-encryption.c mongoc-cluster-aws.c mongoc-cluster.c mongoc-cluster-cyrus.c mongoc-cluster-sasl.c mongoc-cluster-sspi.c mongoc-cmd.c mongoc-collection.c mongoc-compression.c mongoc-counters.c mongoc-crypt.c mongoc-crypto.c mongoc-crypto-cng.c mongoc-crypto-common-crypto.c mongoc-crypto-openssl.c mongoc-cursor-array.c mongoc-cursor.c mongoc-cursor-change-stream.c mongoc-cursor-cmd.c mongoc-cursor-cmd-deprecated.c mongoc-cursor-find.c mongoc-cursor-find-cmd.c mongoc-cursor-find-opquery.c mongoc-cursor-legacy.c mongoc-cyrus.c mongoc-database.c mongoc-deprioritized-servers.c mongoc-error.c mongoc-find-and-modify.c mongoc-flags.c mongoc-generation-map.c mongoc-gridfs-bucket.c mongoc-gridfs-bucket-file.c mongoc-gridfs.c mongoc-gridfs-file.c mongoc-gridfs-file-list.c mongoc-gridfs-file-page.c mongoc-handshake.c mongoc-host-list.c mongoc-http.c mongoc-index.c mongoc-init.c mongoc-interrupt.c mongoc-libressl.c mongoc-linux-distro-scanner.c mongoc-list.c mongoc-log-and-monitor-private.c mongoc-log.c mongoc-matcher.c mongoc-matcher-op.c mongoc-memcmp.c mongoc-ocsp-cache.c mongoc-opcode.c mongoc-openssl.c mongoc-optional.c mongoc-opts.c mongoc-opts-helpers.c mongoc-queue.c mongoc-rand-cng.c mongoc-rand-common-crypto.c mongoc-rand-openssl.c mongoc-read-concern.c mongoc-read-prefs.c mongoc-rpc.c mongoc-sasl.c mongoc-scram.c mongoc-secure-channel.c mongoc-secure-transport.c mongoc-server-api.c mongoc-server-description.c mongoc-server-monitor.c mongoc-server-stream.c mongoc-set.c mongoc-shared.c mongoc-socket.c mongoc-ssl.c mongoc-sspi.c mongoc-stream-buffered.c mongoc-stream.c mongoc-stream-file.c mongoc-stream-gridfs.c mongoc-stream-gridfs-download.c mongoc-stream-gridfs-upload.c mongoc-stream-socket.c mongoc-stream-tls.c mongoc-stream-tls-libressl.c mongoc-stream-tls-openssl-bio.c mongoc-stream-tls-openssl.c mongoc-stream-tls-secure-channel.c mongoc-stream-tls-secure-transport.c mongoc-structured-log.c mongoc-timeout.c mongoc-topology-background-monitoring.c mongoc-topology.c mongoc-topology-description-apm.c mongoc-topology-description.c mongoc-topology-scanner.c mongoc-ts-pool.c mongoc-uri.c mongoc-util.c mongoc-version-functions.c mongoc-write-command.c mongoc-write-concern.c service-gcp.c";
var PHP_MONGODB_UTF8PROC_SOURCES="utf8proc.c";
EXTENSION("mongodb", "php_phongo.c", null, PHP_MONGODB_CFLAGS);
MONGODB_ADD_SOURCES("/src", "phongo_apm.c phongo_atomic.c phongo_bson.c phongo_bson_encode.c phongo_client.c phongo_compat.c phongo_error.c phongo_execute.c phongo_ini.c phongo_log.c phongo_util.c");
MONGODB_ADD_SOURCES("/src/BSON", "Binary.c BinaryInterface.c Document.c Iterator.c DBPointer.c Decimal128.c Decimal128Interface.c Int64.c Javascript.c JavascriptInterface.c MaxKey.c MaxKeyInterface.c MinKey.c MinKeyInterface.c ObjectId.c ObjectIdInterface.c PackedArray.c Persistable.c Regex.c RegexInterface.c Serializable.c Symbol.c Timestamp.c TimestampInterface.c Type.c Undefined.c Unserializable.c UTCDateTime.c UTCDateTimeInterface.c");
MONGODB_ADD_SOURCES("/src/MongoDB", "BulkWrite.c BulkWriteCommand.c BulkWriteCommandResult.c ClientEncryption.c Command.c Cursor.c CursorInterface.c Manager.c Query.c ReadConcern.c ReadPreference.c Server.c ServerApi.c ServerDescription.c Session.c TopologyDescription.c WriteConcern.c WriteConcernError.c WriteError.c WriteResult.c");
MONGODB_ADD_SOURCES("/src/MongoDB/Exception", "AuthenticationException.c BulkWriteException.c BulkWriteCommandException.c CommandException.c ConnectionException.c ConnectionTimeoutException.c EncryptionException.c Exception.c ExecutionTimeoutException.c InvalidArgumentException.c LogicException.c RuntimeException.c ServerException.c UnexpectedValueException.c");
MONGODB_ADD_SOURCES("/src/MongoDB/Monitoring", "CommandFailedEvent.c CommandStartedEvent.c CommandSubscriber.c CommandSucceededEvent.c LogSubscriber.c SDAMSubscriber.c Subscriber.c ServerChangedEvent.c ServerClosedEvent.c ServerHeartbeatFailedEvent.c ServerHeartbeatStartedEvent.c ServerHeartbeatSucceededEvent.c ServerOpeningEvent.c TopologyChangedEvent.c TopologyClosedEvent.c TopologyOpeningEvent.c functions.c");
MONGODB_ADD_SOURCES("/src/libmongoc/src/common/src", PHP_MONGODB_COMMON_SOURCES);
MONGODB_ADD_SOURCES("/src/libmongoc/src/libbson/src/bson", PHP_MONGODB_BSON_SOURCES);
MONGODB_ADD_SOURCES("/src/libmongoc/src/libbson/src/jsonsl", PHP_MONGODB_JSONSL_SOURCES);
MONGODB_ADD_SOURCES("/src/libmongoc/src/libmongoc/src/mongoc", PHP_MONGODB_MONGOC_SOURCES);
MONGODB_ADD_SOURCES("/src/libmongoc/src/utf8proc-2.8.0", PHP_MONGODB_UTF8PROC_SOURCES);
var bson_opts = {
BSON_BYTE_ORDER: 1234,
BSON_OS: 2,
BSON_HAVE_STDBOOL_H: 0,
BSON_HAVE_STRINGS_H: 0,
BSON_HAVE_CLOCK_GETTIME: 0,
BSON_HAVE_STRNLEN: 0,
BSON_HAVE_SNPRINTF: 0,
BSON_HAVE_STRLCPY: 0,
BSON_HAVE_TIMESPEC: 0,
BSON_EXTRA_ALIGN: 0,
BSON_HAVE_GMTIME_R: 0,
BSON_HAVE_RAND_R: 0,
BSON_HAVE_ALIGNED_ALLOC: 0
};
mongodb_generate_header(
configure_module_dirname + "/src/libmongoc/src/libbson/src/bson/bson-config.h.in",
configure_module_dirname + "/src/libmongoc/src/libbson/src/bson/bson-config.h",
bson_opts
);
mongodb_generate_header(
configure_module_dirname + "/src/libmongoc/src/libbson/src/bson/bson-version.h.in",
configure_module_dirname + "/src/libmongoc/src/libbson/src/bson/bson-version.h",
mongodb_parse_libmongoc_version_file("libbson_")
);
var mongoc_opts = {
// TODO: Support building with Secure Channel on Windows
MONGOC_ENABLE_SSL_SECURE_CHANNEL: 0,
MONGOC_ENABLE_CRYPTO_CNG: 0,
MONGOC_HAVE_BCRYPT_PBKDF2: 0,
// Secure Transport does not apply to Windows
MONGOC_ENABLE_SSL_SECURE_TRANSPORT: 0,
MONGOC_ENABLE_CRYPTO_COMMON_CRYPTO: 0,
MONGOC_ENABLE_SSL_LIBRESSL: 0,
MONGOC_ENABLE_SSL_OPENSSL: 0,
MONGOC_ENABLE_CRYPTO_LIBCRYPTO: 0,
MONGOC_ENABLE_SSL: 0,
MONGOC_ENABLE_CRYPTO: 0,
MONGOC_ENABLE_CRYPTO_SYSTEM_PROFILE: 0,
MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION: 0,
MONGOC_ENABLE_COMPRESSION_SNAPPY: 0,
MONGOC_ENABLE_COMPRESSION_ZLIB: 0,
MONGOC_ENABLE_COMPRESSION_ZSTD: 0,
MONGOC_ENABLE_COMPRESSION: 0,
MONGOC_ENABLE_DEBUG_ASSERTIONS: 0,
MONGOC_ENABLE_MONGODB_AWS_AUTH: 0,
MONGOC_ENABLE_SASL: 0,
MONGOC_ENABLE_SASL_CYRUS: 0,
MONGOC_ENABLE_SASL_SSPI: 0,
MONGOC_ENABLE_SRV: 0,
MONGOC_ENABLE_RDTSCP: 0,
MONGOC_ENABLE_SHM_COUNTERS: 0,
MONGOC_HAVE_ASN1_STRING_GET0_DATA: 0,
MONGOC_HAVE_SASL_CLIENT_DONE: 0,
MONGOC_HAVE_SCHED_GETCPU: 0,
MONGOC_HAVE_SOCKLEN: 1,
MONGOC_NO_AUTOMATIC_GLOBALS: 1,
MONGOC_SOCKET_ARG2: "struct sockaddr",
MONGOC_SOCKET_ARG3: "socklen_t",
MONGOC_TRACE: 1,
MONGOC_HAVE_DNSAPI: 0,
MONGOC_HAVE_RES_NSEARCH: 0,
MONGOC_HAVE_RES_NDESTROY: 0,
MONGOC_HAVE_RES_NCLOSE: 0,
MONGOC_HAVE_RES_SEARCH: 0,
MONGOC_HAVE_SS_FAMILY: 0,
MONGOC_CC: "",
MONGOC_USER_SET_CFLAGS: "",
MONGOC_USER_SET_LDFLAGS: ""
};
var mongoc_ssl_path_to_check = PHP_MONGODB;
if (typeof PHP_OPENSSL === 'string') {
mongoc_ssl_path_to_check += ";" + PHP_OPENSSL;
}
var mongoc_ssl_found = false;
/* PHP 7.1.2 introduced SETUP_OPENSSL(), which supports OpenSSL 1.1.x. Earlier
* versions will use the legacy check for OpenSSL 1.0.x and lower. */
if (typeof SETUP_OPENSSL === 'function') {
openssl_type = SETUP_OPENSSL("mongodb", mongoc_ssl_path_to_check);
mongoc_ssl_found = openssl_type > 0;
if (openssl_type >= 2) {
mongoc_opts.MONGOC_HAVE_ASN1_STRING_GET0_DATA = 1;
}
} else if (CHECK_LIB("ssleay32.lib", "mongodb", mongoc_ssl_path_to_check) &&
CHECK_LIB("libeay32.lib", "mongodb", mongoc_ssl_path_to_check) &&
CHECK_LIB("crypt32.lib", "mongodb", mongoc_ssl_path_to_check) &&
CHECK_HEADER_ADD_INCLUDE("openssl/ssl.h", "CFLAGS_MONGODB")) {
mongoc_ssl_found = true;
}
if (mongoc_ssl_found) {
mongoc_opts.MONGOC_ENABLE_SSL_OPENSSL = 1;
mongoc_opts.MONGOC_ENABLE_CRYPTO_LIBCRYPTO = 1;
mongoc_opts.MONGOC_ENABLE_SSL = 1;
mongoc_opts.MONGOC_ENABLE_CRYPTO = 1;
mongoc_opts.MONGOC_ENABLE_MONGODB_AWS_AUTH = 1;
ADD_FLAG("CFLAGS_MONGODB", "/D KMS_MSG_STATIC=1 /D KMS_MESSAGE_ENABLE_CRYPTO=1 /D KMS_MESSAGE_ENABLE_CRYPTO_LIBCRYPTO=1");
} else {
WARNING("mongodb libopenssl support not enabled, libs not found");
}
// TODO: Support building with native GSSAPI (SSPI) on Windows
if (PHP_MONGODB_SASL != "no" &&
CHECK_LIB("libsasl.lib", "mongodb", PHP_MONGODB) &&
CHECK_HEADER_ADD_INCLUDE("sasl/sasl.h", "CFLAGS_MONGODB")) {
mongoc_opts.MONGOC_ENABLE_SASL = 1;
mongoc_opts.MONGOC_ENABLE_SASL_CYRUS = 1;
// Referenced by _mongoc_cyrus_verifyfile_cb in mongoc-cyrus.c on Windows
ADD_FLAG("CFLAGS_MONGODB", "/D MONGOC_CYRUS_PLUGIN_PATH_PREFIX=NULL");
if (CHECK_FUNC_IN_HEADER("sasl/sasl.h", "sasl_client_done")) {
mongoc_opts.MONGOC_HAVE_SASL_CLIENT_DONE = 1;
}
} else if (PHP_MONGODB_SASL != "no") {
WARNING("mongodb libsasl support not enabled, libs not found");
}
if (PHP_MONGODB_CLIENT_SIDE_ENCRYPTION != "no" && mongoc_ssl_found) {
mongoc_opts.MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION = 1;
ADD_FLAG("CFLAGS_MONGODB", "/D KMS_MESSAGE_LITTLE_ENDIAN=1 /D MONGOCRYPT_LITTLE_ENDIAN=1 /D MLIB_USER=1");
ADD_FLAG("CFLAGS_MONGODB", "/I" + configure_module_dirname + "/src/libmongocrypt/src");
ADD_FLAG("CFLAGS_MONGODB", "/I" + configure_module_dirname + "/src/libmongocrypt/kms-message/src");
ADD_FLAG("CFLAGS_MONGODB", "/I" + configure_module_dirname + "/src/libmongocrypt-compat");
var mongocrypt_opts = {
MONGOCRYPT_ENABLE_TRACE: 1,
MONGOCRYPT_ENABLE_CRYPTO: 1,
MONGOCRYPT_ENABLE_CRYPTO_LIBCRYPTO: 1,
// TODO: Support building with Secure Channel on Windows
MONGOCRYPT_ENABLE_CRYPTO_CNG: 0,
// Secure Transport does not apply to Windows
MONGOCRYPT_ENABLE_CRYPTO_COMMON_CRYPTO: 0
};
// Sources below are updated by scripts/update-submodule-sources.php
var PHP_MONGODB_MONGOCRYPT_SOURCES="mc-array.c mc-efc.c mc-fle2-encryption-placeholder.c mc-fle2-find-equality-payload.c mc-fle2-find-equality-payload-v2.c mc-fle2-find-range-payload.c mc-fle2-find-range-payload-v2.c mc-fle2-insert-update-payload.c mc-fle2-insert-update-payload-v2.c mc-fle2-payload-iev.c mc-fle2-payload-iev-v2.c mc-fle2-payload-uev.c mc-fle2-payload-uev-common.c mc-fle2-payload-uev-v2.c mc-fle2-rfds.c mc-fle2-tag-and-encrypted-metadata-block.c mc-range-edge-generation.c mc-range-encoding.c mc-range-mincover.c mc-rangeopts.c mc-reader.c mc-tokens.c mc-writer.c mongocrypt-binary.c mongocrypt-buffer.c mongocrypt.c mongocrypt-cache.c mongocrypt-cache-collinfo.c mongocrypt-cache-key.c mongocrypt-cache-oauth.c mongocrypt-ciphertext.c mongocrypt-crypto.c mongocrypt-ctx.c mongocrypt-ctx-datakey.c mongocrypt-ctx-decrypt.c mongocrypt-ctx-encrypt.c mongocrypt-ctx-rewrap-many-datakey.c mongocrypt-endpoint.c mongocrypt-kek.c mongocrypt-key-broker.c mongocrypt-key.c mongocrypt-kms-ctx.c mongocrypt-log.c mongocrypt-marking.c mongocrypt-opts.c mongocrypt-status.c mongocrypt-traverse-util.c mongocrypt-util.c";
var PHP_MONGODB_MONGOCRYPT_CRYPTO_SOURCES="cng.c commoncrypto.c libcrypto.c none.c";
var PHP_MONGODB_MONGOCRYPT_OS_POSIX_SOURCES="os_dll.c os_mutex.c";
var PHP_MONGODB_MONGOCRYPT_OS_WIN_SOURCES="os_dll.c os_mutex.c";
var PHP_MONGODB_MONGOCRYPT_KMS_MESSAGE_SOURCES="hexlify.c kms_azure_request.c kms_b64.c kms_caller_identity_request.c kms_crypto_apple.c kms_crypto_libcrypto.c kms_crypto_none.c kms_crypto_windows.c kms_decrypt_request.c kms_encrypt_request.c kms_gcp_request.c kms_kmip_reader_writer.c kms_kmip_request.c kms_kmip_response.c kms_kmip_response_parser.c kms_kv_list.c kms_message.c kms_port.c kms_request.c kms_request_opt.c kms_request_str.c kms_response.c kms_response_parser.c sort.c";
MONGODB_ADD_SOURCES("/src/libmongocrypt/src", PHP_MONGODB_MONGOCRYPT_SOURCES);
MONGODB_ADD_SOURCES("/src/libmongocrypt/src/crypto", PHP_MONGODB_MONGOCRYPT_CRYPTO_SOURCES);
MONGODB_ADD_SOURCES("/src/libmongocrypt/src/os_posix", PHP_MONGODB_MONGOCRYPT_OS_POSIX_SOURCES);
MONGODB_ADD_SOURCES("/src/libmongocrypt/src/os_win", PHP_MONGODB_MONGOCRYPT_OS_WIN_SOURCES);
MONGODB_ADD_SOURCES("/src/libmongocrypt/kms-message/src", PHP_MONGODB_MONGOCRYPT_KMS_MESSAGE_SOURCES);
mongocrypt_opts.MONGOCRYPT_BUILD_VERSION = mongodb_get_libmongocrypt_version();
mongodb_generate_header(
configure_module_dirname + "/src/libmongocrypt/src/mongocrypt-config.h.in",
configure_module_dirname + "/src/libmongocrypt/src/mongocrypt-config.h",
mongocrypt_opts
);
} else if (PHP_MONGODB_CLIENT_SIDE_ENCRYPTION != "no") {
// No SSL library found, we can't enable libmongocrypt
WARNING("mongodb libmongocrypt support not enabled, crypto libs not found");
}
if (PHP_MONGODB_CLIENT_SIDE_ENCRYPTION == "no" && mongoc_ssl_found) {
// Add kms-message sources bundled with libmongoc
MONGODB_ADD_SOURCES("/src/libmongoc/src/kms-message/src", PHP_MONGODB_KMS_MESSAGE_SOURCES);
ADD_FLAG("CFLAGS_MONGODB", "/I" + configure_module_dirname + "/src/libmongoc/src/kms-message/src");
}
if (CHECK_LIB("dnsapi.lib", "mongodb", PHP_MONGODB) &&
CHECK_HEADER_ADD_INCLUDE("windns.h", "CFLAGS_MONGODB")) {
mongoc_opts.MONGOC_HAVE_DNSAPI = 1;
mongoc_opts.MONGOC_ENABLE_SRV = 1;
}
if (typeof COMPILER_NAME === 'string') {
mongoc_opts.MONGOC_CC = COMPILER_NAME;
} else if (typeof VC_VERSIONS === 'array' && typeof VC_VERSIONS[VCVERS] === 'string') {
mongoc_opts.MONGOC_CC = VC_VERSIONS[VCVERS];
} else if (typeof COMPILER_NAME_LONG === 'string') {
mongoc_opts.MONGOC_CC = COMPILER_NAME_LONG;
}
/* MONGOC_USER_SET_CFLAGS and MONGOC_USER_SET_LDFLAGS can be left blank, as we
* do not expect CFLAGS or LDFLAGS to be customized at build time. */
mongodb_generate_header(
configure_module_dirname + "/src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h.in",
configure_module_dirname + "/src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h",
mongoc_opts
);
mongodb_generate_header(
configure_module_dirname + "/src/libmongoc/src/common/src/common-config.h.in",
configure_module_dirname + "/src/libmongoc/src/common/src/common-config.h",
mongoc_opts
);
mongodb_generate_header(
configure_module_dirname + "/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h.in",
configure_module_dirname + "/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h",
mongodb_parse_libmongoc_version_file("libmongoc_")
);
}
diff --git a/mongodb-2.1.0/phongo_version.h b/mongodb-2.1.1/phongo_version.h
similarity index 92%
rename from mongodb-2.1.0/phongo_version.h
rename to mongodb-2.1.1/phongo_version.h
index 56e12cd9..a665ee72 100644
--- a/mongodb-2.1.0/phongo_version.h
+++ b/mongodb-2.1.1/phongo_version.h
@@ -1,30 +1,30 @@
/*
* Copyright 2014-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef PHONGO_VERSION_H
#define PHONGO_VERSION_H
/* Note: this file should remain in the repository's root directory so that
* PECL's release-upload.php script can verify the version information when
* publishing a release. */
/* clang-format off */
-#define PHP_MONGODB_VERSION "2.1.0"
+#define PHP_MONGODB_VERSION "2.1.1"
#define PHP_MONGODB_STABILITY "stable"
-#define PHP_MONGODB_VERSION_DESC 2,1,0,0
+#define PHP_MONGODB_VERSION_DESC 2,1,1,0
/* clang-format on */
#endif /* PHONGO_VERSION_H */
diff --git a/mongodb-2.1.0/php_phongo.c b/mongodb-2.1.1/php_phongo.c
similarity index 100%
rename from mongodb-2.1.0/php_phongo.c
rename to mongodb-2.1.1/php_phongo.c
diff --git a/mongodb-2.1.0/php_phongo.h b/mongodb-2.1.1/php_phongo.h
similarity index 100%
rename from mongodb-2.1.0/php_phongo.h
rename to mongodb-2.1.1/php_phongo.h
diff --git a/mongodb-2.1.0/scripts/autotools/CheckCompiler.m4 b/mongodb-2.1.1/scripts/autotools/CheckCompiler.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/CheckCompiler.m4
rename to mongodb-2.1.1/scripts/autotools/CheckCompiler.m4
diff --git a/mongodb-2.1.0/scripts/autotools/CheckHost.m4 b/mongodb-2.1.1/scripts/autotools/CheckHost.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/CheckHost.m4
rename to mongodb-2.1.1/scripts/autotools/CheckHost.m4
diff --git a/mongodb-2.1.0/scripts/autotools/PlatformFlags.m4 b/mongodb-2.1.1/scripts/autotools/PlatformFlags.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/PlatformFlags.m4
rename to mongodb-2.1.1/scripts/autotools/PlatformFlags.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libbson/CheckHeaders.m4 b/mongodb-2.1.1/scripts/autotools/libbson/CheckHeaders.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libbson/CheckHeaders.m4
rename to mongodb-2.1.1/scripts/autotools/libbson/CheckHeaders.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libbson/Endian.m4 b/mongodb-2.1.1/scripts/autotools/libbson/Endian.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libbson/Endian.m4
rename to mongodb-2.1.1/scripts/autotools/libbson/Endian.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libbson/FindDependencies.m4 b/mongodb-2.1.1/scripts/autotools/libbson/FindDependencies.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libbson/FindDependencies.m4
rename to mongodb-2.1.1/scripts/autotools/libbson/FindDependencies.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libbson/Versions.m4 b/mongodb-2.1.1/scripts/autotools/libbson/Versions.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libbson/Versions.m4
rename to mongodb-2.1.1/scripts/autotools/libbson/Versions.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libmongoc/CheckCompression.m4 b/mongodb-2.1.1/scripts/autotools/libmongoc/CheckCompression.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libmongoc/CheckCompression.m4
rename to mongodb-2.1.1/scripts/autotools/libmongoc/CheckCompression.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libmongoc/CheckResolv.m4 b/mongodb-2.1.1/scripts/autotools/libmongoc/CheckResolv.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libmongoc/CheckResolv.m4
rename to mongodb-2.1.1/scripts/autotools/libmongoc/CheckResolv.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libmongoc/CheckSSL.m4 b/mongodb-2.1.1/scripts/autotools/libmongoc/CheckSSL.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libmongoc/CheckSSL.m4
rename to mongodb-2.1.1/scripts/autotools/libmongoc/CheckSSL.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libmongoc/CheckSasl.m4 b/mongodb-2.1.1/scripts/autotools/libmongoc/CheckSasl.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libmongoc/CheckSasl.m4
rename to mongodb-2.1.1/scripts/autotools/libmongoc/CheckSasl.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libmongoc/CheckUtf8Proc.m4 b/mongodb-2.1.1/scripts/autotools/libmongoc/CheckUtf8Proc.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libmongoc/CheckUtf8Proc.m4
rename to mongodb-2.1.1/scripts/autotools/libmongoc/CheckUtf8Proc.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libmongoc/Endian.m4 b/mongodb-2.1.1/scripts/autotools/libmongoc/Endian.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libmongoc/Endian.m4
rename to mongodb-2.1.1/scripts/autotools/libmongoc/Endian.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libmongoc/FindDependencies.m4 b/mongodb-2.1.1/scripts/autotools/libmongoc/FindDependencies.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libmongoc/FindDependencies.m4
rename to mongodb-2.1.1/scripts/autotools/libmongoc/FindDependencies.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libmongoc/Versions.m4 b/mongodb-2.1.1/scripts/autotools/libmongoc/Versions.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libmongoc/Versions.m4
rename to mongodb-2.1.1/scripts/autotools/libmongoc/Versions.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libmongocrypt/CheckSSL.m4 b/mongodb-2.1.1/scripts/autotools/libmongocrypt/CheckSSL.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libmongocrypt/CheckSSL.m4
rename to mongodb-2.1.1/scripts/autotools/libmongocrypt/CheckSSL.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libmongocrypt/Endian.m4 b/mongodb-2.1.1/scripts/autotools/libmongocrypt/Endian.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libmongocrypt/Endian.m4
rename to mongodb-2.1.1/scripts/autotools/libmongocrypt/Endian.m4
diff --git a/mongodb-2.1.0/scripts/autotools/libmongocrypt/Version.m4 b/mongodb-2.1.1/scripts/autotools/libmongocrypt/Version.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/libmongocrypt/Version.m4
rename to mongodb-2.1.1/scripts/autotools/libmongocrypt/Version.m4
diff --git a/mongodb-2.1.0/scripts/autotools/m4/ax_check_compile_flag.m4 b/mongodb-2.1.1/scripts/autotools/m4/ax_check_compile_flag.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/m4/ax_check_compile_flag.m4
rename to mongodb-2.1.1/scripts/autotools/m4/ax_check_compile_flag.m4
diff --git a/mongodb-2.1.0/scripts/autotools/m4/ax_prototype.m4 b/mongodb-2.1.1/scripts/autotools/m4/ax_prototype.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/m4/ax_prototype.m4
rename to mongodb-2.1.1/scripts/autotools/m4/ax_prototype.m4
diff --git a/mongodb-2.1.0/scripts/autotools/m4/ax_prototype_accept.m4 b/mongodb-2.1.1/scripts/autotools/m4/ax_prototype_accept.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/m4/ax_prototype_accept.m4
rename to mongodb-2.1.1/scripts/autotools/m4/ax_prototype_accept.m4
diff --git a/mongodb-2.1.0/scripts/autotools/m4/ax_pthread.m4 b/mongodb-2.1.1/scripts/autotools/m4/ax_pthread.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/m4/ax_pthread.m4
rename to mongodb-2.1.1/scripts/autotools/m4/ax_pthread.m4
diff --git a/mongodb-2.1.0/scripts/autotools/m4/php_mongodb.m4 b/mongodb-2.1.1/scripts/autotools/m4/php_mongodb.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/m4/php_mongodb.m4
rename to mongodb-2.1.1/scripts/autotools/m4/php_mongodb.m4
diff --git a/mongodb-2.1.0/scripts/autotools/m4/pkg.m4 b/mongodb-2.1.1/scripts/autotools/m4/pkg.m4
similarity index 100%
rename from mongodb-2.1.0/scripts/autotools/m4/pkg.m4
rename to mongodb-2.1.1/scripts/autotools/m4/pkg.m4
diff --git a/mongodb-2.1.0/scripts/clang-format.sh b/mongodb-2.1.1/scripts/clang-format.sh
similarity index 100%
rename from mongodb-2.1.0/scripts/clang-format.sh
rename to mongodb-2.1.1/scripts/clang-format.sh
diff --git a/mongodb-2.1.0/scripts/convert-bson-corpus-tests.php b/mongodb-2.1.1/scripts/convert-bson-corpus-tests.php
similarity index 100%
rename from mongodb-2.1.0/scripts/convert-bson-corpus-tests.php
rename to mongodb-2.1.1/scripts/convert-bson-corpus-tests.php
diff --git a/mongodb-2.1.0/scripts/generate-functionmap.php b/mongodb-2.1.1/scripts/generate-functionmap.php
similarity index 100%
rename from mongodb-2.1.0/scripts/generate-functionmap.php
rename to mongodb-2.1.1/scripts/generate-functionmap.php
diff --git a/mongodb-2.1.0/scripts/update-sbom.sh b/mongodb-2.1.1/scripts/update-sbom.sh
similarity index 100%
rename from mongodb-2.1.0/scripts/update-sbom.sh
rename to mongodb-2.1.1/scripts/update-sbom.sh
diff --git a/mongodb-2.1.0/scripts/update-submodule-sources.php b/mongodb-2.1.1/scripts/update-submodule-sources.php
similarity index 100%
rename from mongodb-2.1.0/scripts/update-submodule-sources.php
rename to mongodb-2.1.1/scripts/update-submodule-sources.php
diff --git a/mongodb-2.1.0/src/BSON/Binary.c b/mongodb-2.1.1/src/BSON/Binary.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Binary.c
rename to mongodb-2.1.1/src/BSON/Binary.c
diff --git a/mongodb-2.1.0/src/BSON/Binary.h b/mongodb-2.1.1/src/BSON/Binary.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Binary.h
rename to mongodb-2.1.1/src/BSON/Binary.h
diff --git a/mongodb-2.1.0/src/BSON/BinaryInterface.c b/mongodb-2.1.1/src/BSON/BinaryInterface.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/BinaryInterface.c
rename to mongodb-2.1.1/src/BSON/BinaryInterface.c
diff --git a/mongodb-2.1.0/src/BSON/BinaryInterface_arginfo.h b/mongodb-2.1.1/src/BSON/BinaryInterface_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/BinaryInterface_arginfo.h
rename to mongodb-2.1.1/src/BSON/BinaryInterface_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Binary_arginfo.h b/mongodb-2.1.1/src/BSON/Binary_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Binary_arginfo.h
rename to mongodb-2.1.1/src/BSON/Binary_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/DBPointer.c b/mongodb-2.1.1/src/BSON/DBPointer.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/DBPointer.c
rename to mongodb-2.1.1/src/BSON/DBPointer.c
diff --git a/mongodb-2.1.0/src/BSON/DBPointer.h b/mongodb-2.1.1/src/BSON/DBPointer.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/DBPointer.h
rename to mongodb-2.1.1/src/BSON/DBPointer.h
diff --git a/mongodb-2.1.0/src/BSON/DBPointer_arginfo.h b/mongodb-2.1.1/src/BSON/DBPointer_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/DBPointer_arginfo.h
rename to mongodb-2.1.1/src/BSON/DBPointer_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Decimal128.c b/mongodb-2.1.1/src/BSON/Decimal128.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Decimal128.c
rename to mongodb-2.1.1/src/BSON/Decimal128.c
diff --git a/mongodb-2.1.0/src/BSON/Decimal128.h b/mongodb-2.1.1/src/BSON/Decimal128.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Decimal128.h
rename to mongodb-2.1.1/src/BSON/Decimal128.h
diff --git a/mongodb-2.1.0/src/BSON/Decimal128Interface.c b/mongodb-2.1.1/src/BSON/Decimal128Interface.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Decimal128Interface.c
rename to mongodb-2.1.1/src/BSON/Decimal128Interface.c
diff --git a/mongodb-2.1.0/src/BSON/Decimal128Interface_arginfo.h b/mongodb-2.1.1/src/BSON/Decimal128Interface_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Decimal128Interface_arginfo.h
rename to mongodb-2.1.1/src/BSON/Decimal128Interface_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Decimal128_arginfo.h b/mongodb-2.1.1/src/BSON/Decimal128_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Decimal128_arginfo.h
rename to mongodb-2.1.1/src/BSON/Decimal128_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Document.c b/mongodb-2.1.1/src/BSON/Document.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Document.c
rename to mongodb-2.1.1/src/BSON/Document.c
diff --git a/mongodb-2.1.0/src/BSON/Document.h b/mongodb-2.1.1/src/BSON/Document.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Document.h
rename to mongodb-2.1.1/src/BSON/Document.h
diff --git a/mongodb-2.1.0/src/BSON/Document_arginfo.h b/mongodb-2.1.1/src/BSON/Document_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Document_arginfo.h
rename to mongodb-2.1.1/src/BSON/Document_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Int64.c b/mongodb-2.1.1/src/BSON/Int64.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Int64.c
rename to mongodb-2.1.1/src/BSON/Int64.c
diff --git a/mongodb-2.1.0/src/BSON/Int64.h b/mongodb-2.1.1/src/BSON/Int64.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Int64.h
rename to mongodb-2.1.1/src/BSON/Int64.h
diff --git a/mongodb-2.1.0/src/BSON/Int64_arginfo.h b/mongodb-2.1.1/src/BSON/Int64_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Int64_arginfo.h
rename to mongodb-2.1.1/src/BSON/Int64_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Iterator.c b/mongodb-2.1.1/src/BSON/Iterator.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Iterator.c
rename to mongodb-2.1.1/src/BSON/Iterator.c
diff --git a/mongodb-2.1.0/src/BSON/Iterator.h b/mongodb-2.1.1/src/BSON/Iterator.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Iterator.h
rename to mongodb-2.1.1/src/BSON/Iterator.h
diff --git a/mongodb-2.1.0/src/BSON/Iterator_arginfo.h b/mongodb-2.1.1/src/BSON/Iterator_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Iterator_arginfo.h
rename to mongodb-2.1.1/src/BSON/Iterator_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Javascript.c b/mongodb-2.1.1/src/BSON/Javascript.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Javascript.c
rename to mongodb-2.1.1/src/BSON/Javascript.c
diff --git a/mongodb-2.1.0/src/BSON/Javascript.h b/mongodb-2.1.1/src/BSON/Javascript.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Javascript.h
rename to mongodb-2.1.1/src/BSON/Javascript.h
diff --git a/mongodb-2.1.0/src/BSON/JavascriptInterface.c b/mongodb-2.1.1/src/BSON/JavascriptInterface.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/JavascriptInterface.c
rename to mongodb-2.1.1/src/BSON/JavascriptInterface.c
diff --git a/mongodb-2.1.0/src/BSON/JavascriptInterface_arginfo.h b/mongodb-2.1.1/src/BSON/JavascriptInterface_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/JavascriptInterface_arginfo.h
rename to mongodb-2.1.1/src/BSON/JavascriptInterface_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Javascript_arginfo.h b/mongodb-2.1.1/src/BSON/Javascript_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Javascript_arginfo.h
rename to mongodb-2.1.1/src/BSON/Javascript_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/MaxKey.c b/mongodb-2.1.1/src/BSON/MaxKey.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/MaxKey.c
rename to mongodb-2.1.1/src/BSON/MaxKey.c
diff --git a/mongodb-2.1.0/src/BSON/MaxKeyInterface.c b/mongodb-2.1.1/src/BSON/MaxKeyInterface.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/MaxKeyInterface.c
rename to mongodb-2.1.1/src/BSON/MaxKeyInterface.c
diff --git a/mongodb-2.1.0/src/BSON/MaxKeyInterface_arginfo.h b/mongodb-2.1.1/src/BSON/MaxKeyInterface_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/MaxKeyInterface_arginfo.h
rename to mongodb-2.1.1/src/BSON/MaxKeyInterface_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/MaxKey_arginfo.h b/mongodb-2.1.1/src/BSON/MaxKey_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/MaxKey_arginfo.h
rename to mongodb-2.1.1/src/BSON/MaxKey_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/MinKey.c b/mongodb-2.1.1/src/BSON/MinKey.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/MinKey.c
rename to mongodb-2.1.1/src/BSON/MinKey.c
diff --git a/mongodb-2.1.0/src/BSON/MinKeyInterface.c b/mongodb-2.1.1/src/BSON/MinKeyInterface.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/MinKeyInterface.c
rename to mongodb-2.1.1/src/BSON/MinKeyInterface.c
diff --git a/mongodb-2.1.0/src/BSON/MinKeyInterface_arginfo.h b/mongodb-2.1.1/src/BSON/MinKeyInterface_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/MinKeyInterface_arginfo.h
rename to mongodb-2.1.1/src/BSON/MinKeyInterface_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/MinKey_arginfo.h b/mongodb-2.1.1/src/BSON/MinKey_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/MinKey_arginfo.h
rename to mongodb-2.1.1/src/BSON/MinKey_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/ObjectId.c b/mongodb-2.1.1/src/BSON/ObjectId.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/ObjectId.c
rename to mongodb-2.1.1/src/BSON/ObjectId.c
diff --git a/mongodb-2.1.0/src/BSON/ObjectId.h b/mongodb-2.1.1/src/BSON/ObjectId.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/ObjectId.h
rename to mongodb-2.1.1/src/BSON/ObjectId.h
diff --git a/mongodb-2.1.0/src/BSON/ObjectIdInterface.c b/mongodb-2.1.1/src/BSON/ObjectIdInterface.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/ObjectIdInterface.c
rename to mongodb-2.1.1/src/BSON/ObjectIdInterface.c
diff --git a/mongodb-2.1.0/src/BSON/ObjectIdInterface_arginfo.h b/mongodb-2.1.1/src/BSON/ObjectIdInterface_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/ObjectIdInterface_arginfo.h
rename to mongodb-2.1.1/src/BSON/ObjectIdInterface_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/ObjectId_arginfo.h b/mongodb-2.1.1/src/BSON/ObjectId_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/ObjectId_arginfo.h
rename to mongodb-2.1.1/src/BSON/ObjectId_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/PackedArray.c b/mongodb-2.1.1/src/BSON/PackedArray.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/PackedArray.c
rename to mongodb-2.1.1/src/BSON/PackedArray.c
diff --git a/mongodb-2.1.0/src/BSON/PackedArray.h b/mongodb-2.1.1/src/BSON/PackedArray.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/PackedArray.h
rename to mongodb-2.1.1/src/BSON/PackedArray.h
diff --git a/mongodb-2.1.0/src/BSON/PackedArray_arginfo.h b/mongodb-2.1.1/src/BSON/PackedArray_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/PackedArray_arginfo.h
rename to mongodb-2.1.1/src/BSON/PackedArray_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Persistable.c b/mongodb-2.1.1/src/BSON/Persistable.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Persistable.c
rename to mongodb-2.1.1/src/BSON/Persistable.c
diff --git a/mongodb-2.1.0/src/BSON/Persistable_arginfo.h b/mongodb-2.1.1/src/BSON/Persistable_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Persistable_arginfo.h
rename to mongodb-2.1.1/src/BSON/Persistable_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Regex.c b/mongodb-2.1.1/src/BSON/Regex.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Regex.c
rename to mongodb-2.1.1/src/BSON/Regex.c
diff --git a/mongodb-2.1.0/src/BSON/Regex.h b/mongodb-2.1.1/src/BSON/Regex.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Regex.h
rename to mongodb-2.1.1/src/BSON/Regex.h
diff --git a/mongodb-2.1.0/src/BSON/RegexInterface.c b/mongodb-2.1.1/src/BSON/RegexInterface.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/RegexInterface.c
rename to mongodb-2.1.1/src/BSON/RegexInterface.c
diff --git a/mongodb-2.1.0/src/BSON/RegexInterface_arginfo.h b/mongodb-2.1.1/src/BSON/RegexInterface_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/RegexInterface_arginfo.h
rename to mongodb-2.1.1/src/BSON/RegexInterface_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Regex_arginfo.h b/mongodb-2.1.1/src/BSON/Regex_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Regex_arginfo.h
rename to mongodb-2.1.1/src/BSON/Regex_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Serializable.c b/mongodb-2.1.1/src/BSON/Serializable.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Serializable.c
rename to mongodb-2.1.1/src/BSON/Serializable.c
diff --git a/mongodb-2.1.0/src/BSON/Serializable_arginfo.h b/mongodb-2.1.1/src/BSON/Serializable_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Serializable_arginfo.h
rename to mongodb-2.1.1/src/BSON/Serializable_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Symbol.c b/mongodb-2.1.1/src/BSON/Symbol.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Symbol.c
rename to mongodb-2.1.1/src/BSON/Symbol.c
diff --git a/mongodb-2.1.0/src/BSON/Symbol.h b/mongodb-2.1.1/src/BSON/Symbol.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Symbol.h
rename to mongodb-2.1.1/src/BSON/Symbol.h
diff --git a/mongodb-2.1.0/src/BSON/Symbol_arginfo.h b/mongodb-2.1.1/src/BSON/Symbol_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Symbol_arginfo.h
rename to mongodb-2.1.1/src/BSON/Symbol_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Timestamp.c b/mongodb-2.1.1/src/BSON/Timestamp.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Timestamp.c
rename to mongodb-2.1.1/src/BSON/Timestamp.c
diff --git a/mongodb-2.1.0/src/BSON/Timestamp.h b/mongodb-2.1.1/src/BSON/Timestamp.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Timestamp.h
rename to mongodb-2.1.1/src/BSON/Timestamp.h
diff --git a/mongodb-2.1.0/src/BSON/TimestampInterface.c b/mongodb-2.1.1/src/BSON/TimestampInterface.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/TimestampInterface.c
rename to mongodb-2.1.1/src/BSON/TimestampInterface.c
diff --git a/mongodb-2.1.0/src/BSON/TimestampInterface_arginfo.h b/mongodb-2.1.1/src/BSON/TimestampInterface_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/TimestampInterface_arginfo.h
rename to mongodb-2.1.1/src/BSON/TimestampInterface_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Timestamp_arginfo.h b/mongodb-2.1.1/src/BSON/Timestamp_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Timestamp_arginfo.h
rename to mongodb-2.1.1/src/BSON/Timestamp_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Type.c b/mongodb-2.1.1/src/BSON/Type.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Type.c
rename to mongodb-2.1.1/src/BSON/Type.c
diff --git a/mongodb-2.1.0/src/BSON/Type_arginfo.h b/mongodb-2.1.1/src/BSON/Type_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Type_arginfo.h
rename to mongodb-2.1.1/src/BSON/Type_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/UTCDateTime.c b/mongodb-2.1.1/src/BSON/UTCDateTime.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/UTCDateTime.c
rename to mongodb-2.1.1/src/BSON/UTCDateTime.c
diff --git a/mongodb-2.1.0/src/BSON/UTCDateTime.h b/mongodb-2.1.1/src/BSON/UTCDateTime.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/UTCDateTime.h
rename to mongodb-2.1.1/src/BSON/UTCDateTime.h
diff --git a/mongodb-2.1.0/src/BSON/UTCDateTimeInterface.c b/mongodb-2.1.1/src/BSON/UTCDateTimeInterface.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/UTCDateTimeInterface.c
rename to mongodb-2.1.1/src/BSON/UTCDateTimeInterface.c
diff --git a/mongodb-2.1.0/src/BSON/UTCDateTimeInterface_arginfo.h b/mongodb-2.1.1/src/BSON/UTCDateTimeInterface_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/UTCDateTimeInterface_arginfo.h
rename to mongodb-2.1.1/src/BSON/UTCDateTimeInterface_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/UTCDateTime_arginfo.h b/mongodb-2.1.1/src/BSON/UTCDateTime_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/UTCDateTime_arginfo.h
rename to mongodb-2.1.1/src/BSON/UTCDateTime_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Undefined.c b/mongodb-2.1.1/src/BSON/Undefined.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Undefined.c
rename to mongodb-2.1.1/src/BSON/Undefined.c
diff --git a/mongodb-2.1.0/src/BSON/Undefined_arginfo.h b/mongodb-2.1.1/src/BSON/Undefined_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Undefined_arginfo.h
rename to mongodb-2.1.1/src/BSON/Undefined_arginfo.h
diff --git a/mongodb-2.1.0/src/BSON/Unserializable.c b/mongodb-2.1.1/src/BSON/Unserializable.c
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Unserializable.c
rename to mongodb-2.1.1/src/BSON/Unserializable.c
diff --git a/mongodb-2.1.0/src/BSON/Unserializable_arginfo.h b/mongodb-2.1.1/src/BSON/Unserializable_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/BSON/Unserializable_arginfo.h
rename to mongodb-2.1.1/src/BSON/Unserializable_arginfo.h
diff --git a/mongodb-2.1.0/src/LIBMONGOCRYPT_VERSION_CURRENT b/mongodb-2.1.1/src/LIBMONGOCRYPT_VERSION_CURRENT
similarity index 100%
rename from mongodb-2.1.0/src/LIBMONGOCRYPT_VERSION_CURRENT
rename to mongodb-2.1.1/src/LIBMONGOCRYPT_VERSION_CURRENT
diff --git a/mongodb-2.1.1/src/LIBMONGOC_VERSION_CURRENT b/mongodb-2.1.1/src/LIBMONGOC_VERSION_CURRENT
new file mode 100644
index 00000000..ff592d35
--- /dev/null
+++ b/mongodb-2.1.1/src/LIBMONGOC_VERSION_CURRENT
@@ -0,0 +1 @@
+1.30.5
diff --git a/mongodb-2.1.0/src/MongoDB/BulkWrite.c b/mongodb-2.1.1/src/MongoDB/BulkWrite.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/BulkWrite.c
rename to mongodb-2.1.1/src/MongoDB/BulkWrite.c
diff --git a/mongodb-2.1.0/src/MongoDB/BulkWriteCommand.c b/mongodb-2.1.1/src/MongoDB/BulkWriteCommand.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/BulkWriteCommand.c
rename to mongodb-2.1.1/src/MongoDB/BulkWriteCommand.c
diff --git a/mongodb-2.1.0/src/MongoDB/BulkWriteCommand.h b/mongodb-2.1.1/src/MongoDB/BulkWriteCommand.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/BulkWriteCommand.h
rename to mongodb-2.1.1/src/MongoDB/BulkWriteCommand.h
diff --git a/mongodb-2.1.0/src/MongoDB/BulkWriteCommandResult.c b/mongodb-2.1.1/src/MongoDB/BulkWriteCommandResult.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/BulkWriteCommandResult.c
rename to mongodb-2.1.1/src/MongoDB/BulkWriteCommandResult.c
diff --git a/mongodb-2.1.0/src/MongoDB/BulkWriteCommandResult.h b/mongodb-2.1.1/src/MongoDB/BulkWriteCommandResult.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/BulkWriteCommandResult.h
rename to mongodb-2.1.1/src/MongoDB/BulkWriteCommandResult.h
diff --git a/mongodb-2.1.0/src/MongoDB/BulkWriteCommandResult_arginfo.h b/mongodb-2.1.1/src/MongoDB/BulkWriteCommandResult_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/BulkWriteCommandResult_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/BulkWriteCommandResult_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/BulkWriteCommand_arginfo.h b/mongodb-2.1.1/src/MongoDB/BulkWriteCommand_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/BulkWriteCommand_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/BulkWriteCommand_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/BulkWrite_arginfo.h b/mongodb-2.1.1/src/MongoDB/BulkWrite_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/BulkWrite_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/BulkWrite_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/ClientEncryption.c b/mongodb-2.1.1/src/MongoDB/ClientEncryption.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ClientEncryption.c
rename to mongodb-2.1.1/src/MongoDB/ClientEncryption.c
diff --git a/mongodb-2.1.0/src/MongoDB/ClientEncryption.h b/mongodb-2.1.1/src/MongoDB/ClientEncryption.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ClientEncryption.h
rename to mongodb-2.1.1/src/MongoDB/ClientEncryption.h
diff --git a/mongodb-2.1.0/src/MongoDB/ClientEncryption_arginfo.h b/mongodb-2.1.1/src/MongoDB/ClientEncryption_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ClientEncryption_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/ClientEncryption_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Command.c b/mongodb-2.1.1/src/MongoDB/Command.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Command.c
rename to mongodb-2.1.1/src/MongoDB/Command.c
diff --git a/mongodb-2.1.0/src/MongoDB/Command_arginfo.h b/mongodb-2.1.1/src/MongoDB/Command_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Command_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Command_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Cursor.c b/mongodb-2.1.1/src/MongoDB/Cursor.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Cursor.c
rename to mongodb-2.1.1/src/MongoDB/Cursor.c
diff --git a/mongodb-2.1.0/src/MongoDB/Cursor.h b/mongodb-2.1.1/src/MongoDB/Cursor.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Cursor.h
rename to mongodb-2.1.1/src/MongoDB/Cursor.h
diff --git a/mongodb-2.1.0/src/MongoDB/CursorInterface.c b/mongodb-2.1.1/src/MongoDB/CursorInterface.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/CursorInterface.c
rename to mongodb-2.1.1/src/MongoDB/CursorInterface.c
diff --git a/mongodb-2.1.0/src/MongoDB/CursorInterface_arginfo.h b/mongodb-2.1.1/src/MongoDB/CursorInterface_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/CursorInterface_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/CursorInterface_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Cursor_arginfo.h b/mongodb-2.1.1/src/MongoDB/Cursor_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Cursor_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Cursor_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/AuthenticationException.c b/mongodb-2.1.1/src/MongoDB/Exception/AuthenticationException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/AuthenticationException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/AuthenticationException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/AuthenticationException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/AuthenticationException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/AuthenticationException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/AuthenticationException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/BulkWriteCommandException.c b/mongodb-2.1.1/src/MongoDB/Exception/BulkWriteCommandException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/BulkWriteCommandException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/BulkWriteCommandException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/BulkWriteCommandException.h b/mongodb-2.1.1/src/MongoDB/Exception/BulkWriteCommandException.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/BulkWriteCommandException.h
rename to mongodb-2.1.1/src/MongoDB/Exception/BulkWriteCommandException.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/BulkWriteCommandException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/BulkWriteCommandException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/BulkWriteCommandException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/BulkWriteCommandException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/BulkWriteException.c b/mongodb-2.1.1/src/MongoDB/Exception/BulkWriteException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/BulkWriteException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/BulkWriteException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/BulkWriteException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/BulkWriteException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/BulkWriteException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/BulkWriteException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/CommandException.c b/mongodb-2.1.1/src/MongoDB/Exception/CommandException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/CommandException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/CommandException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/CommandException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/CommandException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/CommandException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/CommandException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/ConnectionException.c b/mongodb-2.1.1/src/MongoDB/Exception/ConnectionException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/ConnectionException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/ConnectionException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/ConnectionException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/ConnectionException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/ConnectionException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/ConnectionException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/ConnectionTimeoutException.c b/mongodb-2.1.1/src/MongoDB/Exception/ConnectionTimeoutException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/ConnectionTimeoutException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/ConnectionTimeoutException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/ConnectionTimeoutException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/ConnectionTimeoutException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/ConnectionTimeoutException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/ConnectionTimeoutException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/EncryptionException.c b/mongodb-2.1.1/src/MongoDB/Exception/EncryptionException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/EncryptionException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/EncryptionException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/EncryptionException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/EncryptionException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/EncryptionException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/EncryptionException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/Exception.c b/mongodb-2.1.1/src/MongoDB/Exception/Exception.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/Exception.c
rename to mongodb-2.1.1/src/MongoDB/Exception/Exception.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/Exception_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/Exception_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/Exception_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/Exception_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/ExecutionTimeoutException.c b/mongodb-2.1.1/src/MongoDB/Exception/ExecutionTimeoutException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/ExecutionTimeoutException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/ExecutionTimeoutException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/ExecutionTimeoutException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/ExecutionTimeoutException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/ExecutionTimeoutException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/ExecutionTimeoutException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/InvalidArgumentException.c b/mongodb-2.1.1/src/MongoDB/Exception/InvalidArgumentException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/InvalidArgumentException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/InvalidArgumentException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/InvalidArgumentException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/InvalidArgumentException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/InvalidArgumentException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/InvalidArgumentException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/LogicException.c b/mongodb-2.1.1/src/MongoDB/Exception/LogicException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/LogicException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/LogicException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/LogicException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/LogicException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/LogicException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/LogicException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/RuntimeException.c b/mongodb-2.1.1/src/MongoDB/Exception/RuntimeException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/RuntimeException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/RuntimeException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/RuntimeException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/RuntimeException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/RuntimeException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/RuntimeException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/ServerException.c b/mongodb-2.1.1/src/MongoDB/Exception/ServerException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/ServerException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/ServerException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/ServerException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/ServerException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/ServerException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/ServerException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/UnexpectedValueException.c b/mongodb-2.1.1/src/MongoDB/Exception/UnexpectedValueException.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/UnexpectedValueException.c
rename to mongodb-2.1.1/src/MongoDB/Exception/UnexpectedValueException.c
diff --git a/mongodb-2.1.0/src/MongoDB/Exception/UnexpectedValueException_arginfo.h b/mongodb-2.1.1/src/MongoDB/Exception/UnexpectedValueException_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Exception/UnexpectedValueException_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Exception/UnexpectedValueException_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Manager.c b/mongodb-2.1.1/src/MongoDB/Manager.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Manager.c
rename to mongodb-2.1.1/src/MongoDB/Manager.c
diff --git a/mongodb-2.1.0/src/MongoDB/Manager_arginfo.h b/mongodb-2.1.1/src/MongoDB/Manager_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Manager_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Manager_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/CommandFailedEvent.c b/mongodb-2.1.1/src/MongoDB/Monitoring/CommandFailedEvent.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/CommandFailedEvent.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/CommandFailedEvent.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/CommandFailedEvent_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/CommandFailedEvent_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/CommandFailedEvent_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/CommandFailedEvent_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/CommandStartedEvent.c b/mongodb-2.1.1/src/MongoDB/Monitoring/CommandStartedEvent.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/CommandStartedEvent.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/CommandStartedEvent.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/CommandStartedEvent_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/CommandStartedEvent_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/CommandStartedEvent_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/CommandStartedEvent_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/CommandSubscriber.c b/mongodb-2.1.1/src/MongoDB/Monitoring/CommandSubscriber.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/CommandSubscriber.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/CommandSubscriber.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/CommandSubscriber_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/CommandSubscriber_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/CommandSubscriber_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/CommandSubscriber_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/CommandSucceededEvent.c b/mongodb-2.1.1/src/MongoDB/Monitoring/CommandSucceededEvent.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/CommandSucceededEvent.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/CommandSucceededEvent.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/CommandSucceededEvent_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/CommandSucceededEvent_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/CommandSucceededEvent_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/CommandSucceededEvent_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/LogSubscriber.c b/mongodb-2.1.1/src/MongoDB/Monitoring/LogSubscriber.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/LogSubscriber.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/LogSubscriber.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/LogSubscriber_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/LogSubscriber_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/LogSubscriber_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/LogSubscriber_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/SDAMSubscriber.c b/mongodb-2.1.1/src/MongoDB/Monitoring/SDAMSubscriber.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/SDAMSubscriber.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/SDAMSubscriber.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/SDAMSubscriber_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/SDAMSubscriber_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/SDAMSubscriber_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/SDAMSubscriber_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/ServerChangedEvent.c b/mongodb-2.1.1/src/MongoDB/Monitoring/ServerChangedEvent.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/ServerChangedEvent.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/ServerChangedEvent.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/ServerChangedEvent_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/ServerChangedEvent_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/ServerChangedEvent_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/ServerChangedEvent_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/ServerClosedEvent.c b/mongodb-2.1.1/src/MongoDB/Monitoring/ServerClosedEvent.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/ServerClosedEvent.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/ServerClosedEvent.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/ServerClosedEvent_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/ServerClosedEvent_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/ServerClosedEvent_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/ServerClosedEvent_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/ServerHeartbeatFailedEvent.c b/mongodb-2.1.1/src/MongoDB/Monitoring/ServerHeartbeatFailedEvent.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/ServerHeartbeatFailedEvent.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/ServerHeartbeatFailedEvent.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/ServerHeartbeatFailedEvent_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/ServerHeartbeatFailedEvent_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/ServerHeartbeatFailedEvent_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/ServerHeartbeatFailedEvent_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/ServerHeartbeatStartedEvent.c b/mongodb-2.1.1/src/MongoDB/Monitoring/ServerHeartbeatStartedEvent.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/ServerHeartbeatStartedEvent.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/ServerHeartbeatStartedEvent.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/ServerHeartbeatStartedEvent_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/ServerHeartbeatStartedEvent_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/ServerHeartbeatStartedEvent_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/ServerHeartbeatStartedEvent_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent.c b/mongodb-2.1.1/src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/ServerOpeningEvent.c b/mongodb-2.1.1/src/MongoDB/Monitoring/ServerOpeningEvent.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/ServerOpeningEvent.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/ServerOpeningEvent.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/ServerOpeningEvent_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/ServerOpeningEvent_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/ServerOpeningEvent_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/ServerOpeningEvent_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/Subscriber.c b/mongodb-2.1.1/src/MongoDB/Monitoring/Subscriber.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/Subscriber.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/Subscriber.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/Subscriber_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/Subscriber_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/Subscriber_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/Subscriber_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/TopologyChangedEvent.c b/mongodb-2.1.1/src/MongoDB/Monitoring/TopologyChangedEvent.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/TopologyChangedEvent.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/TopologyChangedEvent.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/TopologyChangedEvent_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/TopologyChangedEvent_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/TopologyChangedEvent_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/TopologyChangedEvent_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/TopologyClosedEvent.c b/mongodb-2.1.1/src/MongoDB/Monitoring/TopologyClosedEvent.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/TopologyClosedEvent.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/TopologyClosedEvent.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/TopologyClosedEvent_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/TopologyClosedEvent_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/TopologyClosedEvent_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/TopologyClosedEvent_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/TopologyOpeningEvent.c b/mongodb-2.1.1/src/MongoDB/Monitoring/TopologyOpeningEvent.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/TopologyOpeningEvent.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/TopologyOpeningEvent.c
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/TopologyOpeningEvent_arginfo.h b/mongodb-2.1.1/src/MongoDB/Monitoring/TopologyOpeningEvent_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/TopologyOpeningEvent_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Monitoring/TopologyOpeningEvent_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Monitoring/functions.c b/mongodb-2.1.1/src/MongoDB/Monitoring/functions.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Monitoring/functions.c
rename to mongodb-2.1.1/src/MongoDB/Monitoring/functions.c
diff --git a/mongodb-2.1.0/src/MongoDB/Query.c b/mongodb-2.1.1/src/MongoDB/Query.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Query.c
rename to mongodb-2.1.1/src/MongoDB/Query.c
diff --git a/mongodb-2.1.0/src/MongoDB/Query.h b/mongodb-2.1.1/src/MongoDB/Query.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Query.h
rename to mongodb-2.1.1/src/MongoDB/Query.h
diff --git a/mongodb-2.1.0/src/MongoDB/Query_arginfo.h b/mongodb-2.1.1/src/MongoDB/Query_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Query_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Query_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/ReadConcern.c b/mongodb-2.1.1/src/MongoDB/ReadConcern.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ReadConcern.c
rename to mongodb-2.1.1/src/MongoDB/ReadConcern.c
diff --git a/mongodb-2.1.0/src/MongoDB/ReadConcern.h b/mongodb-2.1.1/src/MongoDB/ReadConcern.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ReadConcern.h
rename to mongodb-2.1.1/src/MongoDB/ReadConcern.h
diff --git a/mongodb-2.1.0/src/MongoDB/ReadConcern_arginfo.h b/mongodb-2.1.1/src/MongoDB/ReadConcern_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ReadConcern_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/ReadConcern_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/ReadPreference.c b/mongodb-2.1.1/src/MongoDB/ReadPreference.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ReadPreference.c
rename to mongodb-2.1.1/src/MongoDB/ReadPreference.c
diff --git a/mongodb-2.1.0/src/MongoDB/ReadPreference.h b/mongodb-2.1.1/src/MongoDB/ReadPreference.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ReadPreference.h
rename to mongodb-2.1.1/src/MongoDB/ReadPreference.h
diff --git a/mongodb-2.1.0/src/MongoDB/ReadPreference_arginfo.h b/mongodb-2.1.1/src/MongoDB/ReadPreference_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ReadPreference_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/ReadPreference_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Server.c b/mongodb-2.1.1/src/MongoDB/Server.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Server.c
rename to mongodb-2.1.1/src/MongoDB/Server.c
diff --git a/mongodb-2.1.0/src/MongoDB/Server.h b/mongodb-2.1.1/src/MongoDB/Server.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Server.h
rename to mongodb-2.1.1/src/MongoDB/Server.h
diff --git a/mongodb-2.1.0/src/MongoDB/ServerApi.c b/mongodb-2.1.1/src/MongoDB/ServerApi.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ServerApi.c
rename to mongodb-2.1.1/src/MongoDB/ServerApi.c
diff --git a/mongodb-2.1.0/src/MongoDB/ServerApi_arginfo.h b/mongodb-2.1.1/src/MongoDB/ServerApi_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ServerApi_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/ServerApi_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/ServerDescription.c b/mongodb-2.1.1/src/MongoDB/ServerDescription.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ServerDescription.c
rename to mongodb-2.1.1/src/MongoDB/ServerDescription.c
diff --git a/mongodb-2.1.0/src/MongoDB/ServerDescription.h b/mongodb-2.1.1/src/MongoDB/ServerDescription.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ServerDescription.h
rename to mongodb-2.1.1/src/MongoDB/ServerDescription.h
diff --git a/mongodb-2.1.0/src/MongoDB/ServerDescription_arginfo.h b/mongodb-2.1.1/src/MongoDB/ServerDescription_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/ServerDescription_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/ServerDescription_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Server_arginfo.h b/mongodb-2.1.1/src/MongoDB/Server_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Server_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Server_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/Session.c b/mongodb-2.1.1/src/MongoDB/Session.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Session.c
rename to mongodb-2.1.1/src/MongoDB/Session.c
diff --git a/mongodb-2.1.0/src/MongoDB/Session.h b/mongodb-2.1.1/src/MongoDB/Session.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Session.h
rename to mongodb-2.1.1/src/MongoDB/Session.h
diff --git a/mongodb-2.1.0/src/MongoDB/Session_arginfo.h b/mongodb-2.1.1/src/MongoDB/Session_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/Session_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/Session_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/TopologyDescription.c b/mongodb-2.1.1/src/MongoDB/TopologyDescription.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/TopologyDescription.c
rename to mongodb-2.1.1/src/MongoDB/TopologyDescription.c
diff --git a/mongodb-2.1.0/src/MongoDB/TopologyDescription.h b/mongodb-2.1.1/src/MongoDB/TopologyDescription.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/TopologyDescription.h
rename to mongodb-2.1.1/src/MongoDB/TopologyDescription.h
diff --git a/mongodb-2.1.0/src/MongoDB/TopologyDescription_arginfo.h b/mongodb-2.1.1/src/MongoDB/TopologyDescription_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/TopologyDescription_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/TopologyDescription_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/WriteConcern.c b/mongodb-2.1.1/src/MongoDB/WriteConcern.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/WriteConcern.c
rename to mongodb-2.1.1/src/MongoDB/WriteConcern.c
diff --git a/mongodb-2.1.0/src/MongoDB/WriteConcern.h b/mongodb-2.1.1/src/MongoDB/WriteConcern.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/WriteConcern.h
rename to mongodb-2.1.1/src/MongoDB/WriteConcern.h
diff --git a/mongodb-2.1.0/src/MongoDB/WriteConcernError.c b/mongodb-2.1.1/src/MongoDB/WriteConcernError.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/WriteConcernError.c
rename to mongodb-2.1.1/src/MongoDB/WriteConcernError.c
diff --git a/mongodb-2.1.0/src/MongoDB/WriteConcernError.h b/mongodb-2.1.1/src/MongoDB/WriteConcernError.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/WriteConcernError.h
rename to mongodb-2.1.1/src/MongoDB/WriteConcernError.h
diff --git a/mongodb-2.1.0/src/MongoDB/WriteConcernError_arginfo.h b/mongodb-2.1.1/src/MongoDB/WriteConcernError_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/WriteConcernError_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/WriteConcernError_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/WriteConcern_arginfo.h b/mongodb-2.1.1/src/MongoDB/WriteConcern_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/WriteConcern_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/WriteConcern_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/WriteError.c b/mongodb-2.1.1/src/MongoDB/WriteError.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/WriteError.c
rename to mongodb-2.1.1/src/MongoDB/WriteError.c
diff --git a/mongodb-2.1.0/src/MongoDB/WriteError.h b/mongodb-2.1.1/src/MongoDB/WriteError.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/WriteError.h
rename to mongodb-2.1.1/src/MongoDB/WriteError.h
diff --git a/mongodb-2.1.0/src/MongoDB/WriteError_arginfo.h b/mongodb-2.1.1/src/MongoDB/WriteError_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/WriteError_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/WriteError_arginfo.h
diff --git a/mongodb-2.1.0/src/MongoDB/WriteResult.c b/mongodb-2.1.1/src/MongoDB/WriteResult.c
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/WriteResult.c
rename to mongodb-2.1.1/src/MongoDB/WriteResult.c
diff --git a/mongodb-2.1.0/src/MongoDB/WriteResult.h b/mongodb-2.1.1/src/MongoDB/WriteResult.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/WriteResult.h
rename to mongodb-2.1.1/src/MongoDB/WriteResult.h
diff --git a/mongodb-2.1.0/src/MongoDB/WriteResult_arginfo.h b/mongodb-2.1.1/src/MongoDB/WriteResult_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/MongoDB/WriteResult_arginfo.h
rename to mongodb-2.1.1/src/MongoDB/WriteResult_arginfo.h
diff --git a/mongodb-2.1.0/src/contrib/php_array_api.h b/mongodb-2.1.1/src/contrib/php_array_api.h
similarity index 100%
rename from mongodb-2.1.0/src/contrib/php_array_api.h
rename to mongodb-2.1.1/src/contrib/php_array_api.h
diff --git a/mongodb-2.1.0/src/functions_arginfo.h b/mongodb-2.1.1/src/functions_arginfo.h
similarity index 100%
rename from mongodb-2.1.0/src/functions_arginfo.h
rename to mongodb-2.1.1/src/functions_arginfo.h
diff --git a/mongodb-2.1.1/src/libmongoc/VERSION_CURRENT b/mongodb-2.1.1/src/libmongoc/VERSION_CURRENT
new file mode 100644
index 00000000..ff592d35
--- /dev/null
+++ b/mongodb-2.1.1/src/libmongoc/VERSION_CURRENT
@@ -0,0 +1 @@
+1.30.5
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-atomic-private.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-atomic-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-atomic-private.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-atomic-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-atomic.c b/mongodb-2.1.1/src/libmongoc/src/common/src/common-atomic.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-atomic.c
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-atomic.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-b64-private.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-b64-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-b64-private.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-b64-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-b64.c b/mongodb-2.1.1/src/libmongoc/src/common/src/common-b64.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-b64.c
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-b64.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-bits-private.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-bits-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-bits-private.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-bits-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-bson-dsl-private.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-bson-dsl-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-bson-dsl-private.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-bson-dsl-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-cmp-private.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-cmp-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-cmp-private.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-cmp-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-config.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-config.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-config.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-config.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-config.h.in b/mongodb-2.1.1/src/libmongoc/src/common/src/common-config.h.in
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-config.h.in
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-config.h.in
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-json-private.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-json-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-json-private.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-json-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-json.c b/mongodb-2.1.1/src/libmongoc/src/common/src/common-json.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-json.c
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-json.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-macros-private.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-macros-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-macros-private.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-macros-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-md5-private.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-md5-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-md5-private.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-md5-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-md5.c b/mongodb-2.1.1/src/libmongoc/src/common/src/common-md5.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-md5.c
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-md5.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-oid-private.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-oid-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-oid-private.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-oid-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-oid.c b/mongodb-2.1.1/src/libmongoc/src/common/src/common-oid.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-oid.c
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-oid.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-prelude.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-prelude.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-prelude.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-prelude.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-string-private.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-string-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-string-private.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-string-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-string.c b/mongodb-2.1.1/src/libmongoc/src/common/src/common-string.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-string.c
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-string.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-thread-private.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-thread-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-thread-private.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-thread-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-thread.c b/mongodb-2.1.1/src/libmongoc/src/common/src/common-thread.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-thread.c
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-thread.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/common/src/common-utf8-private.h b/mongodb-2.1.1/src/libmongoc/src/common/src/common-utf8-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/common/src/common-utf8-private.h
rename to mongodb-2.1.1/src/libmongoc/src/common/src/common-utf8-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/hexlify.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/hexlify.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/hexlify.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/hexlify.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/hexlify.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/hexlify.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/hexlify.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/hexlify.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_azure_request.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_azure_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_azure_request.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_azure_request.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_b64.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_b64.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_b64.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_b64.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_caller_identity_request.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_caller_identity_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_caller_identity_request.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_caller_identity_request.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_crypto.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_crypto.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_crypto.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_crypto.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_crypto_apple.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_crypto_apple.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_crypto_apple.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_crypto_apple.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_crypto_libcrypto.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_crypto_libcrypto.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_crypto_libcrypto.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_crypto_libcrypto.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_crypto_none.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_crypto_none.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_crypto_none.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_crypto_none.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_crypto_windows.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_crypto_windows.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_crypto_windows.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_crypto_windows.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_decrypt_request.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_decrypt_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_decrypt_request.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_decrypt_request.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_encrypt_request.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_encrypt_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_encrypt_request.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_encrypt_request.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_endian_private.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_endian_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_endian_private.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_endian_private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_gcp_request.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_gcp_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_gcp_request.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_gcp_request.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_item_type_private.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_item_type_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_item_type_private.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_item_type_private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_reader_writer.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_reader_writer.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_reader_writer.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_reader_writer.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_reader_writer_private.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_reader_writer_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_reader_writer_private.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_reader_writer_private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_request.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_request.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_request.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_response.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_response.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_response.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_response.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_response_parser.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_response_parser.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_response_parser.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_response_parser.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_response_parser_private.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_response_parser_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_response_parser_private.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_response_parser_private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_result_reason_private.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_result_reason_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_result_reason_private.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_result_reason_private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_result_status_private.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_result_status_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_result_status_private.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_result_status_private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_tag_type_private.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_tag_type_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kmip_tag_type_private.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kmip_tag_type_private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kv_list.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kv_list.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kv_list.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kv_list.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kv_list.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kv_list.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_kv_list.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_kv_list.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_azure_request.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_azure_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_azure_request.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_azure_request.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_b64.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_b64.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_b64.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_b64.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_caller_identity_request.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_caller_identity_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_caller_identity_request.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_caller_identity_request.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_decrypt_request.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_decrypt_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_decrypt_request.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_decrypt_request.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_encrypt_request.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_encrypt_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_encrypt_request.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_encrypt_request.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_gcp_request.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_gcp_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_gcp_request.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_gcp_request.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_kmip_request.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_kmip_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_kmip_request.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_kmip_request.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_kmip_response.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_kmip_response.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_kmip_response.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_kmip_response.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_kmip_response_parser.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_kmip_response_parser.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_kmip_response_parser.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_kmip_response_parser.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_message.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_message.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_message.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_message.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_message_defines.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_message_defines.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_message_defines.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_message_defines.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_request.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_request.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_request.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_request_opt.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_request_opt.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_request_opt.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_request_opt.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_response.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_response.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_response.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_response.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_response_parser.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_response_parser.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message/kms_response_parser.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message/kms_response_parser.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message_private.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_message_private.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_message_private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_port.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_port.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_port.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_port.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_port.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_port.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_port.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_port.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_request.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_request.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_request.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_request_opt.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_request_opt.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_request_opt.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_request_opt.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_request_opt_private.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_request_opt_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_request_opt_private.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_request_opt_private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_request_str.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_request_str.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_request_str.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_request_str.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_request_str.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_request_str.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_request_str.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_request_str.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_response.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_response.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_response.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_response.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_response_parser.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_response_parser.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/kms_response_parser.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/kms_response_parser.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/sort.c b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/sort.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/sort.c
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/sort.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/kms-message/src/sort.h b/mongodb-2.1.1/src/libmongoc/src/kms-message/src/sort.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/kms-message/src/sort.h
rename to mongodb-2.1.1/src/libmongoc/src/kms-message/src/sort.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bcon.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bcon.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bcon.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bcon.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bcon.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bcon.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bcon.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bcon.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-atomic.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-atomic.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-atomic.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-atomic.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-atomic.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-atomic.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-atomic.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-atomic.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-clock.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-clock.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-clock.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-clock.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-clock.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-clock.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-clock.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-clock.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-cmp.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-cmp.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-cmp.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-cmp.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-compat.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-compat.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-compat.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-compat.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-config.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-config.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-config.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-config.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-config.h.in b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-config.h.in
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-config.h.in
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-config.h.in
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-context-private.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-context-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-context-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-context-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-context.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-context.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-context.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-context.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-context.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-context.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-context.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-context.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-decimal128.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-decimal128.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-decimal128.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-decimal128.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-decimal128.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-decimal128.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-decimal128.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-decimal128.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-endian.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-endian.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-endian.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-endian.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-error.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-error.c
similarity index 99%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-error.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-error.c
index d82941b8..739e530d 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-error.c
+++ b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-error.c
@@ -1,184 +1,184 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <stdio.h>
#include <stdarg.h>
#include <bson/bson-compat.h>
#include <bson/bson-config.h>
#include <bson/bson-error.h>
#include <bson/bson-memory.h>
#include <common-string-private.h>
#include <bson/bson-types.h>
// See `bson_strerror_r()` definition below.
#if !defined(_WIN32) && !defined(__APPLE__)
#include <locale.h> // uselocale()
#endif
/*
*--------------------------------------------------------------------------
*
* bson_set_error --
*
* Initializes @error using the parameters specified.
*
* @domain is an application specific error domain which should
* describe which module initiated the error. Think of this as the
* exception type.
*
* @code is the @domain specific error code.
*
* @format is used to generate the format string. It uses vsnprintf()
* internally so the format should match what you would use there.
*
* Parameters:
* @error: A #bson_error_t.
* @domain: The error domain.
* @code: The error code.
* @format: A printf style format string.
*
* Returns:
* None.
*
* Side effects:
* @error is initialized.
*
*--------------------------------------------------------------------------
*/
void
bson_set_error (bson_error_t *error, /* OUT */
uint32_t domain, /* IN */
uint32_t code, /* IN */
const char *format, /* IN */
...) /* IN */
{
va_list args;
if (error) {
error->domain = domain;
error->code = code;
va_start (args, format);
bson_vsnprintf (error->message, sizeof error->message, format, args);
va_end (args);
error->message[sizeof error->message - 1] = '\0';
}
}
/*
*--------------------------------------------------------------------------
*
* bson_strerror_r --
*
* This is a reentrant safe macro for strerror.
*
* The resulting string may be stored in @buf.
*
* Returns:
* A pointer to a static string or @buf.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
char *
bson_strerror_r (int err_code, /* IN */
char *buf BSON_MAYBE_UNUSED, /* IN */
size_t buflen BSON_MAYBE_UNUSED) /* IN */
{
static const char *unknown_msg = "Unknown error";
char *ret = NULL;
#if defined(_WIN32)
// Windows does not provide `strerror_l` or `strerror_r`, but it does
// unconditionally provide `strerror_s`.
- if (strerror_s (buf, buflen, err_code) != 0) {
+ if (strerror_s (buf, buflen, err_code) == 0) {
ret = buf;
}
#elif defined(_AIX)
// AIX does not provide strerror_l, and its strerror_r isn't glibc's.
// But it does provide a glibc compatible one called __linux_strerror_r
ret = __linux_strerror_r (err_code, buf, buflen);
#elif defined(__APPLE__)
// Apple does not provide `strerror_l`, but it does unconditionally provide
// the XSI-compliant `strerror_r`, but only when compiling with Apple Clang.
// GNU extensions may still be a problem if we are being compiled with GCC on
// Apple. Avoid the compatibility headaches with GNU extensions and the musl
// library by assuming the implementation will not cause UB when reading the
// error message string even when `strerror_r` fails, as encouraged (but not
// required) by the POSIX spec (see:
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/strerror.html#tag_16_574_08).
(void) strerror_r (err_code, buf, buflen);
ret = buf;
#elif defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 700
// The behavior (of `strerror_l`) is undefined if the locale argument to
// `strerror_l()` is the special locale object LC_GLOBAL_LOCALE or is not a
// valid locale object handle.
locale_t locale = uselocale ((locale_t) 0);
// No need to test for error (it can only be [EINVAL]).
if (locale == LC_GLOBAL_LOCALE) {
// Only use our own locale if a thread-local locale was not already set.
// This is just to satisfy `strerror_l`. We do NOT want to unconditionally
// set a thread-local locale.
locale = newlocale (LC_MESSAGES_MASK, "C", (locale_t) 0);
}
BSON_ASSERT (locale != LC_GLOBAL_LOCALE);
// Avoid `strerror_r` compatibility headaches with GNU extensions and the
// musl library by using `strerror_l` instead. Furthermore, `strerror_r` is
// scheduled to be marked as obsolete in favor of `strerror_l` in the
// upcoming POSIX Issue 8 (see:
// https://www.austingroupbugs.net/view.php?id=655).
//
// POSIX Spec: since strerror_l() is required to return a string for some
// errors, an application wishing to check for all error situations should
// set errno to 0, then call strerror_l(), then check errno.
if (locale != (locale_t) 0) {
errno = 0;
ret = strerror_l (err_code, locale);
if (errno != 0) {
ret = NULL;
}
freelocale (locale);
} else {
// Could not obtain a valid `locale_t` object to satisfy `strerror_l`.
// Fallback to `bson_strncpy` below.
}
#elif defined(_GNU_SOURCE)
// Unlikely, but continue supporting use of GNU extension in cases where the
// C Driver is being built without _XOPEN_SOURCE=700.
ret = strerror_r (err_code, buf, buflen);
#else
#error "Unable to find a supported strerror_r candidate"
#endif
if (!ret) {
bson_strncpy (buf, unknown_msg, buflen);
ret = buf;
}
return ret;
}
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-error.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-error.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-error.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-error.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-iso8601-private.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-iso8601-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-iso8601-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-iso8601-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-iso8601.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-iso8601.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-iso8601.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-iso8601.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-iter.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-iter.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-iter.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-iter.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-iter.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-iter.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-iter.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-iter.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-json-private.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-json-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-json-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-json-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-json.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-json.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-json.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-json.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-json.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-json.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-json.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-json.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-keys.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-keys.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-keys.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-keys.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-keys.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-keys.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-keys.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-keys.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-macros.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-macros.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-macros.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-macros.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-md5.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-md5.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-md5.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-md5.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-md5.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-md5.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-md5.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-md5.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-memory.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-memory.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-memory.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-memory.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-memory.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-memory.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-memory.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-memory.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-oid.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-oid.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-oid.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-oid.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-oid.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-oid.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-oid.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-oid.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-prelude.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-prelude.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-prelude.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-prelude.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-private.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-reader.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-reader.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-reader.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-reader.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-reader.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-reader.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-reader.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-reader.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-string.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-string.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-string.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-string.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-string.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-string.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-string.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-string.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-timegm-private.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-timegm-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-timegm-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-timegm-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-timegm.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-timegm.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-timegm.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-timegm.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-types.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-types.h
similarity index 91%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-types.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-types.h
index ad8ba743..3a4fcea6 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-types.h
+++ b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-types.h
@@ -1,520 +1,549 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <bson/bson-prelude.h>
#ifndef BSON_TYPES_H
#define BSON_TYPES_H
#include <stdlib.h>
#include <sys/types.h>
#include <bson/bson-macros.h>
#include <bson/bson-config.h>
#include <bson/bson-compat.h>
#include <bson/bson-endian.h>
BSON_BEGIN_DECLS
/*
*--------------------------------------------------------------------------
*
* bson_unichar_t --
*
* bson_unichar_t provides an unsigned 32-bit type for containing
* unicode characters. When iterating UTF-8 sequences, this should
* be used to avoid losing the high-bits of non-ascii characters.
*
* See also:
* bson_string_append_unichar()
*
*--------------------------------------------------------------------------
*/
typedef uint32_t bson_unichar_t;
/**
* @brief Flags configuring the creation of a bson_context_t
*/
typedef enum {
/** Use default options */
BSON_CONTEXT_NONE = 0,
/* Deprecated: Generating new OIDs from a bson_context_t is always
thread-safe */
BSON_CONTEXT_THREAD_SAFE = (1 << 0),
/* Deprecated: Does nothing and is ignored */
BSON_CONTEXT_DISABLE_HOST_CACHE = (1 << 1),
/* Call getpid() instead of remembering the result of getpid() when using the
context */
BSON_CONTEXT_DISABLE_PID_CACHE = (1 << 2),
/* Deprecated: Does nothing */
BSON_CONTEXT_USE_TASK_ID = (1 << 3),
} bson_context_flags_t;
/**
* bson_context_t:
*
* This structure manages context for the bson library. It handles
* configuration for thread-safety and other performance related requirements.
* Consumers will create a context and may use multiple under a variety of
* situations.
*
* If your program calls fork(), you should initialize a new bson_context_t
* using bson_context_init().
*
* If you are using threading, it is suggested that you use a bson_context_t
* per thread for best performance. Alternatively, you can initialize the
* bson_context_t with BSON_CONTEXT_THREAD_SAFE, although a performance penalty
* will be incurred.
*
* Many functions will require that you provide a bson_context_t such as OID
* generation.
*
* This structure is opaque in that you cannot see the contents of the
* structure. However, it is stack allocatable in that enough padding is
* provided in _bson_context_t to hold the structure.
*/
typedef struct _bson_context_t bson_context_t;
/**
* bson_json_opts_t:
*
* This structure is used to pass options for serializing BSON into extended
* JSON to the respective serialization methods.
*
* max_len can be either a non-negative integer, or BSON_MAX_LEN_UNLIMITED to
* set no limit for serialization length.
*/
typedef struct _bson_json_opts_t bson_json_opts_t;
/**
* bson_t:
*
* This structure manages a buffer whose contents are a properly formatted
* BSON document. You may perform various transforms on the BSON documents.
* Additionally, it can be iterated over using bson_iter_t.
*
* See bson_iter_init() for iterating the contents of a bson_t.
*
* When building a bson_t structure using the various append functions,
* memory allocations may occur. That is performed using power of two
* allocations and realloc().
*
* See http://bsonspec.org for the BSON document spec.
*
* This structure is meant to fit in two sequential 64-byte cachelines.
*/
#ifdef BSON_MEMCHECK
BSON_ALIGNED_BEGIN (128) typedef struct _bson_t {
uint32_t flags; /* Internal flags for the bson_t. */
uint32_t len; /* Length of BSON data. */
char *canary; /* For leak checks. */
uint8_t padding[120 - sizeof (char *)];
} bson_t BSON_ALIGNED_END (128);
#else
BSON_ALIGNED_BEGIN (128) typedef struct _bson_t {
uint32_t flags; /* Internal flags for the bson_t. */
uint32_t len; /* Length of BSON data. */
uint8_t padding[120]; /* Padding for stack allocation. */
} bson_t BSON_ALIGNED_END (128);
#endif
/**
* BSON_INITIALIZER:
*
* This macro can be used to initialize a #bson_t structure on the stack
* without calling bson_init().
*
* |[
* bson_t b = BSON_INITIALIZER;
* ]|
*/
#ifdef BSON_MEMCHECK
#define BSON_INITIALIZER \
{ \
3, 5, bson_malloc (1), {5}, \
}
#else
#define BSON_INITIALIZER \
{ \
3, 5, \
{ \
5 \
} \
}
#endif
BSON_STATIC_ASSERT2 (bson_t, sizeof (bson_t) == 128);
/**
* bson_oid_t:
*
* This structure contains the binary form of a BSON Object Id as specified
* on http://bsonspec.org. If you would like the bson_oid_t in string form
* see bson_oid_to_string() or bson_oid_to_string_r().
*/
typedef struct {
uint8_t bytes[12];
} bson_oid_t;
BSON_STATIC_ASSERT2 (oid_t, sizeof (bson_oid_t) == 12);
/**
* bson_decimal128_t:
*
* @high The high-order bytes of the decimal128. This field contains sign,
* combination bits, exponent, and part of the coefficient continuation.
* @low The low-order bytes of the decimal128. This field contains the second
* part of the coefficient continuation.
*
* This structure is a boxed type containing the value for the BSON decimal128
* type. The structure stores the 128 bits such that they correspond to the
* native format for the IEEE decimal128 type, if it is implemented.
**/
typedef struct {
#if BSON_BYTE_ORDER == BSON_LITTLE_ENDIAN
uint64_t low;
uint64_t high;
#elif BSON_BYTE_ORDER == BSON_BIG_ENDIAN
uint64_t high;
uint64_t low;
#endif
} bson_decimal128_t;
/**
- * bson_validate_flags_t:
+ * @brief Flags and error codes for BSON validation functions.
*
- * This enumeration is used for validation of BSON documents. It allows
- * selective control on what you wish to validate.
+ * Pass these flags bits to control the behavior of the `bson_validate` family
+ * of functions.
*
- * %BSON_VALIDATE_NONE: No additional validation occurs.
- * %BSON_VALIDATE_UTF8: Check that strings are valid UTF-8.
- * %BSON_VALIDATE_DOLLAR_KEYS: Check that keys do not start with $.
- * %BSON_VALIDATE_DOT_KEYS: Check that keys do not contain a period.
- * %BSON_VALIDATE_UTF8_ALLOW_NULL: Allow NUL bytes in UTF-8 text.
- * %BSON_VALIDATE_EMPTY_KEYS: Prohibit zero-length field names
+ * Additionally, if validation fails, then the error code set on a `bson_error_t`
+ * will have the value corresponding to the reason that validation failed.
*/
typedef enum {
+ /**
+ * @brief No special validation behavior specified.
+ */
BSON_VALIDATE_NONE = 0,
+ /**
+ * @brief Check that all text components of the BSON data are valid UTF-8.
+ *
+ * Note that this will also cause validation to reject valid text that contains
+ * a null character. This can be changed by also passing
+ * `BSON_VALIDATE_UTF8_ALLOW_NULL`
+ */
BSON_VALIDATE_UTF8 = (1 << 0),
+ /**
+ * @brief Check that element keys do not begin with an ASCII dollar `$`
+ */
BSON_VALIDATE_DOLLAR_KEYS = (1 << 1),
+ /**
+ * @brief Check that element keys do not contain an ASCII period `.`
+ */
BSON_VALIDATE_DOT_KEYS = (1 << 2),
+ /**
+ * @brief If set then it is *not* an error for a UTF-8 string to contain
+ * embedded null characters.
+ *
+ * This has no effect unless `BSON_VALIDATE_UTF8` is also passed.
+ */
BSON_VALIDATE_UTF8_ALLOW_NULL = (1 << 3),
+ /**
+ * @brief Check that no element key is a zero-length empty string.
+ */
BSON_VALIDATE_EMPTY_KEYS = (1 << 4),
+ /**
+ * @brief This is not a flag that controls behavior, but is instead used to indicate
+ * that a BSON document is corrupted in some way. This is the value that will
+ * appear as an error code.
+ *
+ * Passing this as a flag has no effect.
+ */
+ BSON_VALIDATE_CORRUPT = (1 << 5),
} bson_validate_flags_t;
/**
* bson_type_t:
*
* This enumeration contains all of the possible types within a BSON document.
* Use bson_iter_type() to fetch the type of a field while iterating over it.
*/
typedef enum {
BSON_TYPE_EOD = 0x00,
BSON_TYPE_DOUBLE = 0x01,
BSON_TYPE_UTF8 = 0x02,
BSON_TYPE_DOCUMENT = 0x03,
BSON_TYPE_ARRAY = 0x04,
BSON_TYPE_BINARY = 0x05,
BSON_TYPE_UNDEFINED = 0x06,
BSON_TYPE_OID = 0x07,
BSON_TYPE_BOOL = 0x08,
BSON_TYPE_DATE_TIME = 0x09,
BSON_TYPE_NULL = 0x0A,
BSON_TYPE_REGEX = 0x0B,
BSON_TYPE_DBPOINTER = 0x0C,
BSON_TYPE_CODE = 0x0D,
BSON_TYPE_SYMBOL = 0x0E,
BSON_TYPE_CODEWSCOPE = 0x0F,
BSON_TYPE_INT32 = 0x10,
BSON_TYPE_TIMESTAMP = 0x11,
BSON_TYPE_INT64 = 0x12,
BSON_TYPE_DECIMAL128 = 0x13,
BSON_TYPE_MAXKEY = 0x7F,
BSON_TYPE_MINKEY = 0xFF,
} bson_type_t;
/**
* bson_subtype_t:
*
* This enumeration contains the various subtypes that may be used in a binary
* field. See http://bsonspec.org for more information.
*/
typedef enum {
BSON_SUBTYPE_BINARY = 0x00,
BSON_SUBTYPE_FUNCTION = 0x01,
BSON_SUBTYPE_BINARY_DEPRECATED = 0x02,
BSON_SUBTYPE_UUID_DEPRECATED = 0x03,
BSON_SUBTYPE_UUID = 0x04,
BSON_SUBTYPE_MD5 = 0x05,
BSON_SUBTYPE_ENCRYPTED = 0x06,
BSON_SUBTYPE_COLUMN = 0x07,
BSON_SUBTYPE_SENSITIVE = 0x08,
BSON_SUBTYPE_USER = 0x80,
} bson_subtype_t;
/*
*--------------------------------------------------------------------------
*
* bson_value_t --
*
* A boxed type to contain various bson_type_t types.
*
* See also:
* bson_value_copy()
* bson_value_destroy()
*
*--------------------------------------------------------------------------
*/
BSON_ALIGNED_BEGIN (8)
typedef struct _bson_value_t {
bson_type_t value_type;
int32_t padding;
union {
bson_oid_t v_oid;
int64_t v_int64;
int32_t v_int32;
int8_t v_int8;
double v_double;
bool v_bool;
int64_t v_datetime;
struct {
uint32_t timestamp;
uint32_t increment;
} v_timestamp;
struct {
char *str;
uint32_t len;
} v_utf8;
struct {
uint8_t *data;
uint32_t data_len;
} v_doc;
struct {
uint8_t *data;
uint32_t data_len;
bson_subtype_t subtype;
} v_binary;
struct {
char *regex;
char *options;
} v_regex;
struct {
char *collection;
uint32_t collection_len;
bson_oid_t oid;
} v_dbpointer;
struct {
char *code;
uint32_t code_len;
} v_code;
struct {
char *code;
uint8_t *scope_data;
uint32_t code_len;
uint32_t scope_len;
} v_codewscope;
struct {
char *symbol;
uint32_t len;
} v_symbol;
bson_decimal128_t v_decimal128;
} value;
} bson_value_t BSON_ALIGNED_END (8);
/**
* bson_iter_t:
*
* This structure manages iteration over a bson_t structure. It keeps track
* of the location of the current key and value within the buffer. Using the
* various functions to get the value of the iter will read from these
* locations.
*
* This structure is safe to discard on the stack. No cleanup is necessary
* after using it.
*/
BSON_ALIGNED_BEGIN (128)
typedef struct {
const uint8_t *raw; /* The raw buffer being iterated. */
uint32_t len; /* The length of raw. */
uint32_t off; /* The offset within the buffer. */
uint32_t type; /* The offset of the type byte. */
uint32_t key; /* The offset of the key byte. */
uint32_t d1; /* The offset of the first data byte. */
uint32_t d2; /* The offset of the second data byte. */
uint32_t d3; /* The offset of the third data byte. */
uint32_t d4; /* The offset of the fourth data byte. */
uint32_t next_off; /* The offset of the next field. */
uint32_t err_off; /* The offset of the error. */
bson_value_t value; /* Internal value for various state. */
} bson_iter_t BSON_ALIGNED_END (128);
/**
* bson_reader_t:
*
* This structure is used to iterate over a sequence of BSON documents. It
* allows for them to be iterated with the possibility of no additional
* memory allocations under certain circumstances such as reading from an
* incoming mongo packet.
*/
BSON_ALIGNED_BEGIN (BSON_ALIGN_OF_PTR)
typedef struct {
uint32_t type;
/**< private >**/
} bson_reader_t BSON_ALIGNED_END (BSON_ALIGN_OF_PTR);
/**
* bson_visitor_t:
*
* This structure contains a series of pointers that can be executed for
* each field of a BSON document based on the field type.
*
* For example, if an int32 field is found, visit_int32 will be called.
*
* When visiting each field using bson_iter_visit_all(), you may provide a
* data pointer that will be provided with each callback. This might be useful
* if you are marshaling to another language.
*
* You may pre-maturely stop the visitation of fields by returning true in your
* visitor. Returning false will continue visitation to further fields.
*/
BSON_ALIGNED_BEGIN (8)
typedef struct {
/* run before / after descending into a document */
bool (*visit_before) (const bson_iter_t *iter, const char *key, void *data);
bool (*visit_after) (const bson_iter_t *iter, const char *key, void *data);
/* corrupt BSON, or unsupported type and visit_unsupported_type not set */
void (*visit_corrupt) (const bson_iter_t *iter, void *data);
/* normal bson field callbacks */
bool (*visit_double) (const bson_iter_t *iter, const char *key, double v_double, void *data);
bool (*visit_utf8) (const bson_iter_t *iter, const char *key, size_t v_utf8_len, const char *v_utf8, void *data);
bool (*visit_document) (const bson_iter_t *iter, const char *key, const bson_t *v_document, void *data);
bool (*visit_array) (const bson_iter_t *iter, const char *key, const bson_t *v_array, void *data);
bool (*visit_binary) (const bson_iter_t *iter,
const char *key,
bson_subtype_t v_subtype,
size_t v_binary_len,
const uint8_t *v_binary,
void *data);
/* normal field with deprecated "Undefined" BSON type */
bool (*visit_undefined) (const bson_iter_t *iter, const char *key, void *data);
bool (*visit_oid) (const bson_iter_t *iter, const char *key, const bson_oid_t *v_oid, void *data);
bool (*visit_bool) (const bson_iter_t *iter, const char *key, bool v_bool, void *data);
bool (*visit_date_time) (const bson_iter_t *iter, const char *key, int64_t msec_since_epoch, void *data);
bool (*visit_null) (const bson_iter_t *iter, const char *key, void *data);
bool (*visit_regex) (
const bson_iter_t *iter, const char *key, const char *v_regex, const char *v_options, void *data);
bool (*visit_dbpointer) (const bson_iter_t *iter,
const char *key,
size_t v_collection_len,
const char *v_collection,
const bson_oid_t *v_oid,
void *data);
bool (*visit_code) (const bson_iter_t *iter, const char *key, size_t v_code_len, const char *v_code, void *data);
bool (*visit_symbol) (
const bson_iter_t *iter, const char *key, size_t v_symbol_len, const char *v_symbol, void *data);
bool (*visit_codewscope) (const bson_iter_t *iter,
const char *key,
size_t v_code_len,
const char *v_code,
const bson_t *v_scope,
void *data);
bool (*visit_int32) (const bson_iter_t *iter, const char *key, int32_t v_int32, void *data);
bool (*visit_timestamp) (
const bson_iter_t *iter, const char *key, uint32_t v_timestamp, uint32_t v_increment, void *data);
bool (*visit_int64) (const bson_iter_t *iter, const char *key, int64_t v_int64, void *data);
bool (*visit_maxkey) (const bson_iter_t *iter, const char *key, void *data);
bool (*visit_minkey) (const bson_iter_t *iter, const char *key, void *data);
/* if set, called instead of visit_corrupt when an apparently valid BSON
* includes an unrecognized field type (reading future version of BSON) */
void (*visit_unsupported_type) (const bson_iter_t *iter, const char *key, uint32_t type_code, void *data);
bool (*visit_decimal128) (const bson_iter_t *iter,
const char *key,
const bson_decimal128_t *v_decimal128,
void *data);
void *padding[7];
} bson_visitor_t BSON_ALIGNED_END (8);
#define BSON_ERROR_BUFFER_SIZE 504
BSON_ALIGNED_BEGIN (8)
typedef struct _bson_error_t {
uint32_t domain;
uint32_t code;
char message[BSON_ERROR_BUFFER_SIZE];
} bson_error_t BSON_ALIGNED_END (8);
BSON_STATIC_ASSERT2 (error_t, sizeof (bson_error_t) == 512);
/**
* bson_next_power_of_two:
* @v: A 32-bit unsigned integer of required bytes.
*
* Determines the next larger power of two for the value of @v
* in a constant number of operations.
*
* It is up to the caller to guarantee this will not overflow.
*
* Returns: The next power of 2 from @v.
*/
static BSON_INLINE size_t
bson_next_power_of_two (size_t v)
{
v--;
v |= v >> 1;
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
#if BSON_WORD_SIZE == 64
v |= v >> 32;
#endif
v++;
return v;
}
static BSON_INLINE bool
bson_is_power_of_two (uint32_t v)
{
return ((v != 0) && ((v & (v - 1)) == 0));
}
BSON_END_DECLS
#endif /* BSON_TYPES_H */
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-utf8.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-utf8.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-utf8.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-utf8.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-utf8.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-utf8.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-utf8.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-utf8.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-value.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-value.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-value.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-value.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-value.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-value.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-value.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-value.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-version-functions.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-version-functions.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-version-functions.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-version-functions.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-version-functions.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-version-functions.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-version-functions.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-version-functions.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-version.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-version.h
similarity index 96%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-version.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-version.h
index 8d097cff..31103e80 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-version.h
+++ b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-version.h
@@ -1,102 +1,102 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION)
#error "Only <bson/bson.h> can be included directly."
#endif
// clang-format off
#ifndef BSON_VERSION_H
#define BSON_VERSION_H
/**
* BSON_MAJOR_VERSION:
*
* BSON major version component (e.g. 1 if %BSON_VERSION is 1.2.3)
*/
#define BSON_MAJOR_VERSION (1)
/**
* BSON_MINOR_VERSION:
*
* BSON minor version component (e.g. 2 if %BSON_VERSION is 1.2.3)
*/
#define BSON_MINOR_VERSION (30)
/**
* BSON_MICRO_VERSION:
*
* BSON micro version component (e.g. 3 if %BSON_VERSION is 1.2.3)
*/
-#define BSON_MICRO_VERSION (4)
+#define BSON_MICRO_VERSION (5)
/**
* BSON_PRERELEASE_VERSION:
*
* BSON prerelease version component (e.g. pre if %BSON_VERSION is 1.2.3-pre)
*/
#define BSON_PRERELEASE_VERSION ()
/**
* BSON_VERSION:
*
* BSON version.
*/
-#define BSON_VERSION (1.30.4)
+#define BSON_VERSION (1.30.5)
/**
* BSON_VERSION_S:
*
* BSON version, encoded as a string, useful for printing and
* concatenation.
*/
-#define BSON_VERSION_S "1.30.4"
+#define BSON_VERSION_S "1.30.5"
/**
* BSON_VERSION_HEX:
*
* BSON version, encoded as an hexadecimal number, useful for
* integer comparisons.
*/
#define BSON_VERSION_HEX (BSON_MAJOR_VERSION << 24 | \
BSON_MINOR_VERSION << 16 | \
BSON_MICRO_VERSION << 8)
/**
* BSON_CHECK_VERSION:
* @major: required major version
* @minor: required minor version
* @micro: required micro version
*
* Compile-time version checking. Evaluates to %TRUE if the version
* of BSON is greater than or equal to the required one.
*/
#define BSON_CHECK_VERSION(major,minor,micro) \
(BSON_MAJOR_VERSION > (major) || \
(BSON_MAJOR_VERSION == (major) && BSON_MINOR_VERSION > (minor)) || \
(BSON_MAJOR_VERSION == (major) && BSON_MINOR_VERSION == (minor) && \
BSON_MICRO_VERSION >= (micro)))
#endif /* BSON_VERSION_H */
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-version.h.in b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-version.h.in
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-version.h.in
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-version.h.in
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-writer.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-writer.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-writer.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-writer.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-writer.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-writer.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson-writer.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson-writer.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson.c
similarity index 92%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson.c
index bb6dbcfa..72799462 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson.c
+++ b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson.c
@@ -1,3057 +1,2842 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#include <bson/validate-private.h>
#include <bson/bson.h>
#include <bson/bson-config.h>
#include <bson/bson-private.h>
#include <bson/bson-json-private.h>
#include <common-string-private.h>
#include <common-json-private.h>
#include <common-macros-private.h>
#include <bson/bson-iso8601-private.h>
#include <common-cmp-private.h>
#include <string.h>
#include <math.h>
#ifdef BSON_MEMCHECK
#pragma message( \
"Do not define BSON_MEMCHECK. BSON_MEMCHECK changes the data layout of bson_t. BSON_MEMCHECK is deprecated may be removed in a future major release")
#endif
-typedef enum {
- BSON_VALIDATE_PHASE_START,
- BSON_VALIDATE_PHASE_TOP,
- BSON_VALIDATE_PHASE_LF_REF_KEY,
- BSON_VALIDATE_PHASE_LF_REF_UTF8,
- BSON_VALIDATE_PHASE_LF_ID_KEY,
- BSON_VALIDATE_PHASE_LF_DB_KEY,
- BSON_VALIDATE_PHASE_LF_DB_UTF8,
- BSON_VALIDATE_PHASE_NOT_DBREF,
-} bson_validate_phase_t;
-
-
-/*
- * Structures.
- */
-typedef struct {
- bson_validate_flags_t flags;
- ssize_t err_offset;
- bson_validate_phase_t phase;
- bson_error_t error;
-} bson_validate_state_t;
-
-
/*
* Globals.
*/
static const uint8_t gZero;
/*
*--------------------------------------------------------------------------
*
* _bson_round_up_alloc_size --
*
* Given a potential allocation length in bytes, round up to the
* next power of two without exceeding BSON_MAX_SIZE.
*
* Returns:
* If the input is <= BSON_MAX_SIZE, returns a value >= the input
* and still <= BSON_MAX_SIZE. If the input was greater than
* BSON_MAX_SIZE, it is returned unmodified.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
static BSON_INLINE size_t
_bson_round_up_alloc_size (size_t size)
{
if (size <= BSON_MAX_SIZE) {
size_t power_of_two = bson_next_power_of_two (size);
return BSON_MIN (power_of_two, BSON_MAX_SIZE);
} else {
return size;
}
}
/*
*--------------------------------------------------------------------------
*
* _bson_impl_inline_grow --
*
* Document growth implementation for documents that currently
* contain stack based buffers. The document may be switched to
* a malloc based buffer.
*
* Returns:
* true if successful; otherwise false indicating BSON_MAX_SIZE overflow.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
static bool
_bson_impl_inline_grow (bson_impl_inline_t *impl, /* IN */
uint32_t grow_size) /* IN */
{
bson_impl_alloc_t *alloc = (bson_impl_alloc_t *) impl;
uint8_t *data;
MONGOC_DEBUG_ASSERT ((size_t) impl->len <= BSON_MAX_SIZE);
MONGOC_DEBUG_ASSERT ((size_t) grow_size <= BSON_MAX_SIZE);
size_t req = (size_t) impl->len + (size_t) grow_size;
if (req <= sizeof impl->data) {
return true;
}
req = _bson_round_up_alloc_size (req);
if (req <= BSON_MAX_SIZE) {
data = bson_malloc (req);
memcpy (data, impl->data, impl->len);
#ifdef BSON_MEMCHECK
bson_free (impl->canary);
#endif
alloc->flags &= ~BSON_FLAG_INLINE;
alloc->parent = NULL;
alloc->depth = 0;
alloc->buf = &alloc->alloc;
alloc->buflen = &alloc->alloclen;
alloc->offset = 0;
alloc->alloc = data;
alloc->alloclen = req;
alloc->realloc = bson_realloc_ctx;
alloc->realloc_func_ctx = NULL;
return true;
}
return false;
}
/*
*--------------------------------------------------------------------------
*
* _bson_impl_alloc_grow --
*
* Document growth implementation for non-inline documents, possibly
* containing a reallocatable buffer.
*
* Returns:
* true if successful; otherwise false indicating BSON_MAX_SIZE overflow
* or an attempt to grow a buffer with no realloc implementation.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
static bool
_bson_impl_alloc_grow (bson_impl_alloc_t *impl, /* IN */
uint32_t grow_size) /* IN */
{
/* Determine how many bytes we need for this document in the buffer
* including necessary trailing bytes for parent documents.
*
* On size assumptions: the previous grow operation has already checked
* (len + offset + previous_depth) against BSON_MAX_SIZE. Current depth can be at most (previous_depth + 1). The
* caller has checked grow_size against BSON_MAX_SIZE. On the smallest (32-bit) supported size_t, we can still add
* these maximum values (2x BSON_MAX_SIZE, 1 additional byte of depth) without arithmetic overflow.
*/
MONGOC_DEBUG_ASSERT ((uint64_t) impl->len + (uint64_t) impl->offset + (uint64_t) impl->depth <=
(uint64_t) BSON_MAX_SIZE);
MONGOC_DEBUG_ASSERT ((size_t) grow_size <= BSON_MAX_SIZE);
size_t req = impl->offset + (size_t) impl->len + (size_t) grow_size + (size_t) impl->depth;
if (req <= *impl->buflen) {
return true;
}
req = _bson_round_up_alloc_size (req);
if ((req <= BSON_MAX_SIZE) && impl->realloc) {
*impl->buf = impl->realloc (*impl->buf, req, impl->realloc_func_ctx);
*impl->buflen = req;
return true;
}
return false;
}
/*
*--------------------------------------------------------------------------
*
* _bson_grow --
*
* Grows the bson_t structure to be large enough to contain @grow_size
* bytes in addition to its current content.
*
* The caller is responsible for ensuring @grow_size itself is not
* above BSON_MAX_SIZE, but a final determination of overflow status
* can't be made until we are inside _bson_impl_*_grow().
*
* Returns:
* true if successful, false if the size would overflow or the buffer
* needs to grow but does not support reallocation.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
static bool
_bson_grow (bson_t *bson, /* IN */
uint32_t grow_size) /* IN */
{
BSON_ASSERT ((size_t) grow_size <= BSON_MAX_SIZE);
if ((bson->flags & BSON_FLAG_INLINE)) {
return _bson_impl_inline_grow ((bson_impl_inline_t *) bson, grow_size);
}
return _bson_impl_alloc_grow ((bson_impl_alloc_t *) bson, grow_size);
}
/*
*--------------------------------------------------------------------------
*
* _bson_data --
*
* A helper function to return the contents of the bson document
* taking into account the polymorphic nature of bson_t.
*
* Returns:
* A buffer which should not be modified or freed.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
static BSON_INLINE uint8_t *
_bson_data (const bson_t *bson) /* IN */
{
if ((bson->flags & BSON_FLAG_INLINE)) {
return ((bson_impl_inline_t *) bson)->data;
} else {
bson_impl_alloc_t *impl = (bson_impl_alloc_t *) bson;
return (*impl->buf) + impl->offset;
}
}
/*
*--------------------------------------------------------------------------
*
* _bson_encode_length --
*
* Helper to encode the length of the bson_t in the first 4 bytes
* of the bson document. Little endian format is used as specified
* by bsonspec.
*
* Returns:
* None.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
static BSON_INLINE void
_bson_encode_length (bson_t *bson) /* IN */
{
#if BSON_BYTE_ORDER == BSON_LITTLE_ENDIAN
memcpy (_bson_data (bson), &bson->len, sizeof (bson->len));
#else
uint32_t length_le = BSON_UINT32_TO_LE (bson->len);
memcpy (_bson_data (bson), &length_le, sizeof (length_le));
#endif
}
typedef struct _bson_append_bytes_arg {
const uint8_t *bytes; // Not null.
uint32_t length; // > 0.
} _bson_append_bytes_arg;
typedef struct _bson_append_bytes_list {
_bson_append_bytes_arg args[8]; // Arbitrary length: just needs to be large enough.
_bson_append_bytes_arg *current; // "Insert"/"End" pointer.
uint32_t n_bytes; // Total bytes to be appended.
} _bson_append_bytes_list;
// To support unchecked cast from non-negative `int` to `size_t`.
BSON_STATIC_ASSERT2 (size_t_gte_int, SIZE_MAX >= INT_MAX);
// To support unchecked cast from `uint32_t` to `size_t`.
BSON_STATIC_ASSERT2 (size_t_gte_uint32_t, SIZE_MAX >= UINT32_MAX);
// Support largest _bson_impl_alloc_grow on smallest size_t
BSON_STATIC_ASSERT2 (max_alloc_grow_fits_min_sizet, (uint64_t) BSON_MAX_SIZE * 2u + 1u <= (uint64_t) UINT32_MAX);
// Declare local state with the identifier `ident`.
#define BSON_APPEND_BYTES_LIST_DECLARE(ident) \
_bson_append_bytes_list ident = {.current = (ident).args, .n_bytes = 0u}; \
((void) 0)
// Add a bytes+length pair only if `_length > 0`.
// Append failure if `n_bytes` will exceed BSON max size.
#define BSON_APPEND_BYTES_ADD_ARGUMENT(_list, _bytes, _length) \
if (BSON_UNLIKELY ((_length) > BSON_MAX_SIZE - (_list).n_bytes)) { \
goto append_failure; \
} else if ((_length) > 0) { \
*(_list).current++ = (_bson_append_bytes_arg){ \
.bytes = (const uint8_t *) (_bytes), \
.length = (_length), \
}; \
(_list).n_bytes += (_length); \
} else \
((void) 0)
// Add a UTF-8 string only if no embedded null bytes are present.
// Uses `strlen (_key)` when `_key_len < 0`, otherwise uses `_key_len`.
#define BSON_APPEND_BYTES_ADD_CHECKED_STRING(_list, _key, _key_len) \
uint32_t BSON_CONCAT (key_ulen_, __LINE__); \
if ((_key_len) < 0) { \
const size_t key_zulen = strlen ((_key)); \
if (BSON_UNLIKELY (key_zulen > UINT32_MAX)) { \
goto append_failure; \
} \
BSON_CONCAT (key_ulen_, __LINE__) = (uint32_t) key_zulen; \
} else { \
const size_t key_zulen = (size_t) (_key_len); \
if (BSON_UNLIKELY (key_zulen > UINT32_MAX)) { \
goto append_failure; \
} /* Necessary to validate embedded NULL is not present in key. */ \
else if (memchr ((_key), '\0', key_zulen) != NULL) { \
goto append_failure; \
} else { \
BSON_CONCAT (key_ulen_, __LINE__) = (uint32_t) key_zulen; \
} \
} \
BSON_APPEND_BYTES_ADD_ARGUMENT ((_list), (_key), BSON_CONCAT (key_ulen_, __LINE__))
// Apply the list of arguments to be appended to `_bson`.
// Append failure if adding `_list.n_bytes` will exceed BSON max size.
#define BSON_APPEND_BYTES_APPLY_ARGUMENTS(_bson, _list) \
if (BSON_UNLIKELY ((_list).n_bytes > BSON_MAX_SIZE - (_bson)->len)) { \
goto append_failure; \
} else if (BSON_UNLIKELY (!_bson_grow ((_bson), (_list).n_bytes))) { \
goto append_failure; \
} else { \
uint8_t *data = _bson_data ((_bson)) + ((_bson)->len - 1u); \
for (const _bson_append_bytes_arg *arg = (_list).args; arg != (_list).current; ++arg) { \
memcpy (data, arg->bytes, arg->length); \
(_bson)->len += arg->length; \
data += arg->length; \
} \
_bson_encode_length ((_bson)); \
data[0] = '\0'; \
} \
((void) 0)
/*
*--------------------------------------------------------------------------
*
* _bson_append_bson_begin --
*
* Begin appending a subdocument or subarray to the document using
* the key provided by @key.
*
* If @key_length is < 0, then strlen() will be called on @key
* to determine the length.
*
* @key_type MUST be either BSON_TYPE_DOCUMENT or BSON_TYPE_ARRAY.
*
* Returns:
* true if successful; otherwise false indicating BSON_MAX_SIZE overflow.
*
* Side effects:
* @child is initialized if true is returned.
*
*--------------------------------------------------------------------------
*/
static bool
_bson_append_bson_begin (bson_t *bson, /* IN */
const char *key, /* IN */
int key_length, /* IN */
bson_type_t child_type, /* IN */
bson_t *child) /* OUT */
{
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_ASSERT_PARAM (child);
BSON_ASSERT (!(bson->flags & BSON_FLAG_RDONLY));
BSON_ASSERT (!(bson->flags & BSON_FLAG_IN_CHILD));
BSON_ASSERT ((child_type == BSON_TYPE_DOCUMENT) || (child_type == BSON_TYPE_ARRAY));
{
BSON_APPEND_BYTES_LIST_DECLARE (args);
const uint8_t type = (uint8_t) child_type;
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
/*
* If the parent is an inline bson_t, then we need to convert
* it to a heap allocated buffer. This makes extending buffers
* of child bson documents much simpler logic, as they can just
* realloc the *buf pointer.
*/
if ((bson->flags & BSON_FLAG_INLINE)) {
BSON_ASSERT (bson->len <= 120);
if (!_bson_grow (bson, 128 - bson->len)) {
return false;
}
BSON_ASSERT (!(bson->flags & BSON_FLAG_INLINE));
}
const uint8_t empty[5] = {5};
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &empty, sizeof (empty));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
goto append_success;
append_failure:
return false;
}
append_success:
((void) 0);
bson_impl_alloc_t *aparent = (bson_impl_alloc_t *) bson;
bson_impl_alloc_t *achild = (bson_impl_alloc_t *) child;
/*
* Mark the document as working on a child document so that no
* further modifications can happen until the caller has called
* bson_append_{document,array}_end().
*/
bson->flags |= BSON_FLAG_IN_CHILD;
/*
* Initialize the child bson_t structure and point it at the parents
* buffers. This allows us to realloc directly from the child without
* walking up to the parent bson_t.
*/
achild->flags = (BSON_FLAG_CHILD | BSON_FLAG_NO_FREE | BSON_FLAG_STATIC);
if ((bson->flags & BSON_FLAG_CHILD)) {
achild->depth = ((bson_impl_alloc_t *) bson)->depth + 1;
} else {
achild->depth = 1;
}
achild->parent = bson;
achild->buf = aparent->buf;
achild->buflen = aparent->buflen;
achild->offset = aparent->offset + aparent->len - 1 - 5;
achild->len = 5;
achild->alloc = NULL;
achild->alloclen = 0;
achild->realloc = aparent->realloc;
achild->realloc_func_ctx = aparent->realloc_func_ctx;
return true;
}
/*
*--------------------------------------------------------------------------
*
* _bson_append_bson_end --
*
* Complete a call to _bson_append_bson_begin.
*
* Returns:
* true if successful.
*
* Side effects:
* @child is destroyed and no longer valid after calling this
* function.
*
*--------------------------------------------------------------------------
*/
static bool
_bson_append_bson_end (bson_t *bson, /* IN */
bson_t *child) /* IN */
{
BSON_ASSERT (bson);
BSON_ASSERT ((bson->flags & BSON_FLAG_IN_CHILD));
BSON_ASSERT (!(child->flags & BSON_FLAG_IN_CHILD));
/*
* Unmark the IN_CHILD flag.
*/
bson->flags &= ~BSON_FLAG_IN_CHILD;
/*
* Now that we are done building the sub-document, add the size to the
* parent, not including the default 5 byte empty document already added.
*/
bson->len = (bson->len + child->len - 5);
/*
* Ensure we have a \0 byte at the end and proper length encoded at
* the beginning of the document.
*/
_bson_data (bson)[bson->len - 1] = '\0';
_bson_encode_length (bson);
return true;
}
/*
*--------------------------------------------------------------------------
*
* bson_append_array_begin --
*
* Start appending a new array.
*
* Use @child to append to the data area for the given field.
*
* It is a programming error to call any other bson function on
* @bson until bson_append_array_end() has been called. It is
* valid to call bson_append*() functions on @child.
*
* This function is useful to allow building nested documents using
* a single buffer owned by the top-level bson document.
*
* Returns:
* true if successful; otherwise false and @child is invalid.
*
* Side effects:
* @child is initialized if true is returned.
*
*--------------------------------------------------------------------------
*/
bool
bson_append_array_begin (bson_t *bson, /* IN */
const char *key, /* IN */
int key_length, /* IN */
bson_t *child) /* IN */
{
BSON_ASSERT (bson);
BSON_ASSERT (key);
BSON_ASSERT (child);
return _bson_append_bson_begin (bson, key, key_length, BSON_TYPE_ARRAY, child);
}
/*
*--------------------------------------------------------------------------
*
* bson_append_array_end --
*
* Complete a call to bson_append_array_begin().
*
* It is safe to append other fields to @bson after calling this
* function.
*
* Returns:
* true if successful.
*
* Side effects:
* @child is invalid after calling this function.
*
*--------------------------------------------------------------------------
*/
bool
bson_append_array_end (bson_t *bson, /* IN */
bson_t *child) /* IN */
{
BSON_ASSERT (bson);
BSON_ASSERT (child);
return _bson_append_bson_end (bson, child);
}
/*
*--------------------------------------------------------------------------
*
* bson_append_document_begin --
*
* Start appending a new document.
*
* Use @child to append to the data area for the given field.
*
* It is a programming error to call any other bson function on
* @bson until bson_append_document_end() has been called. It is
* valid to call bson_append*() functions on @child.
*
* This function is useful to allow building nested documents using
* a single buffer owned by the top-level bson document.
*
* Returns:
* true if successful; otherwise false and @child is invalid.
*
* Side effects:
* @child is initialized if true is returned.
*
*--------------------------------------------------------------------------
*/
bool
bson_append_document_begin (bson_t *bson, /* IN */
const char *key, /* IN */
int key_length, /* IN */
bson_t *child) /* IN */
{
BSON_ASSERT (bson);
BSON_ASSERT (key);
BSON_ASSERT (child);
return _bson_append_bson_begin (bson, key, key_length, BSON_TYPE_DOCUMENT, child);
}
/*
*--------------------------------------------------------------------------
*
* bson_append_document_end --
*
* Complete a call to bson_append_document_begin().
*
* It is safe to append new fields to @bson after calling this
* function, if true is returned.
*
* Returns:
* true if successful; otherwise false indicating BSON_MAX_SIZE overflow.
*
* Side effects:
* @child is destroyed and invalid after calling this function.
*
*--------------------------------------------------------------------------
*/
bool
bson_append_document_end (bson_t *bson, /* IN */
bson_t *child) /* IN */
{
BSON_ASSERT (bson);
BSON_ASSERT (child);
return _bson_append_bson_end (bson, child);
}
/*
*--------------------------------------------------------------------------
*
* bson_append_array --
*
* Append an array to @bson.
*
* Generally, bson_append_array_begin() will result in faster code
* since few buffers need to be malloced.
*
* Returns:
* true if successful; otherwise false indicating BSON_MAX_SIZE overflow.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
bool
bson_append_array (bson_t *bson, /* IN */
const char *key, /* IN */
int key_length, /* IN */
const bson_t *array) /* IN */
{
static const uint8_t type = BSON_TYPE_ARRAY;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_ASSERT_PARAM (array);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
/*
* Let's be a bit pedantic and ensure the array has properly formatted key
* names. We will verify this simply by checking the first element for "0"
* if the array is non-empty.
*/
if (array && !bson_empty (array)) {
bson_iter_t iter;
if (bson_iter_init (&iter, array) && bson_iter_next (&iter)) {
if (0 != strcmp ("0", bson_iter_key (&iter))) {
fprintf (stderr,
"%s(): invalid array detected. first element of array "
"parameter is not \"0\".\n",
BSON_FUNC);
}
}
}
BSON_APPEND_BYTES_ADD_ARGUMENT (args, _bson_data (array), array->len);
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
/*
*--------------------------------------------------------------------------
*
* bson_append_binary --
*
* Append binary data to @bson. The field will have the
* BSON_TYPE_BINARY type.
*
* Parameters:
* @subtype: the BSON Binary Subtype. See bsonspec.org for more
* information.
* @binary: a pointer to the raw binary data.
* @length: the size of @binary in bytes.
*
* Returns:
* true if successful; otherwise false.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
bool
bson_append_binary (bson_t *bson, /* IN */
const char *key, /* IN */
int key_length, /* IN */
bson_subtype_t subtype, /* IN */
const uint8_t *binary, /* IN */
uint32_t length) /* IN */
{
static const uint8_t type = BSON_TYPE_BINARY;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
if (!binary && length > 0u) {
return false;
}
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
const uint8_t subtype_arg = (uint8_t) subtype;
if (subtype == BSON_SUBTYPE_BINARY_DEPRECATED) {
if (length > UINT32_MAX - 4u) {
return false;
}
const uint32_t length_le = BSON_UINT32_TO_LE (length + 4u);
const uint32_t length_arg = BSON_UINT32_TO_LE (length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &length_le, sizeof (length_le));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &subtype_arg, sizeof (subtype_arg));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &length_arg, sizeof (length_arg));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, binary, length);
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
} else {
const uint32_t length_arg = BSON_UINT32_TO_LE (length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &length_arg, sizeof (length_arg));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &subtype_arg, sizeof (subtype_arg));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, binary, length);
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
}
return true;
append_failure:
return false;
}
/*
*--------------------------------------------------------------------------
*
* bson_append_bool --
*
* Append a new field to @bson with the name @key. The value is
* a boolean indicated by @value.
*
* Returns:
* true if successful; otherwise false.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
bool
bson_append_bool (bson_t *bson, /* IN */
const char *key, /* IN */
int key_length, /* IN */
bool value) /* IN */
{
static const uint8_t type = BSON_TYPE_BOOL;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
const uint8_t byte_arg = value ? 1u : 0u;
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &byte_arg, sizeof (byte_arg));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
/*
*--------------------------------------------------------------------------
*
* bson_append_code --
*
* Append a new field to @bson containing javascript code.
*
* @javascript MUST be a zero terminated UTF-8 string. It MUST NOT
* containing embedded \0 characters.
*
* Returns:
* true if successful; otherwise false.
*
* Side effects:
* None.
*
* See also:
* bson_append_code_with_scope().
*
*--------------------------------------------------------------------------
*/
bool
bson_append_code (bson_t *bson, /* IN */
const char *key, /* IN */
int key_length, /* IN */
const char *javascript) /* IN */
{
static const uint8_t type = BSON_TYPE_CODE;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_ASSERT_PARAM (javascript);
const size_t zulength = strlen (javascript);
if (zulength > UINT32_MAX - 1u) {
return false;
}
const uint32_t length = (uint32_t) zulength + 1u;
const uint32_t length_arg = BSON_UINT32_TO_LE (length);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &length_arg, sizeof (length_arg));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, javascript, length);
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
/*
*--------------------------------------------------------------------------
*
* bson_append_code_with_scope --
*
* Append a new field to @bson containing javascript code with
* supplied scope.
*
* Returns:
* true if successful; otherwise false.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
bool
bson_append_code_with_scope (bson_t *bson, /* IN */
const char *key, /* IN */
int key_length, /* IN */
const char *javascript, /* IN */
const bson_t *scope) /* IN */
{
static const uint8_t type = BSON_TYPE_CODEWSCOPE;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_ASSERT_PARAM (javascript);
if (!scope) {
return bson_append_code (bson, key, key_length, javascript);
}
const size_t zulength = strlen (javascript);
if (zulength > UINT32_MAX - 1u) {
return false;
}
const uint32_t js_length = (uint32_t) zulength + 1u;
const uint32_t js_length_arg = BSON_UINT32_TO_LE (js_length);
if (js_length > UINT32_MAX - scope->len) {
return false;
}
if (js_length + scope->len > UINT32_MAX - (2u * sizeof (uint32_t))) {
return false;
}
const uint32_t total_length = (uint32_t) (2u * sizeof (uint32_t)) + js_length + scope->len;
const uint32_t total_length_arg = BSON_UINT32_TO_LE (total_length);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &total_length_arg, sizeof (total_length_arg));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &js_length_arg, sizeof (js_length_arg));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, javascript, js_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, _bson_data (scope), scope->len);
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
/*
*--------------------------------------------------------------------------
*
* bson_append_dbpointer --
*
* This BSON data type is DEPRECATED.
*
* Append a BSON dbpointer field to @bson.
*
* Returns:
* true if successful; otherwise false.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
bool
bson_append_dbpointer (bson_t *bson, /* IN */
const char *key, /* IN */
int key_length, /* IN */
const char *collection, /* IN */
const bson_oid_t *oid)
{
static const uint8_t type = BSON_TYPE_DBPOINTER;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_ASSERT_PARAM (collection);
BSON_ASSERT_PARAM (oid);
const size_t zulength = strlen (collection);
if (zulength > UINT32_MAX - 1u) {
return false;
}
const uint32_t length = (uint32_t) zulength + 1u;
const uint32_t length_arg = BSON_UINT32_TO_LE (length);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &length_arg, sizeof (length_arg));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, collection, length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, oid->bytes, sizeof (oid->bytes));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
/*
*--------------------------------------------------------------------------
*
* bson_append_document --
*
* Append a new field to @bson containing a BSON document.
*
* In general, using bson_append_document_begin() results in faster
* code and less memory fragmentation.
*
* Returns:
* true if successful; otherwise false.
*
* Side effects:
* None.
*
* See also:
* bson_append_document_begin().
*
*--------------------------------------------------------------------------
*/
bool
bson_append_document (bson_t *bson, /* IN */
const char *key, /* IN */
int key_length, /* IN */
const bson_t *value) /* IN */
{
static const uint8_t type = BSON_TYPE_DOCUMENT;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_ASSERT_PARAM (value);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, _bson_data (value), value->len);
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_double (bson_t *bson, const char *key, int key_length, double value)
{
static const uint8_t type = BSON_TYPE_DOUBLE;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
const double value_arg = BSON_DOUBLE_TO_LE (value);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &value_arg, sizeof (value_arg));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_int32 (bson_t *bson, const char *key, int key_length, int32_t value)
{
static const uint8_t type = BSON_TYPE_INT32;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
const uint32_t value_arg = BSON_UINT32_TO_LE (value);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &value_arg, sizeof (value_arg));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_int64 (bson_t *bson, const char *key, int key_length, int64_t value)
{
static const uint8_t type = BSON_TYPE_INT64;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
const uint64_t value_arg = BSON_UINT64_TO_LE (value);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &value_arg, sizeof (value_arg));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_decimal128 (bson_t *bson, const char *key, int key_length, const bson_decimal128_t *value)
{
static const uint8_t type = BSON_TYPE_DECIMAL128;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
const uint64_t value_arg[] = {
BSON_UINT64_TO_LE (value->low),
BSON_UINT64_TO_LE (value->high),
};
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &value_arg, sizeof (value_arg));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_iter (bson_t *bson, const char *key, int key_length, const bson_iter_t *iter)
{
bool ret = false;
BSON_ASSERT (bson);
BSON_ASSERT (iter);
if (!key) {
key = bson_iter_key (iter);
key_length = -1;
}
switch (bson_iter_type_unsafe (iter)) {
case BSON_TYPE_EOD:
return false;
case BSON_TYPE_DOUBLE:
ret = bson_append_double (bson, key, key_length, bson_iter_double (iter));
break;
case BSON_TYPE_UTF8: {
uint32_t len = 0;
const char *str;
str = bson_iter_utf8 (iter, &len);
ret = bson_append_utf8 (bson, key, key_length, str, len);
} break;
case BSON_TYPE_DOCUMENT: {
const uint8_t *buf = NULL;
uint32_t len = 0;
bson_t doc;
bson_iter_document (iter, &len, &buf);
if (bson_init_static (&doc, buf, len)) {
ret = bson_append_document (bson, key, key_length, &doc);
bson_destroy (&doc);
}
} break;
case BSON_TYPE_ARRAY: {
const uint8_t *buf = NULL;
uint32_t len = 0;
bson_t doc;
bson_iter_array (iter, &len, &buf);
if (bson_init_static (&doc, buf, len)) {
ret = bson_append_array (bson, key, key_length, &doc);
bson_destroy (&doc);
}
} break;
case BSON_TYPE_BINARY: {
const uint8_t *binary = NULL;
bson_subtype_t subtype = BSON_SUBTYPE_BINARY;
uint32_t len = 0;
bson_iter_binary (iter, &subtype, &len, &binary);
ret = bson_append_binary (bson, key, key_length, subtype, binary, len);
} break;
case BSON_TYPE_UNDEFINED:
ret = bson_append_undefined (bson, key, key_length);
break;
case BSON_TYPE_OID:
ret = bson_append_oid (bson, key, key_length, bson_iter_oid (iter));
break;
case BSON_TYPE_BOOL:
ret = bson_append_bool (bson, key, key_length, bson_iter_bool (iter));
break;
case BSON_TYPE_DATE_TIME:
ret = bson_append_date_time (bson, key, key_length, bson_iter_date_time (iter));
break;
case BSON_TYPE_NULL:
ret = bson_append_null (bson, key, key_length);
break;
case BSON_TYPE_REGEX: {
const char *regex;
const char *options;
regex = bson_iter_regex (iter, &options);
ret = bson_append_regex (bson, key, key_length, regex, options);
} break;
case BSON_TYPE_DBPOINTER: {
const bson_oid_t *oid;
uint32_t len;
const char *collection;
bson_iter_dbpointer (iter, &len, &collection, &oid);
ret = bson_append_dbpointer (bson, key, key_length, collection, oid);
} break;
case BSON_TYPE_CODE: {
uint32_t len;
const char *code;
code = bson_iter_code (iter, &len);
ret = bson_append_code (bson, key, key_length, code);
} break;
case BSON_TYPE_SYMBOL: {
uint32_t len;
const char *symbol;
symbol = bson_iter_symbol (iter, &len);
ret = bson_append_symbol (bson, key, key_length, symbol, len);
} break;
case BSON_TYPE_CODEWSCOPE: {
const uint8_t *scope = NULL;
uint32_t scope_len = 0;
uint32_t len = 0;
const char *javascript = NULL;
bson_t doc;
javascript = bson_iter_codewscope (iter, &len, &scope_len, &scope);
if (bson_init_static (&doc, scope, scope_len)) {
ret = bson_append_code_with_scope (bson, key, key_length, javascript, &doc);
bson_destroy (&doc);
}
} break;
case BSON_TYPE_INT32:
ret = bson_append_int32 (bson, key, key_length, bson_iter_int32 (iter));
break;
case BSON_TYPE_TIMESTAMP: {
uint32_t ts;
uint32_t inc;
bson_iter_timestamp (iter, &ts, &inc);
ret = bson_append_timestamp (bson, key, key_length, ts, inc);
} break;
case BSON_TYPE_INT64:
ret = bson_append_int64 (bson, key, key_length, bson_iter_int64 (iter));
break;
case BSON_TYPE_DECIMAL128: {
bson_decimal128_t dec;
if (!bson_iter_decimal128 (iter, &dec)) {
return false;
}
ret = bson_append_decimal128 (bson, key, key_length, &dec);
} break;
case BSON_TYPE_MAXKEY:
ret = bson_append_maxkey (bson, key, key_length);
break;
case BSON_TYPE_MINKEY:
ret = bson_append_minkey (bson, key, key_length);
break;
default:
break;
}
return ret;
}
bool
bson_append_maxkey (bson_t *bson, const char *key, int key_length)
{
static const uint8_t type = BSON_TYPE_MAXKEY;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_minkey (bson_t *bson, const char *key, int key_length)
{
static const uint8_t type = BSON_TYPE_MINKEY;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_null (bson_t *bson, const char *key, int key_length)
{
static const uint8_t type = BSON_TYPE_NULL;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_oid (bson_t *bson, const char *key, int key_length, const bson_oid_t *value)
{
static const uint8_t type = BSON_TYPE_OID;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_ASSERT_PARAM (value);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, value->bytes, sizeof (value->bytes));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_regex (bson_t *bson, const char *key, int key_length, const char *regex, const char *options)
{
return bson_append_regex_w_len (bson, key, key_length, regex, -1, options);
}
bool
bson_append_regex_w_len (
bson_t *bson, const char *key, int key_length, const char *regex, int regex_length, const char *options)
{
static const uint8_t type = BSON_TYPE_REGEX;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
bool ret = false;
if (!regex) {
regex = "";
}
if (!options) {
options = "";
}
size_t options_len = strlen (options);
mcommon_string_append_t options_sorted;
mcommon_string_new_with_capacity_as_append (&options_sorted, (uint32_t) options_len);
if (!mcommon_string_append_selected_chars (&options_sorted, BSON_REGEX_OPTIONS_SORTED, options, options_len)) {
goto append_failure;
}
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, regex, regex_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (
args, mcommon_str_from_append (&options_sorted), 1u + mcommon_strlen_from_append (&options_sorted));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
ret = true;
append_failure:
mcommon_string_from_append_destroy (&options_sorted);
return ret;
}
bool
bson_append_utf8 (bson_t *bson, const char *key, int key_length, const char *value, int length)
{
static const uint8_t type = BSON_TYPE_UTF8;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
if (BSON_UNLIKELY (!value)) {
return bson_append_null (bson, key, key_length);
}
size_t zulength;
if (BSON_UNLIKELY (length < 0)) {
zulength = strlen (value);
} else {
zulength = (size_t) length;
}
if (zulength > UINT32_MAX - 1u) {
return false;
}
const uint32_t ulength = (uint32_t) zulength;
const uint32_t ulength_arg = BSON_UINT32_TO_LE (ulength + 1u);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &ulength_arg, sizeof (ulength_arg));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, value, ulength);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_symbol (bson_t *bson, const char *key, int key_length, const char *value, int length)
{
static const uint8_t type = BSON_TYPE_SYMBOL;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
if (!value) {
return bson_append_null (bson, key, key_length);
}
size_t zulength;
if (BSON_UNLIKELY (length < 0)) {
zulength = strlen (value);
} else {
zulength = (size_t) length;
}
if (zulength > UINT32_MAX - 1u) {
return false;
}
const uint32_t ulength = (uint32_t) zulength;
const uint32_t ulength_arg = BSON_UINT32_TO_LE (ulength + 1u);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &ulength_arg, sizeof (ulength_arg));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, value, ulength);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_time_t (bson_t *bson, const char *key, int key_length, time_t value)
{
#ifdef BSON_OS_WIN32
struct timeval tv = {(long) value, 0};
#else
struct timeval tv = {value, 0};
#endif
BSON_ASSERT (bson);
BSON_ASSERT (key);
return bson_append_timeval (bson, key, key_length, &tv);
}
bool
bson_append_timestamp (bson_t *bson, const char *key, int key_length, uint32_t timestamp, uint32_t increment)
{
static const uint8_t type = BSON_TYPE_TIMESTAMP;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
const uint64_t value = BSON_UINT64_TO_LE (((((uint64_t) timestamp) << 32) | ((uint64_t) increment)));
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &value, sizeof (value));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_now_utc (bson_t *bson, const char *key, int key_length)
{
BSON_ASSERT (bson);
BSON_ASSERT (key);
BSON_ASSERT (key_length >= -1);
return bson_append_time_t (bson, key, key_length, time (NULL));
}
bool
bson_append_date_time (bson_t *bson, const char *key, int key_length, int64_t value)
{
static const uint8_t type = BSON_TYPE_DATE_TIME;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
const uint64_t value_arg = BSON_UINT64_TO_LE (value);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &value_arg, sizeof (value_arg));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_timeval (bson_t *bson, const char *key, int key_length, struct timeval *value)
{
uint64_t unix_msec;
BSON_ASSERT (bson);
BSON_ASSERT (key);
BSON_ASSERT (value);
unix_msec = (((uint64_t) value->tv_sec) * 1000UL) + (value->tv_usec / 1000UL);
return bson_append_date_time (bson, key, key_length, unix_msec);
}
bool
bson_append_undefined (bson_t *bson, const char *key, int key_length)
{
static const uint8_t type = BSON_TYPE_UNDEFINED;
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &type, sizeof (type));
BSON_APPEND_BYTES_ADD_CHECKED_STRING (args, key, key_length);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, &gZero, sizeof (gZero));
BSON_APPEND_BYTES_APPLY_ARGUMENTS (bson, args);
return true;
append_failure:
return false;
}
bool
bson_append_value (bson_t *bson, const char *key, int key_length, const bson_value_t *value)
{
bson_t local;
bool ret = false;
BSON_ASSERT (bson);
BSON_ASSERT (key);
BSON_ASSERT (value);
switch (value->value_type) {
case BSON_TYPE_DOUBLE:
ret = bson_append_double (bson, key, key_length, value->value.v_double);
break;
case BSON_TYPE_UTF8:
ret = bson_append_utf8 (bson, key, key_length, value->value.v_utf8.str, value->value.v_utf8.len);
break;
case BSON_TYPE_DOCUMENT:
if (bson_init_static (&local, value->value.v_doc.data, value->value.v_doc.data_len)) {
ret = bson_append_document (bson, key, key_length, &local);
bson_destroy (&local);
}
break;
case BSON_TYPE_ARRAY:
if (bson_init_static (&local, value->value.v_doc.data, value->value.v_doc.data_len)) {
ret = bson_append_array (bson, key, key_length, &local);
bson_destroy (&local);
}
break;
case BSON_TYPE_BINARY:
ret = bson_append_binary (bson,
key,
key_length,
value->value.v_binary.subtype,
value->value.v_binary.data,
value->value.v_binary.data_len);
break;
case BSON_TYPE_UNDEFINED:
ret = bson_append_undefined (bson, key, key_length);
break;
case BSON_TYPE_OID:
ret = bson_append_oid (bson, key, key_length, &value->value.v_oid);
break;
case BSON_TYPE_BOOL:
ret = bson_append_bool (bson, key, key_length, value->value.v_bool);
break;
case BSON_TYPE_DATE_TIME:
ret = bson_append_date_time (bson, key, key_length, value->value.v_datetime);
break;
case BSON_TYPE_NULL:
ret = bson_append_null (bson, key, key_length);
break;
case BSON_TYPE_REGEX:
ret = bson_append_regex (bson, key, key_length, value->value.v_regex.regex, value->value.v_regex.options);
break;
case BSON_TYPE_DBPOINTER:
ret = bson_append_dbpointer (
bson, key, key_length, value->value.v_dbpointer.collection, &value->value.v_dbpointer.oid);
break;
case BSON_TYPE_CODE:
ret = bson_append_code (bson, key, key_length, value->value.v_code.code);
break;
case BSON_TYPE_SYMBOL:
ret = bson_append_symbol (bson, key, key_length, value->value.v_symbol.symbol, value->value.v_symbol.len);
break;
case BSON_TYPE_CODEWSCOPE:
if (bson_init_static (&local, value->value.v_codewscope.scope_data, value->value.v_codewscope.scope_len)) {
ret = bson_append_code_with_scope (bson, key, key_length, value->value.v_codewscope.code, &local);
bson_destroy (&local);
}
break;
case BSON_TYPE_INT32:
ret = bson_append_int32 (bson, key, key_length, value->value.v_int32);
break;
case BSON_TYPE_TIMESTAMP:
ret = bson_append_timestamp (
bson, key, key_length, value->value.v_timestamp.timestamp, value->value.v_timestamp.increment);
break;
case BSON_TYPE_INT64:
ret = bson_append_int64 (bson, key, key_length, value->value.v_int64);
break;
case BSON_TYPE_DECIMAL128:
ret = bson_append_decimal128 (bson, key, key_length, &(value->value.v_decimal128));
break;
case BSON_TYPE_MAXKEY:
ret = bson_append_maxkey (bson, key, key_length);
break;
case BSON_TYPE_MINKEY:
ret = bson_append_minkey (bson, key, key_length);
break;
case BSON_TYPE_EOD:
default:
break;
}
return ret;
}
void
bson_init (bson_t *bson)
{
bson_impl_inline_t *impl = (bson_impl_inline_t *) bson;
BSON_ASSERT (bson);
#ifdef BSON_MEMCHECK
impl->canary = bson_malloc (1);
#endif
impl->flags = BSON_FLAG_INLINE | BSON_FLAG_STATIC;
impl->len = 5;
impl->data[0] = 5;
impl->data[1] = 0;
impl->data[2] = 0;
impl->data[3] = 0;
impl->data[4] = 0;
}
void
bson_reinit (bson_t *bson)
{
uint8_t *data;
BSON_ASSERT (bson);
data = _bson_data (bson);
bson->len = 5;
data[0] = 5;
data[1] = 0;
data[2] = 0;
data[3] = 0;
data[4] = 0;
}
bool
bson_init_static (bson_t *bson, const uint8_t *data, size_t length)
{
bson_impl_alloc_t *impl = (bson_impl_alloc_t *) bson;
uint32_t len_le;
BSON_ASSERT (bson);
BSON_ASSERT (data);
if ((length < 5) || (length > BSON_MAX_SIZE)) {
return false;
}
memcpy (&len_le, data, sizeof (len_le));
if ((size_t) BSON_UINT32_FROM_LE (len_le) != length) {
return false;
}
if (data[length - 1]) {
return false;
}
impl->flags = BSON_FLAG_STATIC | BSON_FLAG_RDONLY;
impl->len = (uint32_t) length;
impl->parent = NULL;
impl->depth = 0;
impl->buf = &impl->alloc;
impl->buflen = &impl->alloclen;
impl->offset = 0;
impl->alloc = (uint8_t *) data;
impl->alloclen = length;
impl->realloc = NULL;
impl->realloc_func_ctx = NULL;
return true;
}
bson_t *
bson_new (void)
{
bson_impl_inline_t *impl;
bson_t *bson;
bson = BSON_ALIGNED_ALLOC (bson_t);
impl = (bson_impl_inline_t *) bson;
impl->flags = BSON_FLAG_INLINE;
impl->len = 5;
#ifdef BSON_MEMCHECK
impl->canary = bson_malloc (1);
#endif
impl->data[0] = 5;
impl->data[1] = 0;
impl->data[2] = 0;
impl->data[3] = 0;
impl->data[4] = 0;
return bson;
}
bson_t *
bson_sized_new (size_t size)
{
bson_impl_alloc_t *impl_a;
bson_t *b;
BSON_ASSERT (size <= BSON_MAX_SIZE);
{
b = BSON_ALIGNED_ALLOC (bson_t);
impl_a = (bson_impl_alloc_t *) b;
}
if (size <= BSON_INLINE_DATA_SIZE) {
bson_init (b);
b->flags &= ~BSON_FLAG_STATIC;
} else {
impl_a->flags = BSON_FLAG_NONE;
impl_a->len = 5;
impl_a->parent = NULL;
impl_a->depth = 0;
impl_a->buf = &impl_a->alloc;
impl_a->buflen = &impl_a->alloclen;
impl_a->offset = 0;
impl_a->alloclen = BSON_MAX (5, size);
impl_a->alloc = bson_malloc (impl_a->alloclen);
impl_a->alloc[0] = 5;
impl_a->alloc[1] = 0;
impl_a->alloc[2] = 0;
impl_a->alloc[3] = 0;
impl_a->alloc[4] = 0;
impl_a->realloc = bson_realloc_ctx;
impl_a->realloc_func_ctx = NULL;
}
return b;
}
bson_t *
bson_new_from_data (const uint8_t *data, size_t length)
{
uint32_t len_le;
bson_t *bson;
BSON_ASSERT (data);
if ((length < 5) || (length > BSON_MAX_SIZE) || data[length - 1]) {
return NULL;
}
memcpy (&len_le, data, sizeof (len_le));
if (length != (size_t) BSON_UINT32_FROM_LE (len_le)) {
return NULL;
}
bson = bson_sized_new (length);
memcpy (_bson_data (bson), data, length);
bson->len = (uint32_t) length;
return bson;
}
bson_t *
bson_new_from_buffer (uint8_t **buf, size_t *buf_len, bson_realloc_func realloc_func, void *realloc_func_ctx)
{
bson_impl_alloc_t *impl;
uint32_t len_le;
uint32_t length;
bson_t *bson;
BSON_ASSERT (buf);
BSON_ASSERT (buf_len);
if (!realloc_func) {
realloc_func = bson_realloc_ctx;
}
bson = BSON_ALIGNED_ALLOC0 (bson_t);
impl = (bson_impl_alloc_t *) bson;
if (!*buf) {
length = 5;
len_le = BSON_UINT32_TO_LE (length);
*buf_len = 5;
*buf = realloc_func (*buf, *buf_len, realloc_func_ctx);
memcpy (*buf, &len_le, sizeof (len_le));
(*buf)[4] = '\0';
} else {
if ((*buf_len < 5) || (*buf_len > BSON_MAX_SIZE)) {
bson_free (bson);
return NULL;
}
memcpy (&len_le, *buf, sizeof (len_le));
length = BSON_UINT32_FROM_LE (len_le);
if ((size_t) length > *buf_len) {
bson_free (bson);
return NULL;
}
}
if ((*buf)[length - 1]) {
bson_free (bson);
return NULL;
}
impl->flags = BSON_FLAG_NO_FREE;
impl->len = length;
impl->buf = buf;
impl->buflen = buf_len;
impl->realloc = realloc_func;
impl->realloc_func_ctx = realloc_func_ctx;
return bson;
}
bson_t *
bson_copy (const bson_t *bson)
{
const uint8_t *data;
BSON_ASSERT (bson);
data = _bson_data (bson);
return bson_new_from_data (data, bson->len);
}
void
bson_copy_to (const bson_t *src, bson_t *dst)
{
const uint8_t *data;
bson_impl_alloc_t *adst;
size_t len;
BSON_ASSERT (src);
BSON_ASSERT (dst);
if ((src->flags & BSON_FLAG_INLINE)) {
#ifdef BSON_MEMCHECK
dst->len = src->len;
dst->canary = bson_malloc (1);
memcpy (dst->padding, src->padding, sizeof dst->padding);
#else
memcpy (dst, src, sizeof *dst);
#endif
dst->flags = (BSON_FLAG_STATIC | BSON_FLAG_INLINE);
return;
}
data = _bson_data (src);
len = _bson_round_up_alloc_size ((size_t) src->len);
MONGOC_DEBUG_ASSERT (len <= BSON_MAX_SIZE);
adst = (bson_impl_alloc_t *) dst;
adst->flags = BSON_FLAG_STATIC;
adst->len = src->len;
adst->parent = NULL;
adst->depth = 0;
adst->buf = &adst->alloc;
adst->buflen = &adst->alloclen;
adst->offset = 0;
adst->alloc = bson_malloc (len);
adst->alloclen = len;
adst->realloc = bson_realloc_ctx;
adst->realloc_func_ctx = NULL;
memcpy (adst->alloc, data, src->len);
}
static bool
should_ignore (const char *first_exclude, va_list args, const char *name)
{
bool ret = false;
const char *exclude = first_exclude;
va_list args_copy;
va_copy (args_copy, args);
do {
if (!strcmp (name, exclude)) {
ret = true;
break;
}
} while ((exclude = va_arg (args_copy, const char *)));
va_end (args_copy);
return ret;
}
void
bson_copy_to_excluding_noinit_va (const bson_t *src, bson_t *dst, const char *first_exclude, va_list args)
{
bson_iter_t iter;
if (bson_iter_init (&iter, src)) {
while (bson_iter_next (&iter)) {
if (!should_ignore (first_exclude, args, bson_iter_key (&iter))) {
if (!bson_append_iter (dst, NULL, 0, &iter)) {
/*
* This should not be able to happen since we are copying
* from within a valid bson_t.
*/
BSON_ASSERT (false);
return;
}
}
}
}
}
void
bson_copy_to_excluding (const bson_t *src, bson_t *dst, const char *first_exclude, ...)
{
va_list args;
BSON_ASSERT (src);
BSON_ASSERT (dst);
BSON_ASSERT (first_exclude);
bson_init (dst);
va_start (args, first_exclude);
bson_copy_to_excluding_noinit_va (src, dst, first_exclude, args);
va_end (args);
}
void
bson_copy_to_excluding_noinit (const bson_t *src, bson_t *dst, const char *first_exclude, ...)
{
va_list args;
BSON_ASSERT (src);
BSON_ASSERT (dst);
BSON_ASSERT (first_exclude);
va_start (args, first_exclude);
bson_copy_to_excluding_noinit_va (src, dst, first_exclude, args);
va_end (args);
}
void
bson_destroy (bson_t *bson)
{
if (!bson) {
return;
}
if (!(bson->flags & (BSON_FLAG_RDONLY | BSON_FLAG_INLINE | BSON_FLAG_NO_FREE))) {
bson_free (*((bson_impl_alloc_t *) bson)->buf);
}
#ifdef BSON_MEMCHECK
if (bson->flags & BSON_FLAG_INLINE) {
bson_free (bson->canary);
}
#endif
if (!(bson->flags & BSON_FLAG_STATIC)) {
bson_free (bson);
}
}
uint8_t *
bson_reserve_buffer (bson_t *bson, uint32_t total_size)
{
if (bson->flags & (BSON_FLAG_CHILD | BSON_FLAG_IN_CHILD | BSON_FLAG_RDONLY)) {
return NULL;
}
if (total_size > bson->len) {
if ((size_t) total_size > BSON_MAX_SIZE) {
return NULL;
}
/* Note that the bson_t can also include space for parent or sibling documents (offset) and for trailing bytes
* (depth). These sizes will be considered by _bson_grow() but we can assume they are zero in documents without
* BSON_FLAG_CHILD or BSON_FLAG_IN_CHILD. If this is called on a document that's part of a bson_writer_t, it is
* correct to ignore offset: we set the size of the current document, leaving previous documents alone. */
if (!_bson_grow (bson, total_size - bson->len)) {
// Will fail due to overflow or when reallocation is needed on a buffer that does not support it.
return NULL;
}
}
if (bson->flags & BSON_FLAG_INLINE) {
/* bson_grow didn't spill over */
((bson_impl_inline_t *) bson)->len = total_size;
BSON_ASSERT (total_size <= BSON_INLINE_DATA_SIZE);
} else {
bson_impl_alloc_t *impl = (bson_impl_alloc_t *) bson;
impl->len = total_size;
BSON_ASSERT (impl->offset <= *impl->buflen && *impl->buflen - impl->offset >= (size_t) total_size);
}
return _bson_data (bson);
}
bool
bson_steal (bson_t *dst, bson_t *src)
{
bson_impl_inline_t *src_inline;
bson_impl_inline_t *dst_inline;
bson_impl_alloc_t *alloc;
BSON_ASSERT (dst);
BSON_ASSERT (src);
bson_init (dst);
if (src->flags & (BSON_FLAG_CHILD | BSON_FLAG_IN_CHILD | BSON_FLAG_RDONLY)) {
return false;
}
if (src->flags & BSON_FLAG_INLINE) {
src_inline = (bson_impl_inline_t *) src;
dst_inline = (bson_impl_inline_t *) dst;
dst_inline->len = src_inline->len;
memcpy (dst_inline->data, src_inline->data, sizeof src_inline->data);
/* for consistency, src is always invalid after steal, even if inline */
src->len = 0;
#ifdef BSON_MEMCHECK
bson_free (src->canary);
#endif
} else {
#ifdef BSON_MEMCHECK
bson_free (dst->canary);
#endif
memcpy (dst, src, sizeof (bson_t));
alloc = (bson_impl_alloc_t *) dst;
alloc->flags |= BSON_FLAG_STATIC;
alloc->buf = &alloc->alloc;
alloc->buflen = &alloc->alloclen;
}
if (!(src->flags & BSON_FLAG_STATIC)) {
bson_free (src);
} else {
/* src is invalid after steal */
src->len = 0;
}
return true;
}
uint8_t *
bson_destroy_with_steal (bson_t *bson, bool steal, uint32_t *length)
{
uint8_t *ret = NULL;
BSON_ASSERT (bson);
if (length) {
*length = bson->len;
}
if (!steal) {
bson_destroy (bson);
return NULL;
}
if ((bson->flags & (BSON_FLAG_CHILD | BSON_FLAG_IN_CHILD | BSON_FLAG_RDONLY))) {
/* Do nothing */
} else if ((bson->flags & BSON_FLAG_INLINE)) {
bson_impl_inline_t *inl;
inl = (bson_impl_inline_t *) bson;
ret = bson_malloc (bson->len);
memcpy (ret, inl->data, bson->len);
} else {
bson_impl_alloc_t *alloc;
alloc = (bson_impl_alloc_t *) bson;
ret = *alloc->buf;
*alloc->buf = NULL;
}
bson_destroy (bson);
return ret;
}
const uint8_t *
bson_get_data (const bson_t *bson)
{
BSON_ASSERT (bson);
return _bson_data (bson);
}
uint32_t
bson_count_keys (const bson_t *bson)
{
uint32_t count = 0;
bson_iter_t iter;
BSON_ASSERT (bson);
if (bson_iter_init (&iter, bson)) {
while (bson_iter_next (&iter)) {
count++;
}
}
return count;
}
bool
bson_has_field (const bson_t *bson, const char *key)
{
bson_iter_t iter;
bson_iter_t child;
BSON_ASSERT (bson);
BSON_ASSERT (key);
if (NULL != strchr (key, '.')) {
return (bson_iter_init (&iter, bson) && bson_iter_find_descendant (&iter, key, &child));
}
return bson_iter_init_find (&iter, bson, key);
}
int
bson_compare (const bson_t *bson, const bson_t *other)
{
const uint8_t *data1;
const uint8_t *data2;
size_t len1;
size_t len2;
int64_t ret;
data1 = _bson_data (bson) + 4;
len1 = bson->len - 4;
data2 = _bson_data (other) + 4;
len2 = other->len - 4;
if (len1 == len2) {
return memcmp (data1, data2, len1);
}
ret = memcmp (data1, data2, BSON_MIN (len1, len2));
if (ret == 0) {
ret = (int64_t) len1 - (int64_t) len2;
}
return (ret < 0) ? -1 : (ret > 0);
}
bool
bson_equal (const bson_t *bson, const bson_t *other)
{
return !bson_compare (bson, other);
}
char *
bson_as_json_with_opts (const bson_t *bson, size_t *length, const bson_json_opts_t *opts)
{
BSON_ASSERT_PARAM (bson);
BSON_OPTIONAL_PARAM (length);
BSON_ASSERT_PARAM (opts);
// Convert the API-specified max length into a literal byte count; max length is transformed from a special value
// (-1) to the maximum representable size.
int32_t limit_i32 = opts->max_len;
uint32_t limit_u32 = 0;
if (limit_i32 == BSON_MAX_LEN_UNLIMITED) {
limit_u32 = UINT32_MAX - 1u;
} else if (limit_i32 > 0) {
limit_u32 = (uint32_t) limit_i32;
}
// Use the bson length as an initial buffer capacity guess
mcommon_string_append_t append;
mcommon_string_set_append_with_limit (mcommon_string_new_with_capacity ("", 0, bson->len), &append, limit_u32);
if (opts->is_outermost_array ? mcommon_json_append_bson_array (&append, bson, opts->mode, BSON_MAX_RECURSION)
: mcommon_json_append_bson_document (&append, bson, opts->mode, BSON_MAX_RECURSION)) {
if (length) {
*length = (size_t) mcommon_strlen_from_append (&append);
}
return mcommon_string_from_append_destroy_with_steal (&append);
} else {
if (length) {
*length = 0;
}
mcommon_string_from_append_destroy (&append);
return NULL;
}
}
char *
bson_as_canonical_extended_json (const bson_t *bson, size_t *length)
{
const bson_json_opts_t opts = {BSON_JSON_MODE_CANONICAL, BSON_MAX_LEN_UNLIMITED, false};
return bson_as_json_with_opts (bson, length, &opts);
}
char *
bson_as_json (const bson_t *bson, size_t *length)
{
return bson_as_legacy_extended_json (bson, length);
}
char *
bson_as_legacy_extended_json (const bson_t *bson, size_t *length)
{
const bson_json_opts_t opts = {BSON_JSON_MODE_LEGACY, BSON_MAX_LEN_UNLIMITED, false};
return bson_as_json_with_opts (bson, length, &opts);
}
char *
bson_as_relaxed_extended_json (const bson_t *bson, size_t *length)
{
const bson_json_opts_t opts = {BSON_JSON_MODE_RELAXED, BSON_MAX_LEN_UNLIMITED, false};
return bson_as_json_with_opts (bson, length, &opts);
}
char *
bson_array_as_json (const bson_t *bson, size_t *length)
{
return bson_array_as_legacy_extended_json (bson, length);
}
char *
bson_array_as_legacy_extended_json (const bson_t *bson, size_t *length)
{
const bson_json_opts_t opts = {BSON_JSON_MODE_LEGACY, BSON_MAX_LEN_UNLIMITED, true};
return bson_as_json_with_opts (bson, length, &opts);
}
char *
bson_array_as_relaxed_extended_json (const bson_t *bson, size_t *length)
{
const bson_json_opts_t opts = {BSON_JSON_MODE_RELAXED, BSON_MAX_LEN_UNLIMITED, true};
return bson_as_json_with_opts (bson, length, &opts);
}
char *
bson_array_as_canonical_extended_json (const bson_t *bson, size_t *length)
{
const bson_json_opts_t opts = {BSON_JSON_MODE_CANONICAL, BSON_MAX_LEN_UNLIMITED, true};
return bson_as_json_with_opts (bson, length, &opts);
}
-#define VALIDATION_ERR(_flag, _msg, ...) bson_set_error (&state->error, BSON_ERROR_INVALID, _flag, _msg, __VA_ARGS__)
-
-static bool
-_bson_iter_validate_utf8 (const bson_iter_t *iter, const char *key, size_t v_utf8_len, const char *v_utf8, void *data)
-{
- bson_validate_state_t *state = data;
- bool allow_null;
-
- if ((state->flags & BSON_VALIDATE_UTF8)) {
- allow_null = !!(state->flags & BSON_VALIDATE_UTF8_ALLOW_NULL);
-
- if (!bson_utf8_validate (v_utf8, v_utf8_len, allow_null)) {
- state->err_offset = iter->off;
- VALIDATION_ERR (BSON_VALIDATE_UTF8, "invalid utf8 string for key \"%s\"", key);
- return true;
- }
- }
-
- if ((state->flags & BSON_VALIDATE_DOLLAR_KEYS)) {
- if (state->phase == BSON_VALIDATE_PHASE_LF_REF_UTF8) {
- state->phase = BSON_VALIDATE_PHASE_LF_ID_KEY;
- } else if (state->phase == BSON_VALIDATE_PHASE_LF_DB_UTF8) {
- state->phase = BSON_VALIDATE_PHASE_NOT_DBREF;
- }
- }
-
- return false;
-}
-
-
-static void
-_bson_iter_validate_corrupt (const bson_iter_t *iter, void *data)
-{
- bson_validate_state_t *state = data;
-
- state->err_offset = iter->err_off;
- VALIDATION_ERR (BSON_VALIDATE_NONE, "%s", "corrupt BSON");
-}
-
-
-static bool
-_bson_iter_validate_before (const bson_iter_t *iter, const char *key, void *data)
-{
- bson_validate_state_t *state = data;
-
- if ((state->flags & BSON_VALIDATE_EMPTY_KEYS)) {
- if (key[0] == '\0') {
- state->err_offset = iter->off;
- VALIDATION_ERR (BSON_VALIDATE_EMPTY_KEYS, "%s", "empty key");
- return true;
- }
- }
-
- if ((state->flags & BSON_VALIDATE_DOLLAR_KEYS)) {
- if (key[0] == '$') {
- if (state->phase == BSON_VALIDATE_PHASE_LF_REF_KEY && strcmp (key, "$ref") == 0) {
- state->phase = BSON_VALIDATE_PHASE_LF_REF_UTF8;
- } else if (state->phase == BSON_VALIDATE_PHASE_LF_ID_KEY && strcmp (key, "$id") == 0) {
- state->phase = BSON_VALIDATE_PHASE_LF_DB_KEY;
- } else if (state->phase == BSON_VALIDATE_PHASE_LF_DB_KEY && strcmp (key, "$db") == 0) {
- state->phase = BSON_VALIDATE_PHASE_LF_DB_UTF8;
- } else {
- state->err_offset = iter->off;
- VALIDATION_ERR (BSON_VALIDATE_DOLLAR_KEYS, "keys cannot begin with \"$\": \"%s\"", key);
- return true;
- }
- } else if (state->phase == BSON_VALIDATE_PHASE_LF_ID_KEY || state->phase == BSON_VALIDATE_PHASE_LF_REF_UTF8 ||
- state->phase == BSON_VALIDATE_PHASE_LF_DB_UTF8) {
- state->err_offset = iter->off;
- VALIDATION_ERR (BSON_VALIDATE_DOLLAR_KEYS, "invalid key within DBRef subdocument: \"%s\"", key);
- return true;
- } else {
- state->phase = BSON_VALIDATE_PHASE_NOT_DBREF;
- }
- }
-
- if ((state->flags & BSON_VALIDATE_DOT_KEYS)) {
- if (strstr (key, ".")) {
- state->err_offset = iter->off;
- VALIDATION_ERR (BSON_VALIDATE_DOT_KEYS, "keys cannot contain \".\": \"%s\"", key);
- return true;
- }
- }
-
- return false;
-}
-
-
-static bool
-_bson_iter_validate_codewscope (
- const bson_iter_t *iter, const char *key, size_t v_code_len, const char *v_code, const bson_t *v_scope, void *data)
-{
- bson_validate_state_t *state = data;
- size_t offset = 0;
-
- BSON_UNUSED (key);
- BSON_UNUSED (v_code_len);
- BSON_UNUSED (v_code);
-
- if (!bson_validate (v_scope, state->flags, &offset)) {
- state->err_offset = iter->off + offset;
- VALIDATION_ERR (BSON_VALIDATE_NONE, "%s", "corrupt code-with-scope");
- return false;
- }
-
- return true;
-}
-
-
-static bool
-_bson_iter_validate_document (const bson_iter_t *iter, const char *key, const bson_t *v_document, void *data);
-
-
-static const bson_visitor_t bson_validate_funcs = {
- _bson_iter_validate_before,
- NULL, /* visit_after */
- _bson_iter_validate_corrupt,
- NULL, /* visit_double */
- _bson_iter_validate_utf8,
- _bson_iter_validate_document,
- _bson_iter_validate_document, /* visit_array */
- NULL, /* visit_binary */
- NULL, /* visit_undefined */
- NULL, /* visit_oid */
- NULL, /* visit_bool */
- NULL, /* visit_date_time */
- NULL, /* visit_null */
- NULL, /* visit_regex */
- NULL, /* visit_dbpoint */
- NULL, /* visit_code */
- NULL, /* visit_symbol */
- _bson_iter_validate_codewscope,
-};
-
-
-static bool
-_bson_iter_validate_document (const bson_iter_t *iter, const char *key, const bson_t *v_document, void *data)
-{
- bson_validate_state_t *state = data;
- bson_iter_t child;
- bson_validate_phase_t phase = state->phase;
-
- BSON_UNUSED (key);
-
- if (!bson_iter_init (&child, v_document)) {
- state->err_offset = iter->off;
- return true;
- }
-
- if (state->phase == BSON_VALIDATE_PHASE_START) {
- state->phase = BSON_VALIDATE_PHASE_TOP;
- } else {
- state->phase = BSON_VALIDATE_PHASE_LF_REF_KEY;
- }
-
- (void) bson_iter_visit_all (&child, &bson_validate_funcs, state);
-
- if (state->phase == BSON_VALIDATE_PHASE_LF_ID_KEY || state->phase == BSON_VALIDATE_PHASE_LF_REF_UTF8 ||
- state->phase == BSON_VALIDATE_PHASE_LF_DB_UTF8) {
- if (state->err_offset <= 0) {
- state->err_offset = iter->off;
- }
-
- return true;
- }
-
- state->phase = phase;
-
- return false;
-}
-
-
-static void
-_bson_validate_internal (const bson_t *bson, bson_validate_state_t *state)
-{
- bson_iter_t iter;
-
- state->err_offset = -1;
- state->phase = BSON_VALIDATE_PHASE_START;
- memset (&state->error, 0, sizeof state->error);
-
- if (!bson_iter_init (&iter, bson)) {
- state->err_offset = 0;
- VALIDATION_ERR (BSON_VALIDATE_NONE, "%s", "corrupt BSON");
- } else {
- _bson_iter_validate_document (&iter, NULL, bson, state);
- }
-}
-
-
bool
bson_validate (const bson_t *bson, bson_validate_flags_t flags, size_t *offset)
{
return bson_validate_with_error_and_offset (bson, flags, offset, NULL);
}
bool
bson_validate_with_error (const bson_t *bson, bson_validate_flags_t flags, bson_error_t *error)
{
return bson_validate_with_error_and_offset (bson, flags, NULL, error);
}
-
bool
bson_validate_with_error_and_offset (const bson_t *bson,
bson_validate_flags_t flags,
size_t *offset,
bson_error_t *error)
{
- bson_validate_state_t state;
-
- state.flags = flags;
- _bson_validate_internal (bson, &state);
+ BSON_ASSERT_PARAM (bson);
+ BSON_OPTIONAL_PARAM (offset);
+ BSON_OPTIONAL_PARAM (error);
- if (state.err_offset >= 0) {
- if (offset) {
- *offset = (size_t) state.err_offset;
- }
- if (error) {
- memcpy (error, &state.error, sizeof *error);
- }
- return false;
+ size_t offset_local = 0;
+ if (!offset) {
+ offset = &offset_local;
+ }
+ bson_error_t error_local;
+ if (!error) {
+ error = &error_local;
}
- return true;
+ return _bson_validate_impl_v2 (bson, flags, offset, error);
}
bool
bson_concat (bson_t *dst, const bson_t *src)
{
BSON_ASSERT (dst);
BSON_ASSERT (src);
if (!bson_empty (src)) {
BSON_APPEND_BYTES_LIST_DECLARE (args);
BSON_APPEND_BYTES_ADD_ARGUMENT (args, _bson_data (src) + 4, src->len - 5u);
BSON_APPEND_BYTES_APPLY_ARGUMENTS (dst, args);
}
return true;
append_failure:
return false;
}
struct _bson_array_builder_t {
uint32_t index;
bson_t bson;
};
bson_array_builder_t *
bson_array_builder_new (void)
{
bson_array_builder_t *bab = BSON_ALIGNED_ALLOC0 (bson_array_builder_t);
bson_init (&bab->bson);
return bab;
}
// `bson_array_builder_append_impl` generates the next key index, calls
// `append_fn`, and may update the tracked next index.
#define bson_array_builder_append_impl(append_fn, ...) \
if (1) { \
BSON_ASSERT_PARAM (bab); \
const char *key; \
char buf[16]; \
size_t key_length = bson_uint32_to_string (bab->index, &key, buf, sizeof buf); \
/* Expect enough room in `buf` for key string. UINT32_MAX is 10 digits. \
* With the NULL terminator, 11 is expected maximum number of \
* characters. */ \
BSON_ASSERT (key_length < sizeof buf); \
bool ok = append_fn (&bab->bson, key, (int) key_length, __VA_ARGS__); \
if (ok) { \
bab->index += 1; \
} \
return ok; \
} else \
(void) 0
#define bson_array_builder_append_impl_noargs(append_fn) \
if (1) { \
BSON_ASSERT_PARAM (bab); \
const char *key; \
char buf[16]; \
size_t key_length = bson_uint32_to_string (bab->index, &key, buf, sizeof buf); \
/* Expect enough room in `buf` for key string. UINT32_MAX is 10 digits. \
* With the NULL terminator, 11 is expected maximum number of \
* characters. */ \
BSON_ASSERT (key_length < sizeof buf); \
bool ok = append_fn (&bab->bson, key, (int) key_length); \
if (ok) { \
bab->index += 1; \
} \
return ok; \
} else \
(void) 0
bool
bson_array_builder_append_value (bson_array_builder_t *bab, const bson_value_t *value)
{
bson_array_builder_append_impl (bson_append_value, value);
}
bool
bson_array_builder_append_array (bson_array_builder_t *bab, const bson_t *array)
{
bson_array_builder_append_impl (bson_append_array, array);
}
bool
bson_array_builder_append_binary (bson_array_builder_t *bab,
bson_subtype_t subtype,
const uint8_t *binary,
uint32_t length)
{
bson_array_builder_append_impl (bson_append_binary, subtype, binary, length);
}
bool
bson_array_builder_append_bool (bson_array_builder_t *bab, bool value)
{
bson_array_builder_append_impl (bson_append_bool, value);
}
bool
bson_array_builder_append_code (bson_array_builder_t *bab, const char *javascript)
{
bson_array_builder_append_impl (bson_append_code, javascript);
}
bool
bson_array_builder_append_code_with_scope (bson_array_builder_t *bab, const char *javascript, const bson_t *scope)
{
bson_array_builder_append_impl (bson_append_code_with_scope, javascript, scope);
}
bool
bson_array_builder_append_dbpointer (bson_array_builder_t *bab, const char *collection, const bson_oid_t *oid)
{
bson_array_builder_append_impl (bson_append_dbpointer, collection, oid);
}
bool
bson_array_builder_append_double (bson_array_builder_t *bab, double value)
{
bson_array_builder_append_impl (bson_append_double, value);
}
bool
bson_array_builder_append_document (bson_array_builder_t *bab, const bson_t *value)
{
bson_array_builder_append_impl (bson_append_document, value);
}
bool
bson_array_builder_append_document_begin (bson_array_builder_t *bab, bson_t *child)
{
bson_array_builder_append_impl (bson_append_document_begin, child);
}
bool
bson_array_builder_append_document_end (bson_array_builder_t *bab, bson_t *child)
{
return bson_append_document_end (&bab->bson, child);
}
bool
bson_array_builder_append_int32 (bson_array_builder_t *bab, int32_t value)
{
bson_array_builder_append_impl (bson_append_int32, value);
}
bool
bson_array_builder_append_int64 (bson_array_builder_t *bab, int64_t value)
{
bson_array_builder_append_impl (bson_append_int64, value);
}
bool
bson_array_builder_append_decimal128 (bson_array_builder_t *bab, const bson_decimal128_t *value)
{
bson_array_builder_append_impl (bson_append_decimal128, value);
}
bool
bson_array_builder_append_iter (bson_array_builder_t *bab, const bson_iter_t *iter)
{
bson_array_builder_append_impl (bson_append_iter, iter);
}
bool
bson_array_builder_append_minkey (bson_array_builder_t *bab)
{
bson_array_builder_append_impl_noargs (bson_append_minkey);
}
bool
bson_array_builder_append_maxkey (bson_array_builder_t *bab)
{
bson_array_builder_append_impl_noargs (bson_append_maxkey);
}
bool
bson_array_builder_append_null (bson_array_builder_t *bab)
{
bson_array_builder_append_impl_noargs (bson_append_null);
}
bool
bson_array_builder_append_oid (bson_array_builder_t *bab, const bson_oid_t *oid)
{
bson_array_builder_append_impl (bson_append_oid, oid);
}
bool
bson_array_builder_append_regex (bson_array_builder_t *bab, const char *regex, const char *options)
{
bson_array_builder_append_impl (bson_append_regex, regex, options);
}
bool
bson_array_builder_append_regex_w_len (bson_array_builder_t *bab,
const char *regex,
int regex_length,
const char *options)
{
bson_array_builder_append_impl (bson_append_regex_w_len, regex, regex_length, options);
}
bool
bson_array_builder_append_utf8 (bson_array_builder_t *bab, const char *value, int length)
{
bson_array_builder_append_impl (bson_append_utf8, value, length);
}
bool
bson_array_builder_append_symbol (bson_array_builder_t *bab, const char *value, int length)
{
bson_array_builder_append_impl (bson_append_symbol, value, length);
}
bool
bson_array_builder_append_time_t (bson_array_builder_t *bab, time_t value)
{
bson_array_builder_append_impl (bson_append_time_t, value);
}
bool
bson_array_builder_append_timeval (bson_array_builder_t *bab, struct timeval *value)
{
bson_array_builder_append_impl (bson_append_timeval, value);
}
bool
bson_array_builder_append_date_time (bson_array_builder_t *bab, int64_t value)
{
bson_array_builder_append_impl (bson_append_date_time, value);
}
bool
bson_array_builder_append_now_utc (bson_array_builder_t *bab)
{
bson_array_builder_append_impl_noargs (bson_append_now_utc);
}
bool
bson_array_builder_append_timestamp (bson_array_builder_t *bab, uint32_t timestamp, uint32_t increment)
{
bson_array_builder_append_impl (bson_append_timestamp, timestamp, increment);
}
bool
bson_array_builder_append_undefined (bson_array_builder_t *bab)
{
bson_array_builder_append_impl_noargs (bson_append_undefined);
}
bool
bson_array_builder_append_array_builder_begin (bson_array_builder_t *bab, bson_array_builder_t **child)
{
bson_array_builder_append_impl (bson_append_array_builder_begin, child);
}
bool
bson_array_builder_append_array_builder_end (bson_array_builder_t *bab, bson_array_builder_t *child)
{
return bson_append_array_builder_end (&bab->bson, child);
}
bool
bson_array_builder_build (bson_array_builder_t *bab, bson_t *out)
{
BSON_ASSERT_PARAM (bab);
BSON_ASSERT_PARAM (out);
if (!bson_steal (out, &bab->bson)) {
return false;
}
bson_init (&bab->bson);
bab->index = 0;
return true;
}
void
bson_array_builder_destroy (bson_array_builder_t *bab)
{
if (!bab) {
return;
}
bson_destroy (&bab->bson);
bson_free (bab);
}
bool
bson_append_array_builder_begin (bson_t *bson, const char *key, int key_length, bson_array_builder_t **child)
{
BSON_ASSERT_PARAM (bson);
BSON_ASSERT_PARAM (key);
BSON_ASSERT_PARAM (child);
*child = bson_array_builder_new ();
bool ok = bson_append_array_begin (bson, key, key_length, &(*child)->bson);
if (!ok) {
bson_array_builder_destroy (*child);
*child = NULL;
}
return ok;
}
bool
bson_append_array_builder_end (bson_t *bson, bson_array_builder_t *child)
{
bool ok = bson_append_array_end (bson, &child->bson);
bson_array_builder_destroy (child);
return ok;
}
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/bson/bson.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/bson.h
diff --git a/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/validate-private.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/validate-private.h
new file mode 100644
index 00000000..f6c8e664
--- /dev/null
+++ b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/validate-private.h
@@ -0,0 +1,37 @@
+#ifndef BSON_VALIDATE_PRIVATE_H_INCLUDED
+#define BSON_VALIDATE_PRIVATE_H_INCLUDED
+
+#include <bson/bson-types.h>
+
+enum {
+ /**
+ * @brief This compile-time constant represents the maximum document nesting
+ * depth permitted by the `bson_validate` family of functions. If the nesting
+ * depth exceeds this limit, the data will be rejected.
+ *
+ * This limit is intentionally larger than the default limit of MongoDB
+ * server, since we cannot anticipate what a libbson user might actually want
+ * to do with BSON, and to prevent accidentally rejecting data that the
+ * server might accept. The main purpose of this limit is to prevent stack
+ * overflow, not to reject invalid data.
+ */
+ BSON_VALIDATION_MAX_NESTING_DEPTH = 500,
+};
+
+/**
+ * @brief Private function backing the implementation of validation.
+ *
+ * Validation was previously defined in the overburdened `bson-iter.c`, but it
+ * is now defined in its own file.
+ *
+ * @param bson The document to validate. Must be non-null.
+ * @param flags Validation control flags
+ * @param offset Receives the offset at which validation failed. Must be non-null.
+ * @param error Receives the error describing why validation failed. Must be non-null.
+ * @return true If the given document has no validation errors
+ * @return false Otherwise
+ */
+bool
+_bson_validate_impl_v2 (const bson_t *bson, bson_validate_flags_t flags, size_t *offset, bson_error_t *error);
+
+#endif // BSON_VALIDATE_PRIVATE_H_INCLUDED
diff --git a/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/validate.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/validate.c
new file mode 100644
index 00000000..10402df0
--- /dev/null
+++ b/mongodb-2.1.1/src/libmongoc/src/libbson/src/bson/validate.c
@@ -0,0 +1,569 @@
+/**
+ * @file bson/validate.c
+ * @brief Implementation of BSON document validation
+ * @date 2025-05-28
+ *
+ * This file implements the backend for the `bson_validate` family of functions.
+ *
+ * The `_validate_...` functions all accept `validator* self` as their first parameter,
+ * and must `return false` AND set `self->error` if-and-only-if they encounter a validation error.
+ * If a function returns true, it is assumed that validation of that item succeeded.
+ *
+ * For brevity, the `require...` macros are defined, which check conditions, set errors,
+ * and `return false` inline.
+ *
+ * @copyright Copyright 2009-present MongoDB, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <bson/validate-private.h>
+#include <bson/bson.h>
+
+#include <stdbool.h>
+#include <string.h>
+
+/**
+ * @brief User parameters for validation behavior. These correspond to the various
+ * flags that can be given when the user requests validation
+ */
+typedef struct {
+ /**
+ * @brief Should we allow invalid UTF-8 in string components?
+ *
+ * This affects the behavior of validation of key strings and string-like
+ * elements that require UTF-8 encoding.
+ *
+ * Technically invalid UTF-8 is invalid in BSON, but applications may already
+ * rely on this being accepted.
+ */
+ bool allow_invalid_utf8;
+ /**
+ * @brief Should we allow a zero-valued codepoint in text?
+ *
+ * Unicode U+0000 is a valid codepoint, but a lot of software doesn't like
+ * it and handles it poorly. By default, we reject it, but the user may
+ * want to allow it.
+ *
+ * Note that because element keys rely on null termination, element keys
+ * cannot contain U+0000 by construction.
+ */
+ bool allow_null_in_utf8;
+ /// Should we allow element key strings to be empty strings?
+ bool allow_empty_keys;
+ /// Should we allow ASCII dot "." in element key strings?
+ bool allow_dot_in_keys;
+ /**
+ * @brief Check for special element keys that begin with an ASCII dollar "$"
+ *
+ * By default, we ignore them and treat them as regular elements. If this is
+ * enabled, we reject key strings that start with a dollar, unless it is a
+ * special extended JSON DBRef document.
+ *
+ * This also enables DBRef validation, which checks the structure of a document
+ * whose first key is "$ref".
+ */
+ bool check_special_dollar_keys;
+} validation_params;
+
+/**
+ * @brief State for a validator.
+ */
+typedef struct {
+ /// The parameters that control validation behavior
+ const validation_params *params;
+ /// Error storage that is updated if any validation encounters an error
+ bson_error_t error;
+ /// The zero-based index of the byte where validation stopped in case of an error.
+ size_t error_offset;
+} validator;
+
+// Undef these macros, if they are defined.
+#ifdef require_with_error
+#undef require_with_error
+#endif
+#ifdef require
+#undef require
+#endif
+#ifdef require_advance
+#undef require_advance
+#endif
+
+/**
+ * @brief Check that the given condition is satisfied, or set an error and return `false`
+ *
+ * @param Condition The condition that should evaluate to `true`
+ * @param Offset The byte offset where an error should be indicated.
+ * @param Code The error code that should be set if the condition fails
+ * @param ... The error string and format arguments to be used in the error message
+ *
+ * This macro assumes a `validator* self` is in scope. This macro will evaluate `return false`
+ * if the given condition is not true.
+ */
+#define require_with_error(Condition, Offset, Code, ...) \
+ if (!(Condition)) { \
+ self->error_offset = (Offset); \
+ bson_set_error (&self->error, BSON_ERROR_INVALID, Code, __VA_ARGS__); \
+ return false; \
+ } else \
+ ((void) 0)
+
+/**
+ * @brief Check that the given condition is satisfied, or `return false` immediately.
+ *
+ * This macro does not modify the validator state. It only does an early-return.
+ */
+#define require(Cond) \
+ if (!(Cond)) { \
+ return false; \
+ } else \
+ ((void) 0)
+
+/**
+ * @brief Advance the pointed-to iterator, check for errors, and test whether we are done.
+ *
+ * @param DoneVar An l-value of type `bool` that is set to `true` if the iterator hit the end of
+ * the document, otherwise `false`
+ * @param IteratorPointer An expression of type `bson_iter_t*`, which will be advanced.
+ *
+ * If advancing the iterator results in a decoding error, then this macro sets an error
+ * on the `validator* self` that is in scope and will immediately `return false`.
+ */
+#define require_advance(DoneVar, IteratorPointer) \
+ if ((DoneVar = !bson_iter_next (IteratorPointer))) { \
+ /* The iterator indicates that it stopped */ \
+ if ((IteratorPointer)->err_off) { \
+ /* The iterator stopped because of a decoding error */ \
+ require_with_error (false, (IteratorPointer)->err_off, BSON_VALIDATE_CORRUPT, "corrupt BSON"); \
+ } \
+ } else \
+ ((void) 0)
+
+// Test if the element's key is equal to the given string
+static bool
+_key_is (bson_iter_t const *iter, const char *const key)
+{
+ BSON_ASSERT_PARAM (iter);
+ BSON_ASSERT_PARAM (key);
+ return !strcmp (bson_iter_key (iter), key);
+}
+
+/**
+ * @brief Validate a document or array object, recursively.
+ *
+ * @param self The validator which will be updated and used to do the validation
+ * @param bson The object to be validated
+ * @param depth The validation depth. We indicate an error if this exceeds a limit.
+ * @return true If the object is valid
+ * @return false Otherwise
+ */
+static bool
+_validate_doc (validator *self, const bson_t *bson, int depth);
+
+/**
+ * @brief Validate a UTF-8 string, if-and-only-if UTF-8 validation is requested
+ *
+ * @param self Pointer to the validator object
+ * @param offset The byte-offset of the string, used to set the error offset
+ * @param u8 Pointer to the first byte in a UTF-8 string
+ * @param u8len The length of the array pointed-to by `u8`
+ * @return true If the UTF-8 string is valid, or if UTF-8 validation is disabled
+ * @return false If UTF-8 validation is requested, AND (the UTF-8 string is invalid OR (UTF-8 strings should not contain
+ * null characters and the UTF-8 string contains a null character))
+ */
+static bool
+_maybe_validate_utf8 (validator *self, size_t offset, const char *u8, size_t u8len)
+{
+ BSON_ASSERT_PARAM (self);
+ BSON_ASSERT_PARAM (u8);
+ if (self->params->allow_invalid_utf8) {
+ // We are not doing UTF-8 checks, so always succeed
+ return true;
+ }
+ // Validate UTF-8
+ const bool u8okay = bson_utf8_validate (u8, u8len, self->params->allow_null_in_utf8);
+ if (u8okay) {
+ // Valid UTF-8, no more checks
+ return true;
+ }
+ // Validation error. It may be invalid UTF-8, or it could be valid UTF-8 with a disallowed null
+ if (!self->params->allow_null_in_utf8) {
+ // We are disallowing null in UTF-8. Check whether it is invalid UTF-8, or is
+ // valid UTF-8 with a null character
+ const bool u8okay_with_null = bson_utf8_validate (u8, u8len, true);
+ if (u8okay_with_null) {
+ // The UTF-8 is valid, but contains a null character.
+ require_with_error (
+ false, offset, BSON_VALIDATE_UTF8_ALLOW_NULL, "UTF-8 string contains a U+0000 (null) character");
+ }
+ }
+ // The UTF-8 is invalid, regardless of whether it contains a null character
+ require_with_error (false, offset, BSON_VALIDATE_UTF8, "Text element is not valid UTF-8");
+}
+
+// Same as `_maybe_validate_u8`, but relies on a null-terminated C string to get the string length
+static bool
+_maybe_validate_utf8_cstring (validator *self, size_t offset, const char *const u8)
+{
+ BSON_ASSERT_PARAM (self);
+ BSON_ASSERT_PARAM (u8);
+ return _maybe_validate_utf8 (self, offset, u8, strlen (u8));
+}
+
+/**
+ * @brief Validate a string-like element (UTF-8, Symbol, or Code)
+ *
+ * This function relies on the representation of the text-like elements within
+ * the iterator struct to reduce code dup around text validation.
+ */
+static bool
+_validate_stringlike_element (validator *self, bson_iter_t const *iter)
+{
+ BSON_ASSERT_PARAM (self);
+ BSON_ASSERT_PARAM (iter);
+ // iter->d1 is the offset to the string header. Subtract 1 to exclude the null terminator
+ uint32_t u8len;
+ memcpy (&u8len, iter->raw + iter->d1, sizeof u8len);
+ u8len = BSON_UINT32_FROM_LE (u8len);
+ u8len -= 1;
+ // iter->d2 is the offset to the first byte of the string
+ const char *u8 = (const char *) iter->raw + iter->d2;
+ return _maybe_validate_utf8 (self, iter->off, u8, u8len);
+}
+
+static bool
+_validate_regex_elem (validator *self, bson_iter_t const *iter)
+{
+ BSON_ASSERT_PARAM (self);
+ BSON_ASSERT_PARAM (iter);
+ BSON_ASSERT (BSON_ITER_HOLDS_REGEX (iter));
+ const char *opts;
+ const char *const rx = bson_iter_regex (iter, &opts);
+ BSON_ASSERT (rx);
+ BSON_ASSERT (opts);
+ return _maybe_validate_utf8_cstring (self, iter->off, rx) //
+ && _maybe_validate_utf8_cstring (self, iter->off, opts);
+}
+
+static bool
+_validate_codewscope_elem (validator *self, bson_iter_t const *iter, int depth)
+{
+ BSON_ASSERT_PARAM (self);
+ BSON_ASSERT_PARAM (iter);
+ BSON_ASSERT (BSON_ITER_HOLDS_CODEWSCOPE (iter));
+ // Extract the code and the scope object
+ uint8_t const *doc;
+ uint32_t doc_len;
+ uint32_t u8len;
+ const char *const u8 = bson_iter_codewscope (iter, &u8len, &doc_len, &doc);
+ bson_t scope;
+ require_with_error (
+ bson_init_static (&scope, doc, doc_len), iter->off, BSON_VALIDATE_CORRUPT, "corrupt scope document");
+
+ // Validate the code string
+ require (_maybe_validate_utf8 (self, iter->off, u8, u8len));
+
+ // Now we validate the scope object.
+ // Don't validate the scope document using the parent parameters, because it should
+ // be treated as an opaque closure of JS variables.
+ validation_params const scope_params = {
+ // JS object keys can contain dots
+ .allow_dot_in_keys = true,
+ // JS object keys can be empty
+ .allow_empty_keys = true,
+ // JS strings can contain null bytes
+ .allow_null_in_utf8 = true,
+ // JS strings need to encode properly
+ .allow_invalid_utf8 = false,
+ // JS allows object keys to have dollars
+ .check_special_dollar_keys = false,
+ };
+ validator scope_validator = {.params = &scope_params};
+ // We could do more validation that the scope keys are valid JS identifiers,
+ // but that would require using a full Unicode database.
+ if (_validate_doc (&scope_validator, &scope, depth)) {
+ // No error
+ return true;
+ }
+ // Validation error. Copy the error message, adding the name of the bad element
+ bson_set_error (&self->error,
+ scope_validator.error.domain,
+ scope_validator.error.code,
+ "Error in scope document for element \"%s\": %s",
+ bson_iter_key (iter),
+ scope_validator.error.message);
+ // Adjust the error offset by the offset of the iterator
+ self->error_offset = scope_validator.error_offset + iter->off;
+ return false;
+}
+
+// Validate an element's key string according to the validation rules
+static bool
+_validate_element_key (validator *self, bson_iter_t const *iter)
+{
+ BSON_ASSERT_PARAM (self);
+ BSON_ASSERT_PARAM (iter);
+
+ const char *const key = bson_iter_key (iter);
+ BSON_ASSERT (key);
+ const size_t key_len = bson_iter_key_len (iter);
+
+ // Check the UTF-8 of the key
+ require (_maybe_validate_utf8 (self, iter->off, key, key_len));
+
+ // Check for special keys
+ if (self->params->check_special_dollar_keys) {
+ // dollar-keys are checked during the startup of _validate_doc. If we get here, there's a problem.
+ require_with_error (
+ key[0] != '$', iter->off, BSON_VALIDATE_DOLLAR_KEYS, "Disallowed '$' in element key: \"%s\"", key);
+ }
+
+ if (!self->params->allow_empty_keys) {
+ require_with_error (key_len != 0, iter->off, BSON_VALIDATE_EMPTY_KEYS, "Element key cannot be an empty string");
+ }
+
+ if (!self->params->allow_dot_in_keys) {
+ require_with_error (
+ !strstr (key, "."), iter->off, BSON_VALIDATE_DOT_KEYS, "Disallowed '.' in element key: \"%s\"", key);
+ }
+
+ return true;
+}
+
+// Extract a document referred-to by the given iterator. It must point to a
+// document or array element. Returns `false` if `bson_init_static` returns false
+static bool
+_get_subdocument (bson_t *subdoc, bson_iter_t const *iter)
+{
+ BSON_ASSERT_PARAM (subdoc);
+ BSON_ASSERT_PARAM (iter);
+ uint32_t len;
+ memcpy (&len, iter->raw + iter->d1, sizeof len);
+ len = BSON_UINT32_FROM_LE (len);
+ uint8_t const *data = (uint8_t const *) iter->raw + iter->d1;
+ return bson_init_static (subdoc, data, len);
+}
+
+// Validate the value of an element, without checking its key
+static bool
+_validate_element_value (validator *self, bson_iter_t const *iter, int depth)
+{
+ BSON_ASSERT_PARAM (self);
+ BSON_ASSERT_PARAM (iter);
+
+ const bson_type_t type = bson_iter_type (iter);
+ switch (type) {
+ default:
+ case BSON_TYPE_EOD:
+ BSON_UNREACHABLE ("Validation execution encountered an element of type 0x0, but this should not happen as tag "
+ "validation is handled before we get to this point.");
+ case BSON_TYPE_DOUBLE:
+ case BSON_TYPE_NULL:
+ case BSON_TYPE_OID:
+ case BSON_TYPE_INT32:
+ case BSON_TYPE_INT64:
+ case BSON_TYPE_MINKEY:
+ case BSON_TYPE_MAXKEY:
+ case BSON_TYPE_TIMESTAMP:
+ case BSON_TYPE_UNDEFINED:
+ case BSON_TYPE_DECIMAL128:
+ case BSON_TYPE_DATE_TIME:
+ case BSON_TYPE_BOOL:
+ // No validation on these simple scalar elements. `bson_iter_next` does validation
+ // on these objects for us.
+ return true;
+ case BSON_TYPE_BINARY:
+ // Note: BSON binary validation is handled by bson_iter_next, which checks the
+ // internal structure properly. If we get here, then the binary data is okay.
+ return true;
+ case BSON_TYPE_DBPOINTER:
+ // DBPointer contains more than just a string, but we only need to validate
+ // the string component, which happens to align with the repr of other stringlike
+ // elements. bson_iter_next will do the validation on the element's size.
+ //! fallthrough
+ case BSON_TYPE_SYMBOL:
+ case BSON_TYPE_CODE:
+ case BSON_TYPE_UTF8:
+ return _validate_stringlike_element (self, iter);
+ case BSON_TYPE_DOCUMENT:
+ case BSON_TYPE_ARRAY: {
+ bson_t doc;
+ require_with_error (_get_subdocument (&doc, iter), iter->off, BSON_VALIDATE_CORRUPT, "corrupt BSON");
+ if (_validate_doc (self, &doc, depth)) {
+ // No error
+ return true;
+ }
+ // Error in subdocument. Adjust the error offset for the current iterator position,
+ // plus the key length, plus 2 for the tag and key's null terminator.
+ self->error_offset += iter->off + bson_iter_key_len (iter) + 2;
+ return false;
+ }
+
+ case BSON_TYPE_REGEX:
+ return _validate_regex_elem (self, iter);
+ case BSON_TYPE_CODEWSCOPE:
+ return _validate_codewscope_elem (self, iter, depth);
+ }
+}
+
+// Validate a single BSON element referred-to by the given iterator
+static bool
+_validate_element (validator *self, bson_iter_t *iter, int depth)
+{
+ BSON_ASSERT_PARAM (self);
+ BSON_ASSERT_PARAM (iter);
+ return _validate_element_key (self, iter) && _validate_element_value (self, iter, depth);
+}
+
+/**
+ * @brief Validate the elements of a document, beginning with the element pointed-to
+ * by the given iterator.
+ */
+static bool
+_validate_remaining_elements (validator *self, bson_iter_t *iter, int depth)
+{
+ BSON_ASSERT_PARAM (self);
+ BSON_ASSERT_PARAM (iter);
+ bool done = false;
+ while (!done) {
+ require (_validate_element (self, iter, depth));
+ require_advance (done, iter);
+ }
+ return true;
+}
+
+// Do validation for a DBRef document, indicated by a leading $ref key
+static bool
+_validate_dbref (validator *self, bson_iter_t *iter, int depth)
+{
+ BSON_ASSERT_PARAM (self);
+ BSON_ASSERT_PARAM (iter);
+
+ // The iterator must be pointing to the initial $ref element
+ BSON_ASSERT (_key_is (iter, "$ref"));
+ // Check that $ref is a UTF-8 element
+ require_with_error (
+ BSON_ITER_HOLDS_UTF8 (iter), iter->off, BSON_VALIDATE_DOLLAR_KEYS, "$ref element must be a UTF-8 element");
+ require (_validate_element_value (self, iter, depth));
+
+ // We require an $id as the next element
+ bool done;
+ require_advance (done, iter);
+ require_with_error (
+ !done && _key_is (iter, "$id"), iter->off, BSON_VALIDATE_DOLLAR_KEYS, "Expected an $id element following $ref");
+ // While $id is typically a OID value, it is not constraint to any specific type, so
+ // we just validate it as an arbitrary value.
+ require (_validate_element_value (self, iter, depth));
+
+ // We should stop, or we should have a $db, or we may have other elements
+ require_advance (done, iter);
+ if (done) {
+ // No more elements. Nothing left to check
+ return true;
+ }
+ // If it's a $db, check that it's a UTF-8 string
+ if (_key_is (iter, "$db")) {
+ require_with_error (BSON_ITER_HOLDS_UTF8 (iter),
+ iter->off,
+ BSON_VALIDATE_DOLLAR_KEYS,
+ "$db element in DBRef must be a UTF-8 element");
+ require (_validate_element_value (self, iter, depth));
+ // Advance past the $db
+ require_advance (done, iter);
+ if (done) {
+ // Nothing left to do
+ return true;
+ }
+ }
+ // All subsequent elements should be validated as normal, and we don't expect
+ // any more $-keys
+ return _validate_remaining_elements (self, iter, depth);
+}
+
+// If we are validating special $-keys, validate a document whose first element is a $-key
+static bool
+_validate_dollar_doc (validator *self, bson_iter_t *iter, int depth)
+{
+ BSON_ASSERT_PARAM (self);
+ BSON_ASSERT_PARAM (iter);
+ if (_key_is (iter, "$ref")) {
+ return _validate_dbref (self, iter, depth);
+ }
+ // Have the element key validator issue an error message about the bad $-key
+ bool okay = _validate_element_key (self, iter);
+ BSON_ASSERT (!okay);
+ return false;
+}
+
+static bool
+_validate_doc (validator *self, const bson_t *bson, int depth)
+{
+ BSON_ASSERT_PARAM (self);
+ BSON_ASSERT_PARAM (bson);
+
+ require_with_error (
+ depth <= BSON_VALIDATION_MAX_NESTING_DEPTH, 0, BSON_VALIDATE_CORRUPT, "BSON document nesting depth is too deep");
+ // We increment the depth here, otherwise we'd have `depth + 1` in several places.
+ ++depth;
+
+ // Initialize an iterator into the document to be validated
+ bson_iter_t iter;
+ require_with_error (
+ bson_iter_init (&iter, bson), 0, BSON_VALIDATE_CORRUPT, "Document header corruption, unable to iterate");
+ bool done;
+ require_advance (done, &iter);
+ if (done) {
+ // Nothing to check (empty doc/array)
+ return true;
+ }
+
+ // Check if the first key starts with a dollar
+ if (self->params->check_special_dollar_keys) {
+ const char *const key = bson_iter_key (&iter);
+ if (key[0] == '$') {
+ return _validate_dollar_doc (self, &iter, depth);
+ }
+ }
+
+ return _validate_remaining_elements (self, &iter, depth);
+}
+
+// This private function is called by `bson_validate_with_error_and_offset`
+bool
+_bson_validate_impl_v2 (const bson_t *bson, bson_validate_flags_t flags, size_t *offset, bson_error_t *error)
+{
+ BSON_ASSERT_PARAM (bson);
+ BSON_ASSERT_PARAM (offset);
+ BSON_ASSERT_PARAM (error);
+
+ // Clear the error
+ *error = (bson_error_t){0};
+
+ // Initialize validation parameters
+ validation_params const params = {
+ .allow_invalid_utf8 = !(flags & BSON_VALIDATE_UTF8),
+ .allow_null_in_utf8 = flags & BSON_VALIDATE_UTF8_ALLOW_NULL,
+ .check_special_dollar_keys = (flags & BSON_VALIDATE_DOLLAR_KEYS),
+ .allow_dot_in_keys = !(flags & BSON_VALIDATE_DOT_KEYS),
+ .allow_empty_keys = !(flags & BSON_VALIDATE_EMPTY_KEYS),
+ };
+
+ // Start the validator on the root document
+ validator v = {.params = &params};
+ bool okay = _validate_doc (&v, bson, 0);
+ *offset = v.error_offset;
+ *error = v.error;
+ BSON_ASSERT (okay == (v.error.code == 0) &&
+ "Validation routine should return `false` if-and-only-if it sets an error code");
+ return okay;
+}
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/jsonsl/jsonsl.c b/mongodb-2.1.1/src/libmongoc/src/libbson/src/jsonsl/jsonsl.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/jsonsl/jsonsl.c
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/jsonsl/jsonsl.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libbson/src/jsonsl/jsonsl.h b/mongodb-2.1.1/src/libmongoc/src/libbson/src/jsonsl/jsonsl.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libbson/src/jsonsl/jsonsl.h
rename to mongodb-2.1.1/src/libmongoc/src/libbson/src/jsonsl/jsonsl.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-azure.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-azure.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-azure.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-azure.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-azure.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-azure.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-azure.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-azure.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-integer.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-integer.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-integer.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-integer.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-nsinfo.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-nsinfo.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-nsinfo.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-nsinfo.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-nsinfo.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-nsinfo.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-nsinfo.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-nsinfo.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-rpc.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-rpc.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-rpc.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-rpc.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-rpc.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-rpc.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-rpc.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-rpc.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-time.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-time.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mcd-time.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mcd-time.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-aggregate-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-aggregate-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-aggregate-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-aggregate-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-aggregate.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-aggregate.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-aggregate.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-aggregate.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-array-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-array-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-array-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-array-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-array.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-array.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-array.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-array.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-cmd-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-cmd-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-cmd-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-cmd-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-cmd.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-cmd.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-cmd.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-cmd.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-async.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-buffer-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-buffer-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-buffer-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-buffer-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-buffer.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-buffer.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-buffer.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-buffer.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulkwrite.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulkwrite.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulkwrite.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulkwrite.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulkwrite.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulkwrite.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulkwrite.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulkwrite.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.c
similarity index 99%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.c
index 0e4a0255..db829c36 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.c
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.c
@@ -1,3044 +1,3035 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _WIN32
#include <sys/wait.h>
#include <signal.h>
#endif
#include <common-bson-dsl-private.h>
#include <mongoc/mongoc.h>
#include <mongoc/mongoc-client-private.h>
#include <mongoc/mongoc-client-side-encryption-private.h>
+#include <mongoc/mongoc-error-private.h>
#include <mongoc/mongoc-host-list-private.h>
#include <mongoc/mongoc-stream-private.h>
#include <mongoc/mongoc-topology-private.h>
#include <mongoc/mongoc-trace-private.h>
#include <mongoc/mongoc-database-private.h>
#include <mongoc/mongoc-util-private.h>
#include <common-string-private.h>
#include <common-atomic-private.h>
/*--------------------------------------------------------------------------
* Auto Encryption options.
*--------------------------------------------------------------------------
*/
struct _mongoc_auto_encryption_opts_t {
/* keyvault_client and keyvault_client_pool are not owned and must outlive
* auto encrypted client/pool. */
mongoc_client_t *keyvault_client;
mongoc_client_pool_t *keyvault_client_pool;
char *keyvault_db;
char *keyvault_coll;
bson_t *kms_providers;
bson_t *tls_opts;
bson_t *schema_map;
bson_t *encrypted_fields_map;
bool bypass_auto_encryption;
bool bypass_query_analysis;
mc_kms_credentials_callback creds_cb;
bson_t *extra;
mcd_optional_u64_t cache_expiration_ms;
};
static void
_set_creds_callback (mc_kms_credentials_callback *cb, mongoc_kms_credentials_provider_callback_fn fn, void *userdata)
{
BSON_ASSERT (cb);
cb->fn = fn;
cb->userdata = userdata;
}
mongoc_auto_encryption_opts_t *
mongoc_auto_encryption_opts_new (void)
{
return bson_malloc0 (sizeof (mongoc_auto_encryption_opts_t));
}
void
mongoc_auto_encryption_opts_destroy (mongoc_auto_encryption_opts_t *opts)
{
if (!opts) {
return;
}
bson_destroy (opts->extra);
bson_destroy (opts->kms_providers);
bson_destroy (opts->schema_map);
bson_destroy (opts->encrypted_fields_map);
bson_free (opts->keyvault_db);
bson_free (opts->keyvault_coll);
bson_destroy (opts->tls_opts);
bson_free (opts);
}
void
mongoc_auto_encryption_opts_set_keyvault_client (mongoc_auto_encryption_opts_t *opts, mongoc_client_t *client)
{
if (!opts) {
return;
}
/* Does not own. */
opts->keyvault_client = client;
}
void
mongoc_auto_encryption_opts_set_keyvault_client_pool (mongoc_auto_encryption_opts_t *opts, mongoc_client_pool_t *pool)
{
if (!opts) {
return;
}
/* Does not own. */
opts->keyvault_client_pool = pool;
}
void
mongoc_auto_encryption_opts_set_keyvault_namespace (mongoc_auto_encryption_opts_t *opts,
const char *db,
const char *coll)
{
if (!opts) {
return;
}
bson_free (opts->keyvault_db);
opts->keyvault_db = NULL;
opts->keyvault_db = bson_strdup (db);
bson_free (opts->keyvault_coll);
opts->keyvault_coll = NULL;
opts->keyvault_coll = bson_strdup (coll);
}
void
mongoc_auto_encryption_opts_set_kms_providers (mongoc_auto_encryption_opts_t *opts, const bson_t *providers)
{
if (!opts) {
return;
}
bson_destroy (opts->kms_providers);
opts->kms_providers = NULL;
if (providers) {
opts->kms_providers = bson_copy (providers);
}
}
void
mongoc_auto_encryption_opts_set_key_expiration (mongoc_auto_encryption_opts_t *opts, uint64_t expiration)
{
if (!opts) {
return;
}
opts->cache_expiration_ms.set = true;
opts->cache_expiration_ms.value = expiration;
}
/* _bson_copy_or_null returns a copy of @bson or NULL if @bson is NULL */
static bson_t *
_bson_copy_or_null (const bson_t *bson)
{
if (bson) {
return bson_copy (bson);
}
return NULL;
}
void
mongoc_auto_encryption_opts_set_tls_opts (mongoc_auto_encryption_opts_t *opts, const bson_t *tls_opts)
{
if (!opts) {
return;
}
bson_destroy (opts->tls_opts);
opts->tls_opts = _bson_copy_or_null (tls_opts);
}
void
mongoc_auto_encryption_opts_set_schema_map (mongoc_auto_encryption_opts_t *opts, const bson_t *schema_map)
{
if (!opts) {
return;
}
bson_destroy (opts->schema_map);
opts->schema_map = NULL;
if (schema_map) {
opts->schema_map = bson_copy (schema_map);
}
}
void
mongoc_auto_encryption_opts_set_encrypted_fields_map (mongoc_auto_encryption_opts_t *opts,
const bson_t *encrypted_fields_map)
{
if (!opts) {
return;
}
bson_destroy (opts->encrypted_fields_map);
opts->encrypted_fields_map = NULL;
if (encrypted_fields_map) {
opts->encrypted_fields_map = bson_copy (encrypted_fields_map);
}
}
void
mongoc_auto_encryption_opts_set_bypass_auto_encryption (mongoc_auto_encryption_opts_t *opts,
bool bypass_auto_encryption)
{
if (!opts) {
return;
}
opts->bypass_auto_encryption = bypass_auto_encryption;
}
void
mongoc_auto_encryption_opts_set_bypass_query_analysis (mongoc_auto_encryption_opts_t *opts, bool bypass_query_analysis)
{
if (!opts) {
return;
}
opts->bypass_query_analysis = bypass_query_analysis;
}
void
mongoc_auto_encryption_opts_set_extra (mongoc_auto_encryption_opts_t *opts, const bson_t *extra)
{
if (!opts) {
return;
}
bson_destroy (opts->extra);
opts->extra = NULL;
if (extra) {
opts->extra = bson_copy (extra);
}
}
void
mongoc_auto_encryption_opts_set_kms_credential_provider_callback (mongoc_auto_encryption_opts_t *opts,
mongoc_kms_credentials_provider_callback_fn fn,
void *userdata)
{
_set_creds_callback (&opts->creds_cb, fn, userdata);
}
/*--------------------------------------------------------------------------
* Client Encryption options.
*--------------------------------------------------------------------------
*/
struct _mongoc_client_encryption_opts_t {
mongoc_client_t *keyvault_client;
char *keyvault_db;
char *keyvault_coll;
bson_t *kms_providers;
bson_t *tls_opts;
mc_kms_credentials_callback creds_cb;
mcd_optional_u64_t cache_expiration_ms;
};
mongoc_client_encryption_opts_t *
mongoc_client_encryption_opts_new (void)
{
return bson_malloc0 (sizeof (mongoc_client_encryption_opts_t));
}
void
mongoc_client_encryption_opts_destroy (mongoc_client_encryption_opts_t *opts)
{
if (!opts) {
return;
}
_set_creds_callback (&opts->creds_cb, NULL, NULL);
bson_free (opts->keyvault_db);
bson_free (opts->keyvault_coll);
bson_destroy (opts->kms_providers);
bson_destroy (opts->tls_opts);
bson_free (opts);
}
void
mongoc_client_encryption_opts_set_keyvault_client (mongoc_client_encryption_opts_t *opts,
mongoc_client_t *keyvault_client)
{
if (!opts) {
return;
}
opts->keyvault_client = keyvault_client;
}
void
mongoc_client_encryption_opts_set_keyvault_namespace (mongoc_client_encryption_opts_t *opts,
const char *db,
const char *coll)
{
if (!opts) {
return;
}
bson_free (opts->keyvault_db);
opts->keyvault_db = NULL;
opts->keyvault_db = bson_strdup (db);
bson_free (opts->keyvault_coll);
opts->keyvault_coll = NULL;
opts->keyvault_coll = bson_strdup (coll);
}
void
mongoc_client_encryption_opts_set_kms_providers (mongoc_client_encryption_opts_t *opts, const bson_t *kms_providers)
{
if (!opts) {
return;
}
bson_destroy (opts->kms_providers);
opts->kms_providers = NULL;
if (kms_providers) {
opts->kms_providers = bson_copy (kms_providers);
}
}
void
mongoc_client_encryption_opts_set_tls_opts (mongoc_client_encryption_opts_t *opts, const bson_t *tls_opts)
{
if (!opts) {
return;
}
bson_destroy (opts->tls_opts);
opts->tls_opts = _bson_copy_or_null (tls_opts);
}
void
mongoc_client_encryption_opts_set_kms_credential_provider_callback (mongoc_client_encryption_opts_t *opts,
mongoc_kms_credentials_provider_callback_fn fn,
void *userdata)
{
BSON_ASSERT_PARAM (opts);
opts->creds_cb.fn = fn;
opts->creds_cb.userdata = userdata;
}
void
mongoc_client_encryption_opts_set_key_expiration (mongoc_client_encryption_opts_t *opts, uint64_t cache_expiration_ms)
{
BSON_ASSERT_PARAM (opts);
opts->cache_expiration_ms.set = true;
opts->cache_expiration_ms.value = cache_expiration_ms;
}
/*--------------------------------------------------------------------------
* Data key options.
*--------------------------------------------------------------------------
*/
struct _mongoc_client_encryption_datakey_opts_t {
bson_t *masterkey;
char **keyaltnames;
uint32_t keyaltnames_count;
uint8_t *keymaterial;
uint32_t keymaterial_len;
};
mongoc_client_encryption_datakey_opts_t *
mongoc_client_encryption_datakey_opts_new (void)
{
return bson_malloc0 (sizeof (mongoc_client_encryption_datakey_opts_t));
}
static void
_clear_datakey_keyaltnames (mongoc_client_encryption_datakey_opts_t *opts)
{
if (opts->keyaltnames) {
for (uint32_t i = 0u; i < opts->keyaltnames_count; i++) {
bson_free (opts->keyaltnames[i]);
}
bson_free (opts->keyaltnames);
opts->keyaltnames = NULL;
opts->keyaltnames_count = 0;
}
}
void
mongoc_client_encryption_datakey_opts_destroy (mongoc_client_encryption_datakey_opts_t *opts)
{
if (!opts) {
return;
}
bson_destroy (opts->masterkey);
_clear_datakey_keyaltnames (opts);
bson_free (opts->keymaterial);
bson_free (opts);
}
void
mongoc_client_encryption_datakey_opts_set_masterkey (mongoc_client_encryption_datakey_opts_t *opts,
const bson_t *masterkey)
{
if (!opts) {
return;
}
bson_destroy (opts->masterkey);
opts->masterkey = NULL;
if (masterkey) {
opts->masterkey = bson_copy (masterkey);
}
}
void
mongoc_client_encryption_datakey_opts_set_keyaltnames (mongoc_client_encryption_datakey_opts_t *opts,
char **keyaltnames,
uint32_t keyaltnames_count)
{
if (!opts) {
return;
}
/* Free all first (if any have been set before). */
_clear_datakey_keyaltnames (opts);
BSON_ASSERT (!opts->keyaltnames);
if (keyaltnames_count) {
opts->keyaltnames = bson_malloc (sizeof (char *) * keyaltnames_count);
for (uint32_t i = 0u; i < keyaltnames_count; i++) {
opts->keyaltnames[i] = bson_strdup (keyaltnames[i]);
}
opts->keyaltnames_count = keyaltnames_count;
}
}
void
mongoc_client_encryption_datakey_opts_set_keymaterial (mongoc_client_encryption_datakey_opts_t *opts,
const uint8_t *data,
uint32_t len)
{
if (!opts) {
return;
}
if (opts->keymaterial) {
bson_free (opts->keymaterial);
}
opts->keymaterial = bson_malloc (len);
memcpy (opts->keymaterial, data, len);
opts->keymaterial_len = len;
}
/*--------------------------------------------------------------------------
* Explicit Encryption options.
*--------------------------------------------------------------------------
*/
struct _mongoc_client_encryption_encrypt_range_opts_t {
struct {
bson_value_t value;
bool set;
} min;
struct {
bson_value_t value;
bool set;
} max;
struct {
int32_t value;
bool set;
} trim_factor;
struct {
int64_t value;
bool set;
} sparsity;
struct {
int32_t value;
bool set;
} precision;
};
struct _mongoc_client_encryption_encrypt_opts_t {
bson_value_t keyid;
char *algorithm;
char *keyaltname;
struct {
int64_t value;
bool set;
} contention_factor;
char *query_type;
mongoc_client_encryption_encrypt_range_opts_t *range_opts;
};
mongoc_client_encryption_encrypt_opts_t *
mongoc_client_encryption_encrypt_opts_new (void)
{
return bson_malloc0 (sizeof (mongoc_client_encryption_encrypt_opts_t));
}
void
mongoc_client_encryption_encrypt_range_opts_destroy (mongoc_client_encryption_encrypt_range_opts_t *range_opts)
{
if (!range_opts) {
return;
}
if (range_opts->min.set) {
bson_value_destroy (&range_opts->min.value);
}
if (range_opts->max.set) {
bson_value_destroy (&range_opts->max.value);
}
bson_free (range_opts);
}
void
mongoc_client_encryption_encrypt_opts_destroy (mongoc_client_encryption_encrypt_opts_t *opts)
{
if (!opts) {
return;
}
mongoc_client_encryption_encrypt_range_opts_destroy (opts->range_opts);
bson_value_destroy (&opts->keyid);
bson_free (opts->algorithm);
bson_free (opts->keyaltname);
bson_free (opts->query_type);
bson_free (opts);
}
void
mongoc_client_encryption_encrypt_opts_set_keyid (mongoc_client_encryption_encrypt_opts_t *opts,
const bson_value_t *keyid)
{
if (!opts) {
return;
}
bson_value_destroy (&opts->keyid);
memset (&opts->keyid, 0, sizeof (opts->keyid));
if (keyid) {
bson_value_copy (keyid, &opts->keyid);
}
}
void
mongoc_client_encryption_encrypt_opts_set_keyaltname (mongoc_client_encryption_encrypt_opts_t *opts,
const char *keyaltname)
{
if (!opts) {
return;
}
bson_free (opts->keyaltname);
opts->keyaltname = NULL;
opts->keyaltname = bson_strdup (keyaltname);
}
void
mongoc_client_encryption_encrypt_opts_set_algorithm (mongoc_client_encryption_encrypt_opts_t *opts,
const char *algorithm)
{
if (!opts) {
return;
}
bson_free (opts->algorithm);
opts->algorithm = NULL;
opts->algorithm = bson_strdup (algorithm);
}
void
mongoc_client_encryption_encrypt_opts_set_contention_factor (mongoc_client_encryption_encrypt_opts_t *opts,
int64_t contention_factor)
{
if (!opts) {
return;
}
opts->contention_factor.value = contention_factor;
opts->contention_factor.set = true;
}
void
mongoc_client_encryption_encrypt_opts_set_query_type (mongoc_client_encryption_encrypt_opts_t *opts,
const char *query_type)
{
if (!opts) {
return;
}
bson_free (opts->query_type);
opts->query_type = query_type ? bson_strdup (query_type) : NULL;
}
/*--------------------------------------------------------------------------
* Explicit Encryption Range Options
*--------------------------------------------------------------------------
*/
mongoc_client_encryption_encrypt_range_opts_t *
mongoc_client_encryption_encrypt_range_opts_new (void)
{
return bson_malloc0 (sizeof (mongoc_client_encryption_encrypt_range_opts_t));
}
void
mongoc_client_encryption_encrypt_range_opts_set_trim_factor (mongoc_client_encryption_encrypt_range_opts_t *range_opts,
int32_t trim_factor)
{
BSON_ASSERT_PARAM (range_opts);
range_opts->trim_factor.set = true;
range_opts->trim_factor.value = trim_factor;
}
void
mongoc_client_encryption_encrypt_range_opts_set_sparsity (mongoc_client_encryption_encrypt_range_opts_t *range_opts,
int64_t sparsity)
{
BSON_ASSERT_PARAM (range_opts);
range_opts->sparsity.set = true;
range_opts->sparsity.value = sparsity;
}
void
mongoc_client_encryption_encrypt_range_opts_set_min (mongoc_client_encryption_encrypt_range_opts_t *range_opts,
const bson_value_t *min)
{
BSON_ASSERT_PARAM (range_opts);
BSON_ASSERT_PARAM (min);
if (range_opts->min.set) {
bson_value_destroy (&range_opts->min.value);
}
range_opts->min.set = true;
bson_value_copy (min, &range_opts->min.value);
}
void
mongoc_client_encryption_encrypt_range_opts_set_max (mongoc_client_encryption_encrypt_range_opts_t *range_opts,
const bson_value_t *max)
{
BSON_ASSERT_PARAM (range_opts);
BSON_ASSERT_PARAM (max);
if (range_opts->max.set) {
bson_value_destroy (&range_opts->max.value);
}
range_opts->max.set = true;
bson_value_copy (max, &range_opts->max.value);
}
void
mongoc_client_encryption_encrypt_range_opts_set_precision (mongoc_client_encryption_encrypt_range_opts_t *range_opts,
int32_t precision)
{
BSON_ASSERT_PARAM (range_opts);
range_opts->precision.set = true;
range_opts->precision.value = precision;
}
static mongoc_client_encryption_encrypt_range_opts_t *
copy_range_opts (const mongoc_client_encryption_encrypt_range_opts_t *opts)
{
BSON_ASSERT_PARAM (opts);
mongoc_client_encryption_encrypt_range_opts_t *opts_new = mongoc_client_encryption_encrypt_range_opts_new ();
if (opts->min.set) {
bson_value_copy (&opts->min.value, &opts_new->min.value);
opts_new->min.set = true;
}
if (opts->max.set) {
bson_value_copy (&opts->max.value, &opts_new->max.value);
opts_new->max.set = true;
}
if (opts->precision.set) {
opts_new->precision.value = opts->precision.value;
opts_new->precision.set = true;
}
opts_new->sparsity = opts->sparsity;
opts_new->trim_factor = opts->trim_factor;
return opts_new;
}
void
mongoc_client_encryption_encrypt_opts_set_range_opts (mongoc_client_encryption_encrypt_opts_t *opts,
const mongoc_client_encryption_encrypt_range_opts_t *range_opts)
{
BSON_ASSERT_PARAM (opts);
if (opts->range_opts) {
mongoc_client_encryption_encrypt_range_opts_destroy (opts->range_opts);
opts->range_opts = NULL;
}
opts->range_opts = copy_range_opts (range_opts);
}
/*--------------------------------------------------------------------------
* RewrapManyDataKeyResult.
*--------------------------------------------------------------------------
*/
struct _mongoc_client_encryption_rewrap_many_datakey_result_t {
bson_t bulk_write_result;
};
mongoc_client_encryption_rewrap_many_datakey_result_t *
mongoc_client_encryption_rewrap_many_datakey_result_new (void)
{
mongoc_client_encryption_rewrap_many_datakey_result_t *const res =
BSON_ALIGNED_ALLOC0 (mongoc_client_encryption_rewrap_many_datakey_result_t);
bson_init (&res->bulk_write_result);
return res;
}
void
mongoc_client_encryption_rewrap_many_datakey_result_destroy (
mongoc_client_encryption_rewrap_many_datakey_result_t *result)
{
if (!result) {
return;
}
bson_destroy (&result->bulk_write_result);
bson_free (result);
}
const bson_t *
mongoc_client_encryption_rewrap_many_datakey_result_get_bulk_write_result (
mongoc_client_encryption_rewrap_many_datakey_result_t *result)
{
if (!result) {
return NULL;
}
/* bulkWriteResult may be empty if no result of a bulk write operation has
* been assigned to it. Treat as equivalent to an unset optional state. */
if (bson_empty (&result->bulk_write_result)) {
return NULL;
}
return &result->bulk_write_result;
}
#ifndef MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION
static bool
_disabled_error (bson_error_t *error)
{
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"libmongoc is not built with support for Client-Side Field "
"Level Encryption. Configure with "
"ENABLE_CLIENT_SIDE_ENCRYPTION=ON.");
return false;
}
bool
_mongoc_cse_auto_encrypt (mongoc_client_t *client,
const mongoc_cmd_t *cmd,
mongoc_cmd_t *encrypted_cmd,
bson_t *encrypted,
bson_error_t *error)
{
BSON_UNUSED (client);
BSON_UNUSED (cmd);
BSON_UNUSED (encrypted_cmd);
bson_init (encrypted);
return _disabled_error (error);
}
bool
_mongoc_cse_auto_decrypt (
mongoc_client_t *client, const char *db_name, const bson_t *reply, bson_t *decrypted, bson_error_t *error)
{
BSON_UNUSED (client);
BSON_UNUSED (db_name);
BSON_UNUSED (reply);
bson_init (decrypted);
return _disabled_error (error);
}
bool
_mongoc_cse_client_enable_auto_encryption (mongoc_client_t *client,
mongoc_auto_encryption_opts_t *opts /* may be NULL */,
bson_error_t *error)
{
BSON_UNUSED (client);
BSON_UNUSED (opts);
return _disabled_error (error);
}
bool
_mongoc_cse_client_pool_enable_auto_encryption (mongoc_topology_t *topology,
mongoc_auto_encryption_opts_t *opts /* may be NULL */,
bson_error_t *error)
{
BSON_UNUSED (topology);
BSON_UNUSED (opts);
return _disabled_error (error);
}
bool
mongoc_client_encryption_create_datakey (mongoc_client_encryption_t *client_encryption,
const char *kms_provider,
const mongoc_client_encryption_datakey_opts_t *opts,
bson_value_t *keyid,
bson_error_t *error)
{
BSON_UNUSED (client_encryption);
BSON_UNUSED (kms_provider);
BSON_UNUSED (opts);
if (keyid) {
memset (keyid, 0, sizeof (*keyid));
}
return _disabled_error (error);
}
bool
mongoc_client_encryption_rewrap_many_datakey (mongoc_client_encryption_t *client_encryption,
const bson_t *filter,
const char *provider,
const bson_t *master_key,
mongoc_client_encryption_rewrap_many_datakey_result_t *result,
bson_error_t *error)
{
BSON_UNUSED (client_encryption);
BSON_UNUSED (filter);
BSON_UNUSED (provider);
BSON_UNUSED (master_key);
BSON_UNUSED (result);
return _disabled_error (error);
}
bool
mongoc_client_encryption_delete_key (mongoc_client_encryption_t *client_encryption,
const bson_value_t *keyid,
bson_t *reply,
bson_error_t *error)
{
BSON_UNUSED (client_encryption);
BSON_UNUSED (keyid);
_mongoc_bson_init_if_set (reply);
return _disabled_error (error);
}
bool
mongoc_client_encryption_get_key (mongoc_client_encryption_t *client_encryption,
const bson_value_t *keyid,
bson_t *key_doc,
bson_error_t *error)
{
BSON_UNUSED (client_encryption);
BSON_UNUSED (keyid);
_mongoc_bson_init_if_set (key_doc);
return _disabled_error (error);
}
mongoc_cursor_t *
mongoc_client_encryption_get_keys (mongoc_client_encryption_t *client_encryption, bson_error_t *error)
{
BSON_UNUSED (client_encryption);
_disabled_error (error);
return NULL;
}
bool
mongoc_client_encryption_add_key_alt_name (mongoc_client_encryption_t *client_encryption,
const bson_value_t *keyid,
const char *keyaltname,
bson_t *key_doc,
bson_error_t *error)
{
BSON_UNUSED (client_encryption);
BSON_UNUSED (keyid);
BSON_UNUSED (keyaltname);
_mongoc_bson_init_if_set (key_doc);
return _disabled_error (error);
}
bool
mongoc_client_encryption_remove_key_alt_name (mongoc_client_encryption_t *client_encryption,
const bson_value_t *keyid,
const char *keyaltname,
bson_t *key_doc,
bson_error_t *error)
{
BSON_UNUSED (client_encryption);
BSON_UNUSED (keyid);
BSON_UNUSED (keyaltname);
_mongoc_bson_init_if_set (key_doc);
return _disabled_error (error);
}
bool
mongoc_client_encryption_get_key_by_alt_name (mongoc_client_encryption_t *client_encryption,
const char *keyaltname,
bson_t *key_doc,
bson_error_t *error)
{
BSON_UNUSED (client_encryption);
BSON_UNUSED (keyaltname);
_mongoc_bson_init_if_set (key_doc);
return _disabled_error (error);
}
mongoc_client_encryption_t *
mongoc_client_encryption_new (mongoc_client_encryption_opts_t *opts, bson_error_t *error)
{
BSON_UNUSED (opts);
_disabled_error (error);
return NULL;
}
void
mongoc_client_encryption_destroy (mongoc_client_encryption_t *client_encryption)
{
BSON_UNUSED (client_encryption);
}
bool
mongoc_client_encryption_encrypt (mongoc_client_encryption_t *client_encryption,
const bson_value_t *value,
mongoc_client_encryption_encrypt_opts_t *opts,
bson_value_t *ciphertext,
bson_error_t *error)
{
BSON_UNUSED (client_encryption);
BSON_UNUSED (value);
BSON_UNUSED (opts);
if (ciphertext) {
memset (ciphertext, 0, sizeof (*ciphertext));
}
return _disabled_error (error);
}
bool
mongoc_client_encryption_encrypt_expression (mongoc_client_encryption_t *client_encryption,
const bson_t *expr,
mongoc_client_encryption_encrypt_opts_t *opts,
bson_t *expr_encrypted,
bson_error_t *error)
{
BSON_ASSERT_PARAM (client_encryption);
BSON_ASSERT_PARAM (expr);
BSON_ASSERT_PARAM (opts);
BSON_ASSERT_PARAM (expr_encrypted);
BSON_OPTIONAL_PARAM (error);
bson_init (expr_encrypted);
return _disabled_error (error);
}
bool
mongoc_client_encryption_decrypt (mongoc_client_encryption_t *client_encryption,
const bson_value_t *ciphertext,
bson_value_t *value,
bson_error_t *error)
{
BSON_UNUSED (client_encryption);
BSON_UNUSED (ciphertext);
if (value) {
memset (value, 0, sizeof (*value));
}
return _disabled_error (error);
}
bool
_mongoc_cse_is_enabled (mongoc_client_t *client)
{
BSON_UNUSED (client);
return false;
}
mongoc_collection_t *
mongoc_client_encryption_create_encrypted_collection (mongoc_client_encryption_t *enc,
struct _mongoc_database_t *database,
const char *name,
const bson_t *in_options,
bson_t *opt_out_options,
const char *const kms_provider,
const bson_t *opt_masterkey,
bson_error_t *error)
{
BSON_UNUSED (enc);
BSON_UNUSED (database);
BSON_UNUSED (name);
BSON_UNUSED (in_options);
BSON_UNUSED (opt_out_options);
BSON_UNUSED (kms_provider);
BSON_UNUSED (opt_masterkey);
_disabled_error (error);
return NULL;
}
#else
/* Appends the range opts set by the user into a bson_t that can be passed to
* libmongocrypt.
*/
static void
append_bson_range_opts (bson_t *bson_range_opts, const mongoc_client_encryption_encrypt_opts_t *opts)
{
BSON_ASSERT_PARAM (bson_range_opts);
BSON_ASSERT_PARAM (opts);
if (opts->range_opts->min.set) {
BSON_ASSERT (BSON_APPEND_VALUE (bson_range_opts, "min", &opts->range_opts->min.value));
}
if (opts->range_opts->max.set) {
BSON_ASSERT (BSON_APPEND_VALUE (bson_range_opts, "max", &opts->range_opts->max.value));
}
if (opts->range_opts->precision.set) {
BSON_ASSERT (BSON_APPEND_INT32 (bson_range_opts, "precision", opts->range_opts->precision.value));
}
if (opts->range_opts->sparsity.set) {
BSON_ASSERT (BSON_APPEND_INT64 (bson_range_opts, "sparsity", opts->range_opts->sparsity.value));
}
if (opts->range_opts->trim_factor.set) {
BSON_ASSERT (BSON_APPEND_INT32 (bson_range_opts, "trimFactor", opts->range_opts->trim_factor.value));
}
}
/*--------------------------------------------------------------------------
*
* _prep_for_auto_encryption --
* If @cmd contains a type=1 payload (document sequence), convert it into
* a type=0 payload (array payload). See OP_MSG spec for details.
* Place the command BSON that should be encrypted into @out.
*
* Post-conditions:
* @out is initialized and set to the full payload. If @cmd did not include
* a type=1 payload, @out is statically initialized. Caller must not modify
* @out after, but must call bson_destroy.
*
* --------------------------------------------------------------------------
*/
static void
_prep_for_auto_encryption (const mongoc_cmd_t *cmd, bson_t *out)
{
// If there are no document sequences (OP_MSG Section with payloadType=1), return the command unchanged.
if (cmd->payloads_count == 0) {
BSON_ASSERT (bson_init_static (out, bson_get_data (cmd->command), cmd->command->len));
return;
}
/* Otherwise, append the type=1 payload as an array. */
bson_copy_to (cmd->command, out);
_mongoc_cmd_append_payload_as_array (cmd, out);
}
/* Return the mongocryptd client to use on a client with automatic encryption
* enabled.
* If @client_encrypted is single-threaded, use the client to mongocryptd.
* If @client_encrypted is multi-threaded, use the client pool to mongocryptd.
*/
mongoc_client_t *
_get_mongocryptd_client (mongoc_client_t *client_encrypted)
{
BSON_ASSERT_PARAM (client_encrypted);
if (client_encrypted->topology->single_threaded) {
return client_encrypted->topology->mongocryptd_client;
}
return mongoc_client_pool_pop (client_encrypted->topology->mongocryptd_client_pool);
}
void
_release_mongocryptd_client (mongoc_client_t *client_encrypted, mongoc_client_t *mongocryptd_client)
{
BSON_ASSERT_PARAM (client_encrypted);
if (!mongocryptd_client) {
return;
}
if (!client_encrypted->topology->single_threaded) {
mongoc_client_pool_push (client_encrypted->topology->mongocryptd_client_pool, mongocryptd_client);
}
}
/* Return the key vault collection to use on a client with automatic encryption
* enabled.
* If no custom key vault client/pool is set, create a collection from the
* @client_encrypted itself.
* If @client_encrypted is single-threaded, use the client to mongocryptd to
* create the collection.
* If @client_encrypted is multi-threaded, use the client pool to mongocryptd
* to create the collection.
*/
mongoc_collection_t *
_get_keyvault_coll (mongoc_client_t *client_encrypted)
{
BSON_ASSERT_PARAM (client_encrypted);
mongoc_write_concern_t *const wc = mongoc_write_concern_new ();
mongoc_read_concern_t *const rc = mongoc_read_concern_new ();
mongoc_client_t *keyvault_client;
const char *db;
const char *coll;
mongoc_collection_t *res = NULL;
db = client_encrypted->topology->keyvault_db;
coll = client_encrypted->topology->keyvault_coll;
if (client_encrypted->topology->single_threaded) {
if (client_encrypted->topology->keyvault_client) {
keyvault_client = client_encrypted->topology->keyvault_client;
} else {
keyvault_client = client_encrypted;
}
} else {
if (client_encrypted->topology->keyvault_client_pool) {
keyvault_client = mongoc_client_pool_pop (client_encrypted->topology->keyvault_client_pool);
} else {
keyvault_client = client_encrypted;
}
}
res = mongoc_client_get_collection (keyvault_client, db, coll);
mongoc_write_concern_set_w (wc, MONGOC_WRITE_CONCERN_W_MAJORITY);
mongoc_collection_set_write_concern (res, wc);
mongoc_read_concern_set_level (rc, MONGOC_READ_CONCERN_LEVEL_MAJORITY);
mongoc_collection_set_read_concern (res, rc);
mongoc_write_concern_destroy (wc);
mongoc_read_concern_destroy (rc);
return res;
}
void
_release_keyvault_coll (mongoc_client_t *client_encrypted, mongoc_collection_t *keyvault_coll)
{
mongoc_client_t *keyvault_client;
BSON_ASSERT_PARAM (client_encrypted);
if (!keyvault_coll) {
return;
}
keyvault_client = keyvault_coll->client;
mongoc_collection_destroy (keyvault_coll);
if (!client_encrypted->topology->single_threaded && client_encrypted->topology->keyvault_client_pool) {
mongoc_client_pool_push (client_encrypted->topology->keyvault_client_pool, keyvault_client);
}
}
static bool
_spawn_mongocryptd (const char *mongocryptd_spawn_path, const bson_t *mongocryptd_spawn_args, bson_error_t *error);
/*--------------------------------------------------------------------------
*
* _mongoc_cse_auto_encrypt --
*
* Perform automatic encryption if enabled.
*
* Return:
* True on success, false on error.
*
* Pre-conditions:
* CSE is enabled on client or its associated client pool.
*
* Post-conditions:
* If return false, @error is set. @encrypted is always initialized.
* @encrypted_cmd is set to the mongoc_cmd_t to send, which may refer
* to @encrypted.
* If automatic encryption was bypassed, @encrypted is set to an empty
* document, but @encrypted_cmd is a copy of @cmd. Caller must always
* bson_destroy @encrypted.
*
*--------------------------------------------------------------------------
*/
bool
_mongoc_cse_auto_encrypt (mongoc_client_t *client_encrypted,
const mongoc_cmd_t *cmd,
mongoc_cmd_t *encrypted_cmd,
bson_t *encrypted,
bson_error_t *error)
{
bool ret = false;
bson_t cmd_bson = BSON_INITIALIZER;
bson_t *result = NULL;
bson_iter_t iter;
mongoc_client_t *mongocryptd_client = NULL;
mongoc_collection_t *keyvault_coll = NULL;
bool retried = false;
ENTRY;
BSON_ASSERT_PARAM (client_encrypted);
bson_init (encrypted);
if (client_encrypted->topology->bypass_auto_encryption) {
memcpy (encrypted_cmd, cmd, sizeof (mongoc_cmd_t));
bson_destroy (&cmd_bson);
RETURN (true);
}
if (cmd->server_stream->sd->max_wire_version < WIRE_VERSION_CSE) {
bson_set_error (error,
MONGOC_ERROR_PROTOCOL,
MONGOC_ERROR_PROTOCOL_BAD_WIRE_VERSION,
"%s",
"Auto-encryption requires a minimum MongoDB version of 4.2");
GOTO (fail);
}
/* Construct the command we're sending to libmongocrypt. If cmd includes a
* type 1 payload, convert it to a type 0 payload. */
bson_destroy (&cmd_bson);
_prep_for_auto_encryption (cmd, &cmd_bson);
keyvault_coll = _get_keyvault_coll (client_encrypted);
mongocryptd_client = _get_mongocryptd_client (client_encrypted);
retry:
bson_destroy (encrypted);
if (!_mongoc_crypt_auto_encrypt (client_encrypted->topology->crypt,
keyvault_coll,
mongocryptd_client,
client_encrypted,
cmd->db_name,
&cmd_bson,
encrypted,
error)) {
/* From the Client-Side Encryption spec: If spawning is necessary, the
* driver MUST spawn mongocryptd whenever server selection on the
* MongoClient to mongocryptd fails. If the MongoClient fails to connect
* after spawning, the server selection error is propagated to the user.
*/
if (!client_encrypted->topology->mongocryptd_bypass_spawn && error->domain == MONGOC_ERROR_SERVER_SELECTION &&
!retried) {
if (!_spawn_mongocryptd (client_encrypted->topology->mongocryptd_spawn_path,
client_encrypted->topology->mongocryptd_spawn_args,
error)) {
GOTO (fail);
}
/* Respawn and retry. */
memset (error, 0, sizeof (*error));
retried = true;
GOTO (retry);
}
GOTO (fail);
}
/* Re-append $db if encryption stripped it. */
if (!bson_iter_init_find (&iter, encrypted, "$db")) {
BSON_APPEND_UTF8 (encrypted, "$db", cmd->db_name);
}
/* Create the modified cmd_t. */
memcpy (encrypted_cmd, cmd, sizeof (mongoc_cmd_t));
/* Modify the mongoc_cmd_t and clear the payloads, since
* _mongoc_cse_auto_encrypt converted the payloads into an embedded array. */
encrypted_cmd->payloads_count = 0;
encrypted_cmd->command = encrypted;
ret = true;
fail:
bson_destroy (result);
bson_destroy (&cmd_bson);
_release_mongocryptd_client (client_encrypted, mongocryptd_client);
_release_keyvault_coll (client_encrypted, keyvault_coll);
RETURN (ret);
}
/*--------------------------------------------------------------------------
*
* _mongoc_cse_auto_decrypt --
*
* Perform automatic decryption.
*
* Return:
* True on success, false on error.
*
* Pre-conditions:
* FLE is enabled on client or its associated client pool.
*
* Post-conditions:
* If return false, @error is set. @decrypted is always initialized.
*
*--------------------------------------------------------------------------
*/
bool
_mongoc_cse_auto_decrypt (
mongoc_client_t *client_encrypted, const char *db_name, const bson_t *reply, bson_t *decrypted, bson_error_t *error)
{
bool ret = false;
mongoc_collection_t *keyvault_coll = NULL;
ENTRY;
BSON_ASSERT_PARAM (client_encrypted);
BSON_UNUSED (db_name);
keyvault_coll = _get_keyvault_coll (client_encrypted);
if (!_mongoc_crypt_auto_decrypt (client_encrypted->topology->crypt, keyvault_coll, reply, decrypted, error)) {
GOTO (fail);
}
ret = true;
fail:
_release_keyvault_coll (client_encrypted, keyvault_coll);
RETURN (ret);
}
static void
_uri_construction_error (bson_error_t *error)
{
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"Error constructing URI to mongocryptd");
}
#ifdef _WIN32
static bool
_do_spawn (const char *path, char **args, bson_error_t *error)
{
mcommon_string_append_t command;
char **arg;
PROCESS_INFORMATION process_information;
STARTUPINFO startup_info;
/* Construct the full command, quote path and arguments. */
mcommon_string_new_as_append (&command);
mcommon_string_append (&command, "\"");
if (path) {
mcommon_string_append (&command, path);
}
mcommon_string_append (&command, "mongocryptd.exe");
mcommon_string_append (&command, "\"");
/* skip the "mongocryptd" first arg. */
arg = args + 1;
while (*arg) {
mcommon_string_append (&command, " \"");
mcommon_string_append (&command, *arg);
mcommon_string_append (&command, "\"");
arg++;
}
ZeroMemory (&process_information, sizeof (process_information));
ZeroMemory (&startup_info, sizeof (startup_info));
startup_info.cb = sizeof (startup_info);
if (!CreateProcessA (NULL,
mcommon_str_from_append (&command),
NULL,
NULL,
false /* inherit descriptors */,
DETACHED_PROCESS /* FLAGS */,
NULL /* environment */,
NULL /* current directory */,
&startup_info,
&process_information)) {
- long lastError = GetLastError ();
- LPSTR message = NULL;
-
- FormatMessageA (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_ARGUMENT_ARRAY | FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- lastError,
- 0,
- (LPSTR) &message,
- 0,
- NULL);
+ char *message = mongoc_winerr_to_string (GetLastError ());
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"failed to spawn mongocryptd: %s",
message);
- LocalFree (message);
+ bson_free (message);
mcommon_string_from_append_destroy (&command);
return false;
}
mcommon_string_from_append_destroy (&command);
return true;
}
#else
/*--------------------------------------------------------------------------
*
* _do_spawn --
*
* Spawn process defined by arg[0] on POSIX systems.
*
* Note, if mongocryptd fails to spawn (due to not being found on the path),
* an error is not reported and true is returned. Users will get an error
* later, upon first attempt to use mongocryptd.
*
* These comments refer to three distinct processes: parent, child, and
* mongocryptd.
* - parent is initial calling process
* - child is the first forked child. It fork-execs mongocryptd then
* terminates. This makes mongocryptd an orphan, making it immediately
* adopted by the init process.
* - mongocryptd is the final background daemon (grandchild process).
*
* Return:
* False if an error definitely occurred. Returns true if no reportable
* error occurred (though an error may have occurred in starting
* mongocryptd, resulting in the process not running).
*
* Arguments:
* args - A NULL terminated list of arguments. The first argument MUST
* be the name of the process to execute, and the last argument MUST be
* NULL.
*
* Post-conditions:
* If return false, @error is set.
*
*--------------------------------------------------------------------------
*/
static bool
_do_spawn (const char *path, char **args, bson_error_t *error)
{
pid_t pid;
int fd;
char *to_exec;
// String allocation must be done up-front, as allocation is not fork-safe.
if (path) {
to_exec = bson_strdup_printf ("%s%s", path, args[0]);
} else {
to_exec = bson_strdup (args[0]);
}
/* Fork. The child will terminate immediately (after fork-exec'ing
* mongocryptd). This orphans mongocryptd, and allows parent to wait on
* child. */
pid = fork ();
if (pid < 0) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"failed to fork (errno=%d) '%s'",
errno,
strerror (errno));
bson_free (to_exec);
return false;
} else if (pid > 0) {
int child_status;
/* Child will spawn mongocryptd and immediately terminate to turn
* mongocryptd into an orphan. */
if (waitpid (pid, &child_status, 0 /* options */) < 0) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"failed to wait for child (errno=%d) '%s'",
errno,
strerror (errno));
bson_free (to_exec);
return false;
}
/* parent is done at this point, return. */
bson_free (to_exec);
return true;
}
/* We're no longer in the parent process. Errors encountered result in an
* exit.
* Note, we're not logging here, because that would require the user's log
* callback to be fork-safe.
*/
/* Start a new session for the child, so it is not bound to the current
* session (e.g. terminal session). */
if (setsid () < 0) {
_exit (EXIT_FAILURE);
}
/* Fork again. Child terminates so mongocryptd gets orphaned and immedately
* adopted by init. */
signal (SIGHUP, SIG_IGN);
pid = fork ();
if (pid < 0) {
_exit (EXIT_FAILURE);
} else if (pid > 0) {
/* Child terminates immediately. */
_exit (EXIT_SUCCESS);
}
/* If we later decide to change the working directory for the pid file path,
* possibly change the process's working directory with chdir like: `chdir
* (default_pid_path)`. Currently pid file ends up in application's working
* directory. */
/* Set the user file creation mask to zero. */
umask (0);
/* Close and reopen stdin. */
fd = open ("/dev/null", O_RDONLY);
if (fd < 0) {
_exit (EXIT_FAILURE);
}
dup2 (fd, STDIN_FILENO);
close (fd);
/* Close and reopen stdout. */
fd = open ("/dev/null", O_WRONLY);
if (fd < 0) {
_exit (EXIT_FAILURE);
}
if (dup2 (fd, STDOUT_FILENO) < 0 || close (fd) < 0) {
_exit (EXIT_FAILURE);
}
/* Close and reopen stderr. */
fd = open ("/dev/null", O_RDWR);
if (fd < 0) {
_exit (EXIT_FAILURE);
}
if (dup2 (fd, STDERR_FILENO) < 0 || close (fd) < 0) {
_exit (EXIT_FAILURE);
}
if (execvp (to_exec, args) < 0) {
/* Need to exit. */
_exit (EXIT_FAILURE);
}
/* Will never execute. */
return false;
}
#endif
/*--------------------------------------------------------------------------
*
* _spawn_mongocryptd --
*
* Attempt to spawn mongocryptd as a background process.
*
* Return:
* False if an error definitely occurred. Returns true if no reportable
* error occurred (though an error may have occurred in starting
* mongocryptd, resulting in the process not running).
*
* Arguments:
* mongocryptd_spawn_path May be NULL, otherwise the path to mongocryptd.
* mongocryptd_spawn_args May be NULL, otherwise a bson_iter_t to the
* value "mongocryptdSpawnArgs" in AutoEncryptionOpts.extraOptions
* (see spec).
*
* Post-conditions:
* If return false, @error is set.
*
*--------------------------------------------------------------------------
*/
static bool
_spawn_mongocryptd (const char *mongocryptd_spawn_path, const bson_t *mongocryptd_spawn_args, bson_error_t *error)
{
char **args = NULL;
bson_iter_t iter;
bool passed_idle_shutdown_timeout_secs = false;
int num_args = 2; /* for leading "mongocrypt" and trailing NULL */
int i;
bool ret;
/* iterate once to get length and validate all are strings */
if (mongocryptd_spawn_args) {
bson_iter_init (&iter, mongocryptd_spawn_args);
while (bson_iter_next (&iter)) {
if (!BSON_ITER_HOLDS_UTF8 (&iter)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"invalid argument for mongocryptd, must be string");
return false;
}
/* Check if the arg starts with --idleShutdownTimeoutSecs= or is equal
* to --idleShutdownTimeoutSecs */
if (0 == strncmp ("--idleShutdownTimeoutSecs=", bson_iter_utf8 (&iter, NULL), 26) ||
0 == strcmp ("--idleShutdownTimeoutSecs", bson_iter_utf8 (&iter, NULL))) {
passed_idle_shutdown_timeout_secs = true;
}
num_args++;
}
}
if (!passed_idle_shutdown_timeout_secs) {
/* add one more */
num_args++;
}
args = (char **) bson_malloc (sizeof (char *) * num_args);
i = 0;
args[i++] = "mongocryptd";
if (mongocryptd_spawn_args) {
bson_iter_init (&iter, mongocryptd_spawn_args);
while (bson_iter_next (&iter)) {
args[i++] = (char *) bson_iter_utf8 (&iter, NULL);
}
}
if (!passed_idle_shutdown_timeout_secs) {
args[i++] = "--idleShutdownTimeoutSecs=60";
}
BSON_ASSERT (i == num_args - 1);
args[i++] = NULL;
ret = _do_spawn (mongocryptd_spawn_path, args, error);
bson_free (args);
return ret;
}
static bool
_parse_extra (const bson_t *extra, mongoc_topology_t *topology, mongoc_uri_t **uri, bson_error_t *error)
{
bson_iter_t iter;
bool ret = false;
ENTRY;
*uri = NULL;
if (extra) {
if (bson_iter_init_find (&iter, extra, "mongocryptdBypassSpawn")) {
if (!BSON_ITER_HOLDS_BOOL (&iter)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"Expected bool for option 'mongocryptdBypassSpawn'");
GOTO (fail);
}
topology->mongocryptd_bypass_spawn = bson_iter_bool (&iter);
}
if (bson_iter_init_find (&iter, extra, "mongocryptdSpawnPath")) {
if (!BSON_ITER_HOLDS_UTF8 (&iter)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"Expected string for option 'mongocryptdSpawnPath'");
GOTO (fail);
}
topology->mongocryptd_spawn_path = bson_strdup (bson_iter_utf8 (&iter, NULL));
}
if (bson_iter_init_find (&iter, extra, "mongocryptdSpawnArgs")) {
uint32_t array_len;
const uint8_t *array_data;
if (!BSON_ITER_HOLDS_ARRAY (&iter)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"Expected array for option 'mongocryptdSpawnArgs'");
GOTO (fail);
}
bson_iter_array (&iter, &array_len, &array_data);
topology->mongocryptd_spawn_args = bson_new_from_data (array_data, array_len);
}
if (bson_iter_init_find (&iter, extra, "mongocryptdURI")) {
if (!BSON_ITER_HOLDS_UTF8 (&iter)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"Expected string for option 'mongocryptdURI'");
GOTO (fail);
}
*uri = mongoc_uri_new_with_error (bson_iter_utf8 (&iter, NULL), error);
if (!*uri) {
GOTO (fail);
}
}
if (bson_iter_init_find (&iter, extra, "cryptSharedLibPath")) {
if (!BSON_ITER_HOLDS_UTF8 (&iter)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"Expected a string for 'cryptSharedLibPath'");
GOTO (fail);
}
size_t len;
const char *ptr = bson_iter_utf8_unsafe (&iter, &len);
bson_free (topology->clientSideEncryption.autoOptions.extraOptions.cryptSharedLibPath);
topology->clientSideEncryption.autoOptions.extraOptions.cryptSharedLibPath = bson_strdup (ptr);
}
if (bson_iter_init_find (&iter, extra, "cryptSharedLibRequired")) {
if (!BSON_ITER_HOLDS_BOOL (&iter)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"Expected a bool for 'cryptSharedLibRequired'");
GOTO (fail);
}
topology->clientSideEncryption.autoOptions.extraOptions.cryptSharedLibRequired = bson_iter_bool_unsafe (&iter);
}
}
if (!*uri) {
*uri = mongoc_uri_new_with_error ("mongodb://localhost:27020", error);
if (!*uri) {
GOTO (fail);
}
if (!mongoc_uri_set_option_as_int32 (*uri, MONGOC_URI_SERVERSELECTIONTIMEOUTMS, 10000)) {
_uri_construction_error (error);
GOTO (fail);
}
}
ret = true;
fail:
RETURN (ret);
}
bool
_mongoc_cse_client_enable_auto_encryption (mongoc_client_t *client,
mongoc_auto_encryption_opts_t *opts,
bson_error_t *error)
{
bool ret = false;
mongoc_uri_t *mongocryptd_uri = NULL;
ENTRY;
BSON_ASSERT (client);
if (!client->topology->single_threaded) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"Automatic encryption on pooled clients must be set on the pool");
GOTO (fail);
}
if (!opts) {
bson_set_error (
error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG, "Auto encryption options required");
GOTO (fail);
}
if (opts->keyvault_client_pool) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"The key vault client pool only applies to a client "
"pool, not a single threaded client");
GOTO (fail);
}
if (opts->keyvault_client && !opts->keyvault_client->topology->single_threaded) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"The key vault client must be single threaded, not be "
"from a client pool");
GOTO (fail);
}
/* Check for required options */
if (!opts->keyvault_db || !opts->keyvault_coll) {
bson_set_error (
error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG, "Key vault namespace option required");
GOTO (fail);
}
if (!opts->kms_providers) {
bson_set_error (
error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG, "KMS providers option required");
GOTO (fail);
}
if (client->topology->cse_state != MONGOC_CSE_DISABLED) {
bson_set_error (
error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE, "Automatic encryption already set");
GOTO (fail);
} else {
client->topology->cse_state = MONGOC_CSE_ENABLED;
}
if (!_parse_extra (opts->extra, client->topology, &mongocryptd_uri, error)) {
GOTO (fail);
}
client->topology->crypt =
_mongoc_crypt_new (opts->kms_providers,
opts->schema_map,
opts->encrypted_fields_map,
opts->tls_opts,
client->topology->clientSideEncryption.autoOptions.extraOptions.cryptSharedLibPath,
client->topology->clientSideEncryption.autoOptions.extraOptions.cryptSharedLibRequired,
opts->bypass_auto_encryption,
opts->bypass_query_analysis,
opts->creds_cb,
opts->cache_expiration_ms,
error);
if (!client->topology->crypt) {
GOTO (fail);
}
const bool have_crypt_shared = _mongoc_crypt_get_crypt_shared_version (client->topology->crypt) != NULL;
client->topology->bypass_auto_encryption = opts->bypass_auto_encryption;
client->topology->bypass_query_analysis = opts->bypass_query_analysis;
if (!client->topology->bypass_auto_encryption && !client->topology->bypass_query_analysis && !have_crypt_shared) {
if (!client->topology->mongocryptd_bypass_spawn) {
if (!_spawn_mongocryptd (
client->topology->mongocryptd_spawn_path, client->topology->mongocryptd_spawn_args, error)) {
GOTO (fail);
}
}
/* By default, single threaded clients set serverSelectionTryOnce to
* true, which means server selection fails if a topology scan fails
* the first time (i.e. it will not make repeat attempts until
* serverSelectionTimeoutMS expires). Override this, since the first
* attempt to connect to mongocryptd may fail when spawning, as it
* takes some time for mongocryptd to listen on sockets. */
if (!mongoc_uri_set_option_as_bool (mongocryptd_uri, MONGOC_URI_SERVERSELECTIONTRYONCE, false)) {
_uri_construction_error (error);
GOTO (fail);
}
client->topology->mongocryptd_client = mongoc_client_new_from_uri (mongocryptd_uri);
if (!client->topology->mongocryptd_client) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"Unable to create client to mongocryptd");
GOTO (fail);
}
/* Similarly, single threaded clients will by default wait for 5 second
* cooldown period after failing to connect to a server before making
* another attempt. Meaning if the first attempt to mongocryptd fails
* to connect, then the user observes a 5 second delay. This is not
* configurable in the URI, so override. */
_mongoc_topology_bypass_cooldown (client->topology->mongocryptd_client->topology);
/* Also, since single threaded server selection can foreseeably take
* connectTimeoutMS (which by default is longer than 10 seconds), reduce
* this as well. */
if (!mongoc_uri_set_option_as_int32 (mongocryptd_uri, MONGOC_URI_CONNECTTIMEOUTMS, 10000)) {
_uri_construction_error (error);
GOTO (fail);
}
}
client->topology->keyvault_db = bson_strdup (opts->keyvault_db);
client->topology->keyvault_coll = bson_strdup (opts->keyvault_coll);
if (opts->keyvault_client) {
client->topology->keyvault_client = opts->keyvault_client;
}
if (opts->encrypted_fields_map) {
client->topology->encrypted_fields_map = bson_copy (opts->encrypted_fields_map);
}
ret = true;
fail:
mongoc_uri_destroy (mongocryptd_uri);
RETURN (ret);
}
bool
_mongoc_cse_client_pool_enable_auto_encryption (mongoc_topology_t *topology,
mongoc_auto_encryption_opts_t *opts,
bson_error_t *error)
{
bool setup_okay = false;
mongoc_uri_t *mongocryptd_uri = NULL;
mongoc_topology_cse_state_t prev_cse_state = MONGOC_CSE_STARTING;
BSON_ASSERT (topology);
if (!opts) {
bson_set_error (
error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG, "Auto encryption options required");
GOTO (fail);
}
if (opts->keyvault_client) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"The key vault client only applies to a single threaded "
"client not a client pool. Set a key vault client pool");
GOTO (fail);
}
/* Check for required options */
if (!opts->keyvault_db || !opts->keyvault_coll) {
bson_set_error (
error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG, "Key vault namespace option required");
GOTO (fail);
}
if (!opts->kms_providers) {
bson_set_error (
error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG, "KMS providers option required");
GOTO (fail);
}
prev_cse_state = mcommon_atomic_int_compare_exchange_strong (
(int *) &topology->cse_state, MONGOC_CSE_DISABLED, MONGOC_CSE_STARTING, mcommon_memory_order_acquire);
while (prev_cse_state == MONGOC_CSE_STARTING) {
/* Another thread is starting client-side encryption. It may take some
* time to start, but don't continue until it is finished. */
bson_thrd_yield ();
prev_cse_state = mcommon_atomic_int_compare_exchange_strong (
(int *) &topology->cse_state, MONGOC_CSE_DISABLED, MONGOC_CSE_STARTING, mcommon_memory_order_acquire);
}
if (prev_cse_state == MONGOC_CSE_ENABLED) {
bson_set_error (
error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE, "Automatic encryption already set");
GOTO (fail);
}
/* We just set the CSE state from DISABLED to STARTING. Start it up now. */
if (!_parse_extra (opts->extra, topology, &mongocryptd_uri, error)) {
GOTO (fail);
}
topology->crypt = _mongoc_crypt_new (opts->kms_providers,
opts->schema_map,
opts->encrypted_fields_map,
opts->tls_opts,
topology->clientSideEncryption.autoOptions.extraOptions.cryptSharedLibPath,
topology->clientSideEncryption.autoOptions.extraOptions.cryptSharedLibRequired,
opts->bypass_auto_encryption,
opts->bypass_query_analysis,
opts->creds_cb,
opts->cache_expiration_ms,
error);
if (!topology->crypt) {
GOTO (fail);
}
topology->bypass_auto_encryption = opts->bypass_auto_encryption;
topology->bypass_query_analysis = opts->bypass_query_analysis;
if (!topology->bypass_auto_encryption && !topology->bypass_query_analysis) {
if (!topology->mongocryptd_bypass_spawn) {
if (!_spawn_mongocryptd (topology->mongocryptd_spawn_path, topology->mongocryptd_spawn_args, error)) {
GOTO (fail);
}
}
topology->mongocryptd_client_pool = mongoc_client_pool_new (mongocryptd_uri);
if (!topology->mongocryptd_client_pool) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"Unable to create client pool to mongocryptd");
GOTO (fail);
}
}
topology->keyvault_db = bson_strdup (opts->keyvault_db);
topology->keyvault_coll = bson_strdup (opts->keyvault_coll);
if (opts->keyvault_client_pool) {
topology->keyvault_client_pool = opts->keyvault_client_pool;
}
if (opts->encrypted_fields_map) {
topology->encrypted_fields_map = bson_copy (opts->encrypted_fields_map);
}
setup_okay = true;
BSON_ASSERT (prev_cse_state == MONGOC_CSE_DISABLED);
fail:
if (prev_cse_state == MONGOC_CSE_DISABLED) {
/* We need to set the new CSE state. */
mongoc_topology_cse_state_t new_state = setup_okay ? MONGOC_CSE_ENABLED : MONGOC_CSE_DISABLED;
mcommon_atomic_int_exchange ((int *) &topology->cse_state, new_state, mcommon_memory_order_release);
}
mongoc_uri_destroy (mongocryptd_uri);
RETURN (setup_okay);
}
struct _mongoc_client_encryption_t {
_mongoc_crypt_t *crypt;
mongoc_collection_t *keyvault_coll;
bson_t *kms_providers;
};
mongoc_client_encryption_t *
mongoc_client_encryption_new (mongoc_client_encryption_opts_t *opts, bson_error_t *error)
{
mongoc_client_encryption_t *client_encryption = NULL;
bool success = false;
mongoc_write_concern_t *wc = NULL;
mongoc_read_concern_t *rc = NULL;
/* Check for required options */
if (!opts || !opts->keyvault_client || !opts->keyvault_db || !opts->keyvault_coll) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"Key vault client and namespace option required");
goto fail;
}
if (!opts->kms_providers) {
bson_set_error (
error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG, "KMS providers option required");
goto fail;
}
client_encryption = bson_malloc0 (sizeof (*client_encryption));
client_encryption->keyvault_coll =
mongoc_client_get_collection (opts->keyvault_client, opts->keyvault_db, opts->keyvault_coll);
wc = mongoc_write_concern_new ();
mongoc_write_concern_set_w (wc, MONGOC_WRITE_CONCERN_W_MAJORITY);
mongoc_collection_set_write_concern (client_encryption->keyvault_coll, wc);
rc = mongoc_read_concern_new ();
mongoc_read_concern_set_level (rc, MONGOC_READ_CONCERN_LEVEL_MAJORITY);
mongoc_collection_set_read_concern (client_encryption->keyvault_coll, rc);
client_encryption->kms_providers = bson_copy (opts->kms_providers);
client_encryption->crypt = _mongoc_crypt_new (opts->kms_providers,
NULL /* schema_map */,
NULL /* encrypted_fields_map */,
opts->tls_opts,
NULL /* No crypt_shared path */,
false /* crypt_shared not requried */,
true, /* bypassAutoEncryption (We are explicit) */
false,
/* bypass_query_analysis. Not applicable. */
opts->creds_cb,
opts->cache_expiration_ms,
error);
if (!client_encryption->crypt) {
goto fail;
}
success = true;
fail:
mongoc_write_concern_destroy (wc);
mongoc_read_concern_destroy (rc);
if (!success) {
mongoc_client_encryption_destroy (client_encryption);
return NULL;
}
return client_encryption;
}
void
mongoc_client_encryption_destroy (mongoc_client_encryption_t *client_encryption)
{
if (!client_encryption) {
return;
}
_mongoc_crypt_destroy (client_encryption->crypt);
mongoc_collection_destroy (client_encryption->keyvault_coll);
bson_destroy (client_encryption->kms_providers);
bson_free (client_encryption);
}
static bool
_coll_has_write_concern_majority (const mongoc_collection_t *coll)
{
const mongoc_write_concern_t *const wc = mongoc_collection_get_write_concern (coll);
return wc && mongoc_write_concern_get_wmajority (wc);
}
static bool
_coll_has_read_concern_majority (const mongoc_collection_t *coll)
{
const mongoc_read_concern_t *const rc = mongoc_collection_get_read_concern (coll);
const char *const level = rc ? mongoc_read_concern_get_level (rc) : NULL;
return level && strcmp (level, MONGOC_READ_CONCERN_LEVEL_MAJORITY) == 0;
}
bool
mongoc_client_encryption_create_datakey (mongoc_client_encryption_t *client_encryption,
const char *kms_provider,
const mongoc_client_encryption_datakey_opts_t *opts,
bson_value_t *keyid,
bson_error_t *error)
{
bool ret = false;
bson_t datakey = BSON_INITIALIZER;
bson_t insert_opts = BSON_INITIALIZER;
ENTRY;
BSON_ASSERT_PARAM (client_encryption);
BSON_ASSERT (_coll_has_write_concern_majority (client_encryption->keyvault_coll));
if (!opts) {
bson_set_error (error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG, "required 'opts' unset");
GOTO (fail);
}
/* reset, so it is safe for caller to call bson_value_destroy on error or
* success. */
if (keyid) {
keyid->value_type = BSON_TYPE_EOD;
}
bson_destroy (&datakey);
if (!_mongoc_crypt_create_datakey (client_encryption->crypt,
kms_provider,
opts->masterkey,
opts->keyaltnames,
opts->keyaltnames_count,
opts->keymaterial,
opts->keymaterial_len,
&datakey,
error)) {
GOTO (fail);
}
if (!mongoc_collection_insert_one (
client_encryption->keyvault_coll, &datakey, NULL /* opts */, NULL /* reply */, error)) {
GOTO (fail);
}
if (keyid) {
bson_iter_t iter;
const bson_value_t *id_value;
if (!bson_iter_init_find (&iter, &datakey, "_id")) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"data key not did not contain _id");
GOTO (fail);
} else if (!BSON_ITER_HOLDS_BINARY (&iter)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"data key _id does not contain binary");
GOTO (fail);
} else {
id_value = bson_iter_value (&iter);
bson_value_copy (id_value, keyid);
}
}
ret = true;
fail:
bson_destroy (&insert_opts);
bson_destroy (&datakey);
RETURN (ret);
}
bool
mongoc_client_encryption_rewrap_many_datakey (mongoc_client_encryption_t *client_encryption,
const bson_t *filter,
const char *provider,
const bson_t *master_key,
mongoc_client_encryption_rewrap_many_datakey_result_t *result,
bson_error_t *error)
{
bson_t keys = BSON_INITIALIZER;
bson_t local_result = BSON_INITIALIZER;
bson_t *const bulk_write_result = result ? &result->bulk_write_result : &local_result;
mongoc_bulk_operation_t *bulk = NULL;
bson_iter_t iter;
bool ret = false;
ENTRY;
BSON_ASSERT_PARAM (client_encryption);
BSON_ASSERT (_coll_has_read_concern_majority (client_encryption->keyvault_coll));
BSON_ASSERT (_coll_has_write_concern_majority (client_encryption->keyvault_coll));
bson_reinit (bulk_write_result);
if (master_key && !provider) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"expected 'provider' to be set to identify type of 'master_key'");
GOTO (fail);
}
if (!_mongoc_crypt_rewrap_many_datakey (
client_encryption->crypt, client_encryption->keyvault_coll, filter, provider, master_key, &keys, error)) {
GOTO (fail);
}
/* No keys rewrapped, no key documents to update. */
if (bson_empty (&keys)) {
bson_destroy (&keys);
bson_destroy (&local_result);
return true;
}
bulk = mongoc_collection_create_bulk_operation_with_opts (client_encryption->keyvault_coll, NULL);
BSON_ASSERT (bulk);
if (!bson_iter_init_find (&iter, &keys, "v")) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"result did not contain expected field 'v'");
GOTO (fail);
}
if (!BSON_ITER_HOLDS_ARRAY (&iter)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"result did not return an array as expected");
GOTO (fail);
}
BSON_ASSERT (bson_iter_recurse (&iter, &iter));
while (bson_iter_next (&iter)) {
const uint8_t *data = NULL;
uint32_t len = 0u;
bson_t key;
bson_iter_t key_iter;
bson_subtype_t subtype;
bson_t selector = BSON_INITIALIZER;
bson_t document = BSON_INITIALIZER;
bool doc_success = false;
bson_iter_document (&iter, &len, &data);
if (!data || !bson_init_static (&key, data, len)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"element is not a valid BSON document");
goto doc_done;
}
/* Find _id and use as selector. */
{
if (!bson_iter_init_find (&key_iter, &key, "_id")) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"could not find _id in key document");
goto doc_done;
}
bson_iter_binary (&key_iter, &subtype, &len, &data);
if (!data || subtype != BSON_SUBTYPE_UUID) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"expected _id in key document to be a UUID");
goto doc_done;
}
BSON_ASSERT (bson_append_iter (&selector, "_id", 3, &key_iter));
}
/* Find and include potentially updated fields. */
{
bson_t child;
BSON_ASSERT (BSON_APPEND_DOCUMENT_BEGIN (&document, "$set", &child));
{
if (bson_iter_init_find (&key_iter, &key, "masterKey")) {
BSON_ASSERT (bson_append_iter (&child, "masterKey", -1, &key_iter));
}
if (bson_iter_init_find (&key_iter, &key, "keyMaterial")) {
BSON_ASSERT (bson_append_iter (&child, "keyMaterial", -1, &key_iter));
}
}
BSON_ASSERT (bson_append_document_end (&document, &child));
}
/* Update updateDate field. */
BCON_APPEND (&document, "$currentDate", "{", "updateDate", BCON_BOOL (true), "}");
if (!mongoc_bulk_operation_update_one_with_opts (bulk, &selector, &document, NULL, error)) {
goto doc_done;
}
doc_success = true;
doc_done:
bson_destroy (&key);
bson_destroy (&selector);
bson_destroy (&document);
if (!doc_success) {
GOTO (fail);
}
}
if (!mongoc_bulk_operation_execute (bulk, bulk_write_result, error)) {
GOTO (fail);
}
ret = true;
fail:
bson_destroy (&keys);
bson_destroy (&local_result);
mongoc_bulk_operation_destroy (bulk);
RETURN (ret);
}
bool
mongoc_client_encryption_delete_key (mongoc_client_encryption_t *client_encryption,
const bson_value_t *keyid,
bson_t *reply,
bson_error_t *error)
{
bool ret = false;
bson_t selector = BSON_INITIALIZER;
ENTRY;
BSON_ASSERT_PARAM (client_encryption);
BSON_ASSERT_PARAM (keyid);
BSON_ASSERT (_coll_has_write_concern_majority (client_encryption->keyvault_coll));
BSON_ASSERT (keyid->value_type == BSON_TYPE_BINARY);
BSON_ASSERT (keyid->value.v_binary.subtype == BSON_SUBTYPE_UUID);
BSON_ASSERT (keyid->value.v_binary.data_len > 0u);
BSON_ASSERT (BSON_APPEND_BINARY (
&selector, "_id", keyid->value.v_binary.subtype, keyid->value.v_binary.data, keyid->value.v_binary.data_len));
ret = mongoc_collection_delete_one (client_encryption->keyvault_coll, &selector, NULL, reply, error);
bson_destroy (&selector);
RETURN (ret);
}
bool
mongoc_client_encryption_get_key (mongoc_client_encryption_t *client_encryption,
const bson_value_t *keyid,
bson_t *key_doc,
bson_error_t *error)
{
bson_t filter = BSON_INITIALIZER;
mongoc_cursor_t *cursor = NULL;
bool ret = false;
ENTRY;
BSON_ASSERT_PARAM (client_encryption);
BSON_ASSERT_PARAM (keyid);
BSON_ASSERT (keyid->value_type == BSON_TYPE_BINARY);
BSON_ASSERT (keyid->value.v_binary.subtype == BSON_SUBTYPE_UUID);
BSON_ASSERT (keyid->value.v_binary.data_len > 0u);
BSON_ASSERT (BSON_APPEND_BINARY (
&filter, "_id", keyid->value.v_binary.subtype, keyid->value.v_binary.data, keyid->value.v_binary.data_len));
BSON_ASSERT (_coll_has_read_concern_majority (client_encryption->keyvault_coll));
_mongoc_bson_init_if_set (key_doc);
cursor = mongoc_collection_find_with_opts (client_encryption->keyvault_coll, &filter, NULL, NULL);
ret = !mongoc_cursor_error (cursor, error);
if (ret && key_doc) {
const bson_t *bson = NULL;
if (mongoc_cursor_next (cursor, &bson)) {
bson_copy_to (bson, key_doc);
} else if (mongoc_cursor_error (cursor, error)) {
ret = false;
}
}
bson_destroy (&filter);
mongoc_cursor_destroy (cursor);
RETURN (ret);
}
mongoc_cursor_t *
mongoc_client_encryption_get_keys (mongoc_client_encryption_t *client_encryption, bson_error_t *error)
{
mongoc_cursor_t *cursor = NULL;
bson_t filter = BSON_INITIALIZER;
ENTRY;
BSON_UNUSED (error);
BSON_ASSERT_PARAM (client_encryption);
BSON_ASSERT (_coll_has_read_concern_majority (client_encryption->keyvault_coll));
/* If an error occurred, user should query cursor error. */
cursor = mongoc_collection_find_with_opts (client_encryption->keyvault_coll, &filter, NULL, NULL);
bson_destroy (&filter);
RETURN (cursor);
}
bool
mongoc_client_encryption_add_key_alt_name (mongoc_client_encryption_t *client_encryption,
const bson_value_t *keyid,
const char *keyaltname,
bson_t *key_doc,
bson_error_t *error)
{
mongoc_find_and_modify_opts_t *const opts = mongoc_find_and_modify_opts_new ();
bson_t query = BSON_INITIALIZER;
bool ret = false;
bson_t local_reply;
ENTRY;
BSON_ASSERT_PARAM (client_encryption);
BSON_ASSERT_PARAM (keyid);
BSON_ASSERT_PARAM (keyaltname);
BSON_ASSERT (_coll_has_read_concern_majority (client_encryption->keyvault_coll));
BSON_ASSERT (_coll_has_write_concern_majority (client_encryption->keyvault_coll));
BSON_ASSERT (keyid->value_type == BSON_TYPE_BINARY);
BSON_ASSERT (keyid->value.v_binary.subtype == BSON_SUBTYPE_UUID);
BSON_ASSERT (keyid->value.v_binary.data_len > 0u);
BSON_ASSERT (BSON_APPEND_BINARY (
&query, "_id", keyid->value.v_binary.subtype, keyid->value.v_binary.data, keyid->value.v_binary.data_len));
_mongoc_bson_init_if_set (key_doc);
{
bson_t *const update = BCON_NEW ("$addToSet", "{", "keyAltNames", BCON_UTF8 (keyaltname), "}");
BSON_ASSERT (mongoc_find_and_modify_opts_set_update (opts, update));
bson_destroy (update);
}
ret =
mongoc_collection_find_and_modify_with_opts (client_encryption->keyvault_coll, &query, opts, &local_reply, error);
if (ret && key_doc) {
bson_iter_t iter;
if (bson_iter_init_find (&iter, &local_reply, "value")) {
const bson_value_t *const value = bson_iter_value (&iter);
if (value->value_type == BSON_TYPE_DOCUMENT) {
bson_t bson;
BSON_ASSERT (bson_init_static (&bson, value->value.v_doc.data, value->value.v_doc.data_len));
bson_copy_to (&bson, key_doc);
bson_destroy (&bson);
} else if (value->value_type == BSON_TYPE_NULL) {
bson_t bson = BSON_INITIALIZER;
bson_copy_to (&bson, key_doc);
bson_destroy (&bson);
} else {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"expected field value to be a document or null");
ret = false;
}
}
}
mongoc_find_and_modify_opts_destroy (opts);
bson_destroy (&query);
bson_destroy (&local_reply);
RETURN (ret);
}
bool
mongoc_client_encryption_remove_key_alt_name (mongoc_client_encryption_t *client_encryption,
const bson_value_t *keyid,
const char *keyaltname,
bson_t *key_doc,
bson_error_t *error)
{
bson_t query = BSON_INITIALIZER;
bool ret = false;
bson_t local_reply;
ENTRY;
BSON_ASSERT_PARAM (client_encryption);
BSON_ASSERT_PARAM (keyid);
BSON_ASSERT_PARAM (keyaltname);
BSON_ASSERT (_coll_has_write_concern_majority (client_encryption->keyvault_coll));
BSON_ASSERT (keyid->value_type == BSON_TYPE_BINARY);
BSON_ASSERT (keyid->value.v_binary.subtype == BSON_SUBTYPE_UUID);
BSON_ASSERT (keyid->value.v_binary.data_len > 0u);
BSON_ASSERT (BSON_APPEND_BINARY (
&query, "_id", keyid->value.v_binary.subtype, keyid->value.v_binary.data, keyid->value.v_binary.data_len));
_mongoc_bson_init_if_set (key_doc);
{
mongoc_find_and_modify_opts_t *const opts = mongoc_find_and_modify_opts_new ();
/* clang-format off */
bson_t *const update = BCON_NEW (
"0", "{",
"$set", "{",
"keyAltNames", "{",
"$cond", "[",
"{",
"$eq", "[", "$keyAltNames", "[", keyaltname, "]", "]",
"}",
"$$REMOVE",
"{",
"$filter", "{",
"input", "$keyAltNames",
"cond", "{",
"$ne", "[", "$$this", keyaltname, "]",
"}",
"}",
"}",
"]",
"}",
"}",
"}");
/* clang-format on */
BSON_ASSERT (mongoc_find_and_modify_opts_set_update (opts, update));
ret = mongoc_collection_find_and_modify_with_opts (
client_encryption->keyvault_coll, &query, opts, &local_reply, error);
bson_destroy (update);
mongoc_find_and_modify_opts_destroy (opts);
}
if (ret && key_doc) {
bson_iter_t iter;
if (bson_iter_init_find (&iter, &local_reply, "value")) {
const bson_value_t *const value = bson_iter_value (&iter);
if (value->value_type == BSON_TYPE_DOCUMENT) {
bson_t bson;
BSON_ASSERT (bson_init_static (&bson, value->value.v_doc.data, value->value.v_doc.data_len));
bson_copy_to (&bson, key_doc);
bson_destroy (&bson);
} else if (value->value_type == BSON_TYPE_NULL) {
bson_t bson = BSON_INITIALIZER;
bson_copy_to (&bson, key_doc);
bson_destroy (&bson);
} else {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_STATE,
"expected field value to be a document or null");
ret = false;
}
}
}
bson_destroy (&query);
bson_destroy (&local_reply);
RETURN (ret);
}
bool
mongoc_client_encryption_get_key_by_alt_name (mongoc_client_encryption_t *client_encryption,
const char *keyaltname,
bson_t *key_doc,
bson_error_t *error)
{
bson_t filter = BSON_INITIALIZER;
mongoc_cursor_t *cursor = NULL;
bool ret = false;
ENTRY;
BSON_ASSERT_PARAM (client_encryption);
BSON_ASSERT_PARAM (keyaltname);
BSON_ASSERT (_coll_has_write_concern_majority (client_encryption->keyvault_coll));
BSON_ASSERT (BSON_APPEND_UTF8 (&filter, "keyAltNames", keyaltname));
_mongoc_bson_init_if_set (key_doc);
cursor = mongoc_collection_find_with_opts (client_encryption->keyvault_coll, &filter, NULL, NULL);
ret = !mongoc_cursor_error (cursor, error);
if (ret && key_doc) {
const bson_t *bson = NULL;
if (mongoc_cursor_next (cursor, &bson)) {
bson_copy_to (bson, key_doc);
} else if (mongoc_cursor_error (cursor, error)) {
ret = false;
}
}
bson_destroy (&filter);
mongoc_cursor_destroy (cursor);
RETURN (ret);
}
bool
mongoc_client_encryption_encrypt (mongoc_client_encryption_t *client_encryption,
const bson_value_t *value,
mongoc_client_encryption_encrypt_opts_t *opts,
bson_value_t *ciphertext,
bson_error_t *error)
{
bool ret = false;
bson_t *range_opts = NULL;
ENTRY;
BSON_ASSERT (client_encryption);
if (!ciphertext) {
bson_set_error (
error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG, "required 'ciphertext' unset");
GOTO (fail);
}
/* reset, so it is safe for caller to call bson_value_destroy on error or
* success. */
ciphertext->value_type = BSON_TYPE_EOD;
if (!opts) {
bson_set_error (error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG, "required 'opts' unset");
GOTO (fail);
}
if (opts->range_opts) {
range_opts = bson_new ();
append_bson_range_opts (range_opts, opts);
}
if (!_mongoc_crypt_explicit_encrypt (client_encryption->crypt,
client_encryption->keyvault_coll,
opts->algorithm,
&opts->keyid,
opts->keyaltname,
opts->query_type,
opts->contention_factor.set ? &opts->contention_factor.value : NULL,
range_opts,
value,
ciphertext,
error)) {
GOTO (fail);
}
ret = true;
fail:
bson_destroy (range_opts);
RETURN (ret);
}
bool
mongoc_client_encryption_encrypt_expression (mongoc_client_encryption_t *client_encryption,
const bson_t *expr,
mongoc_client_encryption_encrypt_opts_t *opts,
bson_t *expr_out,
bson_error_t *error)
{
ENTRY;
BSON_ASSERT_PARAM (client_encryption);
BSON_ASSERT_PARAM (expr);
BSON_ASSERT_PARAM (opts);
BSON_ASSERT_PARAM (expr_out);
BSON_OPTIONAL_PARAM (error);
bson_init (expr_out);
bson_t *range_opts = NULL;
if (opts->range_opts) {
range_opts = bson_new ();
append_bson_range_opts (range_opts, opts);
}
if (!_mongoc_crypt_explicit_encrypt_expression (client_encryption->crypt,
client_encryption->keyvault_coll,
opts->algorithm,
&opts->keyid,
opts->keyaltname,
opts->query_type,
opts->contention_factor.set ? &opts->contention_factor.value : NULL,
range_opts,
expr,
expr_out,
error)) {
bson_destroy (range_opts);
RETURN (false);
}
bson_destroy (range_opts);
RETURN (true);
}
bool
mongoc_client_encryption_decrypt (mongoc_client_encryption_t *client_encryption,
const bson_value_t *ciphertext,
bson_value_t *value,
bson_error_t *error)
{
bool ret = false;
ENTRY;
BSON_ASSERT (client_encryption);
if (!value) {
bson_set_error (error, MONGOC_ERROR_CLIENT, MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG, "required 'value' unset");
GOTO (fail);
}
/* reset, so it is safe for caller to call bson_value_destroy on error or
* success. */
value->value_type = BSON_TYPE_EOD;
if (ciphertext->value_type != BSON_TYPE_BINARY || ciphertext->value.v_binary.subtype != BSON_SUBTYPE_ENCRYPTED) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"ciphertext must be BSON binary subtype 6");
GOTO (fail);
}
if (!_mongoc_crypt_explicit_decrypt (
client_encryption->crypt, client_encryption->keyvault_coll, ciphertext, value, error)) {
GOTO (fail);
}
ret = true;
fail:
RETURN (ret);
}
bool
_mongoc_cse_is_enabled (mongoc_client_t *client)
{
BSON_ASSERT_PARAM (client);
while (1) {
mongoc_topology_cse_state_t state =
mcommon_atomic_int_fetch ((int *) &client->topology->cse_state, mcommon_memory_order_relaxed);
if (state != MONGOC_CSE_STARTING) {
return state == MONGOC_CSE_ENABLED;
}
/* CSE is starting up. Wait until that succeeds or fails. */
bson_thrd_yield ();
}
}
/// Context for creating a new datakey using an existing ClientEncryption state
struct cec_context {
mongoc_client_encryption_t *enc;
const mongoc_client_encryption_datakey_opts_t *dk_opts;
const char *kms_provider;
};
/// Automatically create a new datakey. @see auto_datakey_factory
static bool
_auto_datakey (struct auto_datakey_context *ctx)
{
struct cec_context *cec = ctx->userdata;
return mongoc_client_encryption_create_datakey (
cec->enc, cec->kms_provider, cec->dk_opts, ctx->out_keyid, ctx->out_error);
}
mongoc_collection_t *
mongoc_client_encryption_create_encrypted_collection (mongoc_client_encryption_t *enc,
struct _mongoc_database_t *database,
const char *name,
const bson_t *in_options,
bson_t *opt_out_options,
const char *const kms_provider,
const bson_t *opt_masterkey,
bson_error_t *error)
{
BSON_ASSERT_PARAM (enc);
BSON_ASSERT_PARAM (database);
BSON_ASSERT_PARAM (name);
BSON_ASSERT_PARAM (in_options);
BSON_OPTIONAL_PARAM (opt_out_options);
BSON_ASSERT_PARAM (kms_provider);
BSON_OPTIONAL_PARAM (error);
mongoc_collection_t *ret = NULL;
bson_t in_encryptedFields = BSON_INITIALIZER;
bson_t new_encryptedFields = BSON_INITIALIZER;
bson_t local_new_options = BSON_INITIALIZER;
mongoc_client_encryption_datakey_opts_t *dk_opts = mongoc_client_encryption_datakey_opts_new ();
if (opt_masterkey) {
mongoc_client_encryption_datakey_opts_set_masterkey (dk_opts, opt_masterkey);
}
if (!opt_out_options) {
// We'll use our own storage for the new options
opt_out_options = &local_new_options;
}
// Init the storage. Either inits the caller's copy, or our local version.
bson_init (opt_out_options);
// Look up the encryptedfields that we should use for this collection. They
// may be in the given options, or they may be in the encryptedFieldsMap.
if (!_mongoc_get_collection_encryptedFields (database->client,
mongoc_database_get_name (database),
name,
in_options,
false /* checkEncryptedFieldsMap */,
&in_encryptedFields,
error)) {
// Error finding the encryptedFields
goto done;
}
if (bson_empty (&in_encryptedFields)) {
bson_set_error (error,
MONGOC_ERROR_COMMAND,
MONGOC_ERROR_COMMAND_INVALID_ARG,
"No 'encryptedFields' are defined for the creation of "
"the '%s' collection",
name);
goto done;
}
// Add the keyIds to the encryptedFields.
// Context for the creation of new datakeys:
struct cec_context ctx = {
.enc = enc,
.dk_opts = dk_opts,
.kms_provider = kms_provider,
};
bson_t fields_ref;
bsonVisitEach (in_encryptedFields,
case (
// We only care about the "fields" array
when (not(key ("fields")), appendTo (new_encryptedFields)),
// Automaticall fill in the "keyId" no each field:
else (storeDocRef (fields_ref), do ({
bson_t new_fields = BSON_INITIALIZER;
// Create the new fields, filling out the 'keyId'
// automatically:
if (!_mongoc_encryptedFields_fill_auto_datakeys (
&new_fields, &fields_ref, _auto_datakey, &ctx, error)) {
bsonParseError = "Error creating datakeys";
} else {
BSON_APPEND_ARRAY (&new_encryptedFields, "fields", &new_fields);
bson_destroy (&new_fields);
}
}))));
if (bsonParseError) {
// Error creating the new datakeys.
// `error` was set by _mongoc_encryptedFields_fill_auto_datakeys
goto done;
}
// We've successfully filled out all null keyIds. Now create the collection
// with our new options:
bsonBuild (*opt_out_options,
insert (*in_options, not(key ("encryptedFields"))),
kv ("encryptedFields", bson (new_encryptedFields)));
if (bsonBuildError) {
// Error while building the new options.
bson_set_error (error,
MONGOC_ERROR_BSON,
MONGOC_ERROR_BSON_INVALID,
"Error while building new createCollection options: %s",
bsonBuildError);
goto done;
}
ret = mongoc_database_create_collection (database, name, opt_out_options, error);
done:
bson_destroy (&new_encryptedFields);
bson_destroy (&in_encryptedFields);
mongoc_client_encryption_datakey_opts_destroy (dk_opts);
// Destroy the local options, which may or may not have been used. If unused,
// the new options are now owned by the caller and this is a no-op.
bson_destroy (&local_new_options);
// The resulting collection, or NULL on error:
return ret;
}
#endif /* MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION */
/// Generate one encryptedField element.
static void
_init_1_encryptedField (
bson_t *out_field, const bson_t *in_field, auto_datakey_factory fac, void *fac_userdata, bson_error_t *error)
{
BSON_ASSERT_PARAM (out_field);
BSON_ASSERT_PARAM (in_field);
BSON_ASSERT_PARAM (fac);
BSON_OPTIONAL_PARAM (fac_userdata);
BSON_OPTIONAL_PARAM (error);
bsonVisitEach (*in_field,
// If it is not a "keyId":null element, just copy it to the output.
if (not(keyWithType ("keyId", null)), then (appendTo (*out_field), continue)),
// Otherwise:
do ({
// Set up factory context
bson_value_t new_key = {0};
struct auto_datakey_context ctx = {
.out_keyid = &new_key,
.out_error = error,
.userdata = fac_userdata,
};
// Call the callback to create the new key
if (!fac (&ctx)) {
bsonParseError = "Factory function indicated failure";
} else {
// Append to the field
BSON_APPEND_VALUE (out_field, "keyId", &new_key);
}
bson_value_destroy (&new_key);
}));
}
/// Generate the "encryptedFields" output for auto-datakeys
static void
_init_encryptedFields (
bson_t *out_fields, const bson_t *in_fields, auto_datakey_factory fac, void *fac_userdata, bson_error_t *error)
{
BSON_ASSERT_PARAM (out_fields);
BSON_ASSERT_PARAM (in_fields);
BSON_ASSERT_PARAM (fac);
BSON_OPTIONAL_PARAM (fac_userdata);
BSON_OPTIONAL_PARAM (error);
// Ref to one encyrptedField
bson_t cur_field;
bsonVisitEach (
*in_fields,
// Each field must be a document element
if (not(type (doc)), then (error ("Each 'encryptedFields' element must be a document"))),
// Append a new element with the same name as the field:
storeDocRef (cur_field),
append (*out_fields,
kv (bson_iter_key (&bsonVisitIter),
// Construct the encryptedField document from the input:
doc (do (_init_1_encryptedField (bsonBuildContext.doc, &cur_field, fac, fac_userdata, error))))));
if (error && error->code == 0) {
// The factory/internal code did not set error, so we may have to set it
// for an error while BSON parsing/generating.
if (bsonParseError) {
bson_set_error (
error, MONGOC_ERROR_BSON, MONGOC_ERROR_BSON_INVALID, "Error while generating datakeys: %s", bsonParseError);
}
if (bsonBuildError) {
bson_set_error (
error, MONGOC_ERROR_BSON, MONGOC_ERROR_BSON_INVALID, "Error while generating datakeys: %s", bsonBuildError);
}
}
}
bool
_mongoc_encryptedFields_fill_auto_datakeys (
bson_t *out_fields, const bson_t *in_fields, auto_datakey_factory factory, void *userdata, bson_error_t *error)
{
BSON_ASSERT_PARAM (in_fields);
BSON_ASSERT_PARAM (out_fields);
BSON_ASSERT_PARAM (factory);
if (error) {
- *error = (bson_error_t){0};
+ *error = (bson_error_t) {0};
}
bson_init (out_fields);
_init_encryptedFields (out_fields, in_fields, factory, userdata, error);
// DSL errors will be set in case of failure
return bsonParseError == NULL && bsonBuildError == NULL;
}
const char *
mongoc_client_encryption_get_crypt_shared_version (const mongoc_client_encryption_t *enc)
{
#ifdef MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION
return _mongoc_crypt_get_crypt_shared_version (enc->crypt);
#else
BSON_UNUSED (enc);
return NULL;
#endif
}
const char *
mongoc_client_get_crypt_shared_version (const mongoc_client_t *client)
{
BSON_ASSERT_PARAM (client);
#ifdef MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION
if (!client->topology->crypt) {
return NULL;
}
return _mongoc_crypt_get_crypt_shared_version (client->topology->crypt);
#else
BSON_UNUSED (client);
return NULL;
#endif
}
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.c
similarity index 99%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.c
index 096e0f9b..8525d70d 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.c
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.c
@@ -1,2997 +1,2994 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <bson/bson.h>
#include <mongoc/mongoc-config.h>
#ifdef MONGOC_HAVE_DNSAPI
/* for DnsQuery_UTF8 */
#include <Windows.h>
#include <WinDNS.h>
#include <ws2tcpip.h>
#else
#if defined(MONGOC_HAVE_RES_NSEARCH) || defined(MONGOC_HAVE_RES_SEARCH)
#include <netdb.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/nameser.h>
#include <resolv.h>
#endif
#endif
#include <mongoc/mongoc-client-private.h>
#include <mongoc/mongoc-client-side-encryption-private.h>
#include <mongoc/mongoc-collection-private.h>
#include <mongoc/mongoc-counters-private.h>
#include <mongoc/mongoc-database-private.h>
#include <mongoc/mongoc-gridfs-private.h>
#include <mongoc/mongoc-error.h>
#include <mongoc/mongoc-error-private.h>
#include <mongoc/mongoc-log.h>
#include <mongoc/mongoc-queue-private.h>
#include <mongoc/mongoc-socket.h>
#include <mongoc/mongoc-stream-buffered.h>
#include <mongoc/mongoc-stream-socket.h>
#include <mongoc/mongoc-thread-private.h>
#include <mongoc/mongoc-trace-private.h>
#include <mongoc/mongoc-uri-private.h>
#include <mongoc/mongoc-util-private.h>
#include <mongoc/mongoc-set-private.h>
#include <mongoc/mongoc-log.h>
#include <mongoc/mongoc-write-concern-private.h>
#include <mongoc/mongoc-read-concern-private.h>
#include <mongoc/mongoc-host-list-private.h>
#include <mongoc/mongoc-read-prefs-private.h>
#include <mongoc/mongoc-change-stream-private.h>
#include <mongoc/mongoc-client-session-private.h>
#include <mongoc/mongoc-cursor-private.h>
#include <mongoc/mongoc-structured-log-private.h>
#ifdef MONGOC_ENABLE_SSL
#include <mongoc/mongoc-stream-tls.h>
#include <mongoc/mongoc-ssl-private.h>
#include <mongoc/mongoc-cmd-private.h>
#include <mongoc/mongoc-opts-private.h>
#endif
#if defined(MONGOC_ENABLE_SSL_OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x10100000L
#include <mongoc/mongoc-openssl-private.h>
#include <mongoc/mongoc-stream-tls-private.h>
#endif
#include <common-string-private.h>
#include <common-cmp-private.h>
#include <inttypes.h>
#undef MONGOC_LOG_DOMAIN
#define MONGOC_LOG_DOMAIN "client"
static void
_mongoc_client_op_killcursors (mongoc_cluster_t *cluster,
mongoc_server_stream_t *server_stream,
int64_t cursor_id,
int64_t operation_id,
const char *db,
const char *collection);
static void
_mongoc_client_killcursors_command (mongoc_cluster_t *cluster,
mongoc_server_stream_t *server_stream,
int64_t cursor_id,
const char *db,
const char *collection,
mongoc_client_session_t *cs);
#define DNS_ERROR(_msg, ...) \
do { \
bson_set_error (error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_NAME_RESOLUTION, _msg, __VA_ARGS__); \
GOTO (done); \
} while (0)
#if MONGOC_ENABLE_SRV == 0 // ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ENABLE_SRV disabled
/* SRV support is disabled */
#elif defined(MONGOC_HAVE_DNSAPI) // ↑↑↑ ENABLE_SRV disabled / Win32 Dnsapi ↓↓↓↓
typedef bool (*mongoc_rr_callback_t) (const char *hostname,
PDNS_RECORD pdns,
mongoc_rr_data_t *rr_data,
bson_error_t *error);
static bool
srv_callback (const char *hostname, PDNS_RECORD pdns, mongoc_rr_data_t *rr_data, bson_error_t *error)
{
mongoc_host_list_t new_host;
if (rr_data && rr_data->hosts) {
_mongoc_host_list_remove_host (&(rr_data->hosts), pdns->Data.SRV.pNameTarget, pdns->Data.SRV.wPort);
}
if (!_mongoc_host_list_from_hostport_with_err (&new_host, pdns->Data.SRV.pNameTarget, pdns->Data.SRV.wPort, error)) {
return false;
}
_mongoc_host_list_upsert (&rr_data->hosts, &new_host);
return true;
}
/* rr_data is unused, but here to match srv_callback signature */
static bool
txt_callback (const char *hostname, PDNS_RECORD pdns, mongoc_rr_data_t *rr_data, bson_error_t *error)
{
DWORD i;
mcommon_string_append_t txt;
mcommon_string_new_with_capacity_as_append (&txt, pdns->wDataLength);
for (i = 0; i < pdns->Data.TXT.dwStringCount; i++) {
mcommon_string_append (&txt, pdns->Data.TXT.pStringArray[i]);
}
rr_data->txt_record_opts = mcommon_string_from_append_destroy_with_steal (&txt);
return true;
}
/*
*--------------------------------------------------------------------------
*
* _mongoc_get_rr_dnsapi --
*
* Fetch SRV or TXT resource records using the Windows DNS API and
* put results in @rr_data.
*
* Returns:
* Success or failure.
*
* For an SRV lookup, returns false if there is any error.
*
* For TXT lookup, ignores any error fetching the resource record and
* always returns true.
*
* Side effects:
* @error is set if there is a failure.
* @rr_data->hosts may be set if querying SRV. Caller must destroy.
* @rr_data->txt_record_opts may be set if querying TXT. Caller must
* free.
*
*--------------------------------------------------------------------------
*/
static bool
_mongoc_get_rr_dnsapi (
const char *hostname, mongoc_rr_type_t rr_type, mongoc_rr_data_t *rr_data, bool prefer_tcp, bson_error_t *error)
{
const char *rr_type_name;
WORD nst;
mongoc_rr_callback_t callback;
PDNS_RECORD pdns = NULL;
DNS_STATUS res;
LPVOID lpMsgBuf = NULL;
bool dns_success;
bool callback_success = true;
int i;
ENTRY;
if (rr_type == MONGOC_RR_SRV) {
/* return true only if DNS succeeds */
dns_success = false;
rr_type_name = "SRV";
nst = DNS_TYPE_SRV;
callback = srv_callback;
} else {
/* return true whether or not DNS succeeds */
dns_success = true;
rr_type_name = "TXT";
nst = DNS_TYPE_TEXT;
callback = txt_callback;
}
DWORD options = DNS_QUERY_BYPASS_CACHE;
if (prefer_tcp) {
options |= DNS_QUERY_USE_TCP_ONLY;
}
res = DnsQuery_UTF8 (hostname, nst, options, NULL /* IP Address */, &pdns, 0 /* reserved */);
if (res) {
- DWORD flags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS;
-
- if (FormatMessage (flags, 0, res, MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, 0)) {
- DNS_ERROR ("Failed to look up %s record \"%s\": %s", rr_type_name, hostname, (char *) lpMsgBuf);
- }
-
- DNS_ERROR ("Failed to look up %s record \"%s\": Unknown error", rr_type_name, hostname);
+ // Cast signed DNS_STATUS to unsigned DWORD. FormatMessage expects DWORD.
+ char *msg = mongoc_winerr_to_string ((DWORD) res);
+ DNS_ERROR ("Failed to look up %s record \"%s\": %s", rr_type_name, hostname, msg);
+ bson_free (msg);
}
if (!pdns) {
DNS_ERROR ("No %s records for \"%s\"", rr_type_name, hostname);
}
i = 0;
do {
/* DnsQuery can return additional records not of the requested type */
if ((rr_type == MONGOC_RR_TXT && pdns->wType == DNS_TYPE_TEXT) ||
(rr_type == MONGOC_RR_SRV && pdns->wType == DNS_TYPE_SRV)) {
if (i > 0 && rr_type == MONGOC_RR_TXT) {
/* Initial DNS Seedlist Discovery Spec: a client "MUST raise an
error when multiple TXT records are encountered". */
callback_success = false;
DNS_ERROR ("Multiple TXT records for \"%s\"", hostname);
}
if (rr_data) {
if ((i == 0) || (pdns->dwTtl < rr_data->min_ttl)) {
rr_data->min_ttl = pdns->dwTtl;
}
}
if (!callback (hostname, pdns, rr_data, error)) {
callback_success = false;
GOTO (done);
}
i++;
}
pdns = pdns->pNext;
} while (pdns);
rr_data->count = i;
if (i == 0) {
DNS_ERROR ("No matching %s records for \"%s\"", rr_type_name, hostname);
}
dns_success = true;
done:
if (pdns) {
DnsRecordListFree (pdns, DnsFreeRecordList);
}
if (lpMsgBuf) {
LocalFree (lpMsgBuf);
}
RETURN (dns_success && callback_success);
}
#elif (defined(MONGOC_HAVE_RES_NSEARCH) || defined(MONGOC_HAVE_RES_SEARCH)) // ↑↑↑↑↑↑↑ Win32 Dnsapi / resolv ↓↓↓↓↓↓↓↓
typedef bool (*mongoc_rr_callback_t) (
const char *hostname, ns_msg *ns_answer, ns_rr *rr, mongoc_rr_data_t *rr_data, bson_error_t *error);
static const char *
_mongoc_hstrerror (int code)
{
switch (code) {
case HOST_NOT_FOUND:
return "The specified host is unknown.";
case NO_ADDRESS:
return "The requested name is valid but does not have an IP address.";
case NO_RECOVERY:
return "A nonrecoverable name server error occurred.";
case TRY_AGAIN:
return "A temporary error occurred on an authoritative name server. Try "
"again later.";
default:
return "An unknown error occurred.";
}
}
static bool
srv_callback (const char *hostname, ns_msg *ns_answer, ns_rr *rr, mongoc_rr_data_t *rr_data, bson_error_t *error)
{
const uint8_t *data;
char name[1024];
uint16_t port;
int size;
bool ret = false;
mongoc_host_list_t new_host;
data = ns_rr_rdata (*rr);
/* memcpy the network endian port before converting to host endian. we cannot
* cast (data + 4) directly as a uint16_t*, because it may not align on an
* 2-byte boundary. */
memcpy (&port, data + 4, sizeof (port));
port = ntohs (port);
size = dn_expand (ns_msg_base (*ns_answer), ns_msg_end (*ns_answer), data + 6, name, sizeof (name));
if (size < 1) {
DNS_ERROR ("Invalid record in SRV answer for \"%s\": \"%s\"", hostname, _mongoc_hstrerror (h_errno));
}
if (!_mongoc_host_list_from_hostport_with_err (&new_host, name, port, error)) {
GOTO (done);
}
_mongoc_host_list_upsert (&rr_data->hosts, &new_host);
ret = true;
done:
return ret;
}
static bool
txt_callback (const char *hostname, ns_msg *ns_answer, ns_rr *rr, mongoc_rr_data_t *rr_data, bson_error_t *error)
{
bool ret = false;
BSON_UNUSED (ns_answer);
uint16_t total = (uint16_t) ns_rr_rdlen (*rr);
if (total < 1 || total > 255) {
DNS_ERROR ("Invalid TXT record size %hu for \"%s\"", total, hostname);
}
/* a TXT record has one or more strings, each up to 255 chars, each is prefixed by its length as 1 byte.
* In this usage, they are all concatenated without any spacers. */
mcommon_string_append_t txt;
mcommon_string_new_with_capacity_as_append (&txt, total);
uint16_t pos = 0;
const uint8_t *data = ns_rr_rdata (*rr);
while (pos < total) {
uint8_t len = data[pos++];
if (total - pos < (uint16_t) len) {
DNS_ERROR ("Invalid TXT string size %hu at %hu in %hu-byte TXT record for \"%s\"",
(uint16_t) len,
pos,
total,
hostname);
}
mcommon_string_append_bytes (&txt, (const char *) (data + pos), (uint32_t) len);
pos += len;
}
rr_data->txt_record_opts = mcommon_string_from_append_destroy_with_steal (&txt);
ret = true;
done:
return ret;
}
/*
*--------------------------------------------------------------------------
*
* _mongoc_get_rr_search --
*
* Fetch SRV or TXT resource records using libresolv and put results in
* @rr_data.
*
* Returns:
* Success or failure.
*
* For an SRV lookup, returns false if there is any error.
*
* For TXT lookup, ignores any error fetching the resource record and
* always returns true.
*
* Side effects:
* @error is set if there is a failure.
* @rr_data->hosts may be set if querying SRV. Caller must destroy.
* @rr_data->txt_record_opts may be set if querying TXT. Caller must
* free.
*
*--------------------------------------------------------------------------
*/
static bool
_mongoc_get_rr_search (const char *hostname,
mongoc_rr_type_t rr_type,
mongoc_rr_data_t *rr_data,
size_t initial_buffer_size,
bool prefer_tcp,
bson_error_t *error)
{
#ifdef MONGOC_HAVE_RES_NSEARCH
struct __res_state state = {0};
#endif
int size = 0;
unsigned char *search_buf = NULL;
size_t buffer_size = initial_buffer_size;
ns_msg ns_answer;
int n;
int i;
const char *rr_type_name;
ns_type nst;
mongoc_rr_callback_t callback;
ns_rr resource_record;
bool dns_success;
bool callback_success = true;
int num_matching_records;
uint32_t ttl;
ENTRY;
if (rr_type == MONGOC_RR_SRV) {
/* return true only if DNS succeeds */
dns_success = false;
rr_type_name = "SRV";
nst = ns_t_srv;
callback = srv_callback;
} else {
/* return true whether or not DNS succeeds */
dns_success = true;
rr_type_name = "TXT";
nst = ns_t_txt;
callback = txt_callback;
}
do {
if (search_buf) {
bson_free (search_buf);
/* increase buffer size by the previous response size. This ensures
* that even if a subsequent response is larger, we'll still be able
* to fit it in the response buffer */
buffer_size = buffer_size + size;
}
search_buf = (unsigned char *) bson_malloc (buffer_size);
BSON_ASSERT (search_buf);
#ifdef MONGOC_HAVE_RES_NSEARCH
/* thread-safe */
res_ninit (&state);
if (prefer_tcp) {
state.options |= RES_USEVC;
}
size = res_nsearch (&state, hostname, ns_c_in, nst, search_buf, buffer_size);
#elif defined(MONGOC_HAVE_RES_SEARCH)
size = res_search (hostname, ns_c_in, nst, search_buf, buffer_size);
#endif
if (size < 0) {
DNS_ERROR ("Failed to look up %s record \"%s\": %s", rr_type_name, hostname, _mongoc_hstrerror (h_errno));
}
} while (size >= buffer_size);
if (ns_initparse (search_buf, size, &ns_answer)) {
DNS_ERROR ("Invalid %s answer for \"%s\"", rr_type_name, hostname);
}
n = ns_msg_count (ns_answer, ns_s_an);
if (!n) {
DNS_ERROR ("No %s records for \"%s\"", rr_type_name, hostname);
}
rr_data->count = n;
num_matching_records = 0;
for (i = 0; i < n; i++) {
if (ns_parserr (&ns_answer, ns_s_an, i, &resource_record)) {
DNS_ERROR ("Invalid record %d of %s answer for \"%s\": \"%s\"",
i,
rr_type_name,
hostname,
_mongoc_hstrerror (h_errno));
}
/* Skip records that don't match the ones we requested. CDRIVER-3628 shows
* that we can receive records that were not requested. */
if (rr_type == MONGOC_RR_TXT) {
if (ns_rr_type (resource_record) != ns_t_txt) {
continue;
}
} else if (rr_type == MONGOC_RR_SRV) {
if (ns_rr_type (resource_record) != ns_t_srv) {
continue;
}
}
if (num_matching_records > 0 && rr_type == MONGOC_RR_TXT) {
/* Initial DNS Seedlist Discovery Spec: a client "MUST raise an error
* when multiple TXT records are encountered". */
callback_success = false;
DNS_ERROR ("Multiple TXT records for \"%s\"", hostname);
}
num_matching_records++;
ttl = ns_rr_ttl (resource_record);
if ((i == 0) || (ttl < rr_data->min_ttl)) {
rr_data->min_ttl = ttl;
}
if (!callback (hostname, &ns_answer, &resource_record, rr_data, error)) {
callback_success = false;
GOTO (done);
}
}
if (num_matching_records == 0) {
DNS_ERROR ("No matching %s records for \"%s\"", rr_type_name, hostname);
}
dns_success = true;
done:
bson_free (search_buf);
#ifdef MONGOC_HAVE_RES_NDESTROY
/* defined on BSD/Darwin, and only if MONGOC_HAVE_RES_NSEARCH is defined */
res_ndestroy (&state);
#elif defined(MONGOC_HAVE_RES_NCLOSE)
/* defined on Linux, and only if MONGOC_HAVE_RES_NSEARCH is defined */
res_nclose (&state);
#endif
RETURN (dns_success && callback_success);
}
#endif // ↑↑↑↑↑↑↑↑↑↑↑↑↑ resolv
/*
*--------------------------------------------------------------------------
*
* _mongoc_client_get_rr --
*
* Fetch an SRV or TXT resource record and update put results in
* @rr_data.
*
* See RFCs 1464 and 2782, MongoDB's "Initial DNS Seedlist Discovery"
* spec, and MongoDB's "Polling SRV Records for Mongos Discovery"
* spec.
*
* Returns:
* Success or failure.
*
* Side effects:
* @error is set if there is a failure. Errors fetching TXT are
* ignored.
* @rr_data->hosts may be set if querying SRV. Caller must destroy.
* @rr_data->txt_record_opts may be set if querying TXT. Caller must
* free.
*
*--------------------------------------------------------------------------
*/
bool
_mongoc_client_get_rr (const char *hostname,
mongoc_rr_type_t rr_type,
mongoc_rr_data_t *rr_data,
size_t initial_buffer_size,
bool prefer_tcp,
bson_error_t *error)
{
BSON_ASSERT (rr_data);
#if MONGOC_ENABLE_SRV == 0
// Disabled
bson_set_error (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_NAME_RESOLUTION,
"libresolv unavailable, cannot use mongodb+srv URI");
return false;
#elif defined(MONGOC_HAVE_DNSAPI)
return _mongoc_get_rr_dnsapi (hostname, rr_type, rr_data, prefer_tcp, error);
#elif (defined(MONGOC_HAVE_RES_NSEARCH) || defined(MONGOC_HAVE_RES_SEARCH))
return _mongoc_get_rr_search (hostname, rr_type, rr_data, initial_buffer_size, prefer_tcp, error);
#else
#error No SRV library is available, but ENABLE_SRV is true!
#endif
}
#undef DNS_ERROR
/*
*--------------------------------------------------------------------------
*
* mongoc_client_connect_tcp --
*
* Connect to a host using a TCP socket.
*
* This will be performed synchronously and return a mongoc_stream_t
* that can be used to connect with the remote host.
*
* Returns:
* A newly allocated mongoc_stream_t if successful; otherwise
* NULL and @error is set.
*
* Side effects:
* @error is set if return value is NULL.
*
*--------------------------------------------------------------------------
*/
mongoc_stream_t *
mongoc_client_connect_tcp (int32_t connecttimeoutms, const mongoc_host_list_t *host, bson_error_t *error)
{
mongoc_socket_t *sock = NULL;
struct addrinfo hints;
struct addrinfo *result, *rp;
int64_t expire_at;
char portstr[8];
int s;
ENTRY;
BSON_ASSERT (connecttimeoutms);
BSON_ASSERT (host);
// Expect no truncation.
int req = bson_snprintf (portstr, sizeof portstr, "%hu", host->port);
BSON_ASSERT (mcommon_cmp_less_su (req, sizeof portstr));
memset (&hints, 0, sizeof hints);
hints.ai_family = host->family;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = 0;
hints.ai_protocol = 0;
TRACE ("DNS lookup for %s", host->host);
s = getaddrinfo (host->host, portstr, &hints, &result);
if (s != 0) {
mongoc_counter_dns_failure_inc ();
TRACE ("Failed to resolve %s", host->host);
bson_set_error (
error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_NAME_RESOLUTION, "Failed to resolve %s", host->host);
RETURN (NULL);
}
mongoc_counter_dns_success_inc ();
for (rp = result; rp; rp = rp->ai_next) {
/*
* Create a new non-blocking socket.
*/
if (!(sock = mongoc_socket_new (rp->ai_family, rp->ai_socktype, rp->ai_protocol))) {
continue;
}
/*
* Try to connect to the peer.
*/
expire_at = bson_get_monotonic_time () + (connecttimeoutms * 1000L);
if (0 != mongoc_socket_connect (sock, rp->ai_addr, (mongoc_socklen_t) rp->ai_addrlen, expire_at)) {
mongoc_socket_destroy (sock);
sock = NULL;
continue;
}
break;
}
if (!sock) {
bson_set_error (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_CONNECT,
"Failed to connect to target host: %s",
host->host_and_port);
freeaddrinfo (result);
RETURN (NULL);
}
freeaddrinfo (result);
return mongoc_stream_socket_new (sock);
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_connect_unix --
*
* Connect to a MongoDB server using a UNIX domain socket.
*
* Returns:
* A newly allocated mongoc_stream_t if successful; otherwise
* NULL and @error is set.
*
* Side effects:
* @error is set if return value is NULL.
*
*--------------------------------------------------------------------------
*/
static mongoc_stream_t *
mongoc_client_connect_unix (const mongoc_host_list_t *host, bson_error_t *error)
{
#ifdef _WIN32
ENTRY;
bson_set_error (
error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_CONNECT, "UNIX domain sockets not supported on win32.");
RETURN (NULL);
#else
struct sockaddr_un saddr;
mongoc_socket_t *sock;
mongoc_stream_t *ret = NULL;
ENTRY;
BSON_ASSERT (host);
memset (&saddr, 0, sizeof saddr);
saddr.sun_family = AF_UNIX;
// Expect no truncation.
int req = bson_snprintf (saddr.sun_path, sizeof saddr.sun_path - 1, "%s", host->host);
if (mcommon_cmp_greater_equal_su (req, sizeof saddr.sun_path - 1)) {
bson_set_error (error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_SOCKET, "Failed to define socket address path.");
RETURN (NULL);
}
sock = mongoc_socket_new (AF_UNIX, SOCK_STREAM, 0);
if (sock == NULL) {
bson_set_error (error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_SOCKET, "Failed to create socket.");
RETURN (NULL);
}
if (-1 == mongoc_socket_connect (sock, (struct sockaddr *) &saddr, sizeof saddr, -1)) {
mongoc_socket_destroy (sock);
bson_set_error (
error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_CONNECT, "Failed to connect to UNIX domain socket.");
RETURN (NULL);
}
ret = mongoc_stream_socket_new (sock);
RETURN (ret);
#endif
}
mongoc_stream_t *
mongoc_client_connect (bool buffered,
bool use_ssl,
void *ssl_opts_void,
const mongoc_uri_t *uri,
const mongoc_host_list_t *host,
void *openssl_ctx_void,
bson_error_t *error)
{
mongoc_stream_t *base_stream = NULL;
int32_t connecttimeoutms;
BSON_ASSERT (uri);
BSON_ASSERT (host);
#ifndef MONGOC_ENABLE_SSL
if (ssl_opts_void || mongoc_uri_get_tls (uri)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_NO_ACCEPTABLE_PEER,
"TLS is not enabled in this build of mongo-c-driver.");
return NULL;
}
#endif
connecttimeoutms =
mongoc_uri_get_option_as_int32 (uri, MONGOC_URI_CONNECTTIMEOUTMS, MONGOC_DEFAULT_CONNECTTIMEOUTMS);
switch (host->family) {
case AF_UNSPEC:
#if defined(AF_INET6)
case AF_INET6:
#endif
case AF_INET:
base_stream = mongoc_client_connect_tcp (connecttimeoutms, host, error);
break;
case AF_UNIX:
base_stream = mongoc_client_connect_unix (host, error);
break;
default:
bson_set_error (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_INVALID_TYPE,
"Invalid address family: 0x%02x",
(unsigned int) host->family);
break;
}
#ifdef MONGOC_ENABLE_SSL
if (base_stream) {
mongoc_ssl_opt_t *ssl_opts;
const char *mechanism;
ssl_opts = (mongoc_ssl_opt_t *) ssl_opts_void;
mechanism = mongoc_uri_get_auth_mechanism (uri);
if (use_ssl || (mechanism && (0 == strcmp (mechanism, "MONGODB-X509")))) {
mongoc_stream_t *original = base_stream;
#if defined(MONGOC_ENABLE_SSL_OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x10100000L
// Use shared OpenSSL context.
base_stream = mongoc_stream_tls_new_with_hostname_and_openssl_context (
base_stream, host->host, ssl_opts, true, (SSL_CTX *) openssl_ctx_void);
#else
base_stream = mongoc_stream_tls_new_with_hostname (base_stream, host->host, ssl_opts, true);
#endif
if (!base_stream) {
mongoc_stream_destroy (original);
bson_set_error (error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_SOCKET, "Failed initialize TLS state.");
return NULL;
}
if (!mongoc_stream_tls_handshake_block (base_stream, host->host, connecttimeoutms, error)) {
mongoc_stream_destroy (base_stream);
return NULL;
}
}
}
#endif
if (!base_stream) {
return NULL;
}
if (buffered) {
return mongoc_stream_buffered_new (base_stream, 1024);
}
return base_stream;
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_default_stream_initiator --
*
* A mongoc_stream_initiator_t that will handle the various type
* of supported sockets by MongoDB including TCP and UNIX.
*
* Also supports sharing of OpenSSL context owned by a client.
*
* Language binding authors may want to implement an alternate
* version of this method to use their native stream format.
*
* Returns:
* A mongoc_stream_t if successful; otherwise NULL and @error is set.
*
* Side effects:
* @error is set if return value is NULL.
*
*--------------------------------------------------------------------------
*/
mongoc_stream_t *
mongoc_client_default_stream_initiator (const mongoc_uri_t *uri,
const mongoc_host_list_t *host,
void *user_data,
bson_error_t *error)
{
void *ssl_opts_void = NULL;
bool use_ssl = false;
#ifdef MONGOC_ENABLE_SSL
mongoc_client_t *client = (mongoc_client_t *) user_data;
use_ssl = client->use_ssl;
ssl_opts_void = (void *) &client->ssl_opts;
#endif
#if defined(MONGOC_ENABLE_SSL_OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x10100000L
SSL_CTX *ssl_ctx = client->topology->scanner->openssl_ctx;
return mongoc_client_connect (true, use_ssl, ssl_opts_void, uri, host, (void *) ssl_ctx, error);
#else
return mongoc_client_connect (true, use_ssl, ssl_opts_void, uri, host, NULL, error);
#endif
}
/*
*--------------------------------------------------------------------------
*
* _mongoc_client_create_stream --
*
* INTERNAL API
*
* This function is used by the mongoc_cluster_t to initiate a
* new stream. This is done because cluster is private API and
* those using mongoc_client_t may need to override this process.
*
* This function calls the default initiator for new streams.
*
* Returns:
* A newly allocated mongoc_stream_t if successful; otherwise
* NULL and @error is set.
*
* Side effects:
* @error is set if return value is NULL.
*
*--------------------------------------------------------------------------
*/
mongoc_stream_t *
_mongoc_client_create_stream (mongoc_client_t *client, const mongoc_host_list_t *host, bson_error_t *error)
{
BSON_ASSERT_PARAM (client);
BSON_ASSERT (host);
return client->initiator (client->uri, host, client->initiator_data, error);
}
bool
_mongoc_client_recv (mongoc_client_t *client,
mcd_rpc_message *rpc,
mongoc_buffer_t *buffer,
mongoc_server_stream_t *server_stream,
bson_error_t *error)
{
BSON_ASSERT_PARAM (client);
BSON_ASSERT (rpc);
BSON_ASSERT (buffer);
BSON_ASSERT (server_stream);
BSON_ASSERT_PARAM (error);
return mongoc_cluster_try_recv (&client->cluster, rpc, buffer, server_stream, error);
}
mongoc_client_t *
mongoc_client_new (const char *uri_string)
{
mongoc_client_t *client;
mongoc_uri_t *uri;
bson_error_t error = {0};
if (!uri_string) {
uri_string = "mongodb://127.0.0.1/";
}
if (!(uri = mongoc_uri_new_with_error (uri_string, &error))) {
/* Log URI errors as a warning for consistency with mongoc_uri_new */
MONGOC_WARNING ("Error parsing URI: '%s'", error.message);
return NULL;
}
if (!(client = mongoc_client_new_from_uri_with_error (uri, &error))) {
MONGOC_ERROR ("%s", error.message);
}
mongoc_uri_destroy (uri);
return client;
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_set_ssl_opts
*
* set ssl opts for a client
*
* Returns:
* Nothing
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
#ifdef MONGOC_ENABLE_SSL
/* Only called internally. Caller must ensure opts->internal is valid. */
void
_mongoc_client_set_internal_tls_opts (mongoc_client_t *client, _mongoc_internal_tls_opts_t *internal)
{
BSON_ASSERT_PARAM (client);
if (!client->use_ssl) {
return;
}
client->ssl_opts.internal = bson_malloc (sizeof (_mongoc_internal_tls_opts_t));
memcpy (client->ssl_opts.internal, internal, sizeof (_mongoc_internal_tls_opts_t));
}
void
mongoc_client_set_ssl_opts (mongoc_client_t *client, const mongoc_ssl_opt_t *opts)
{
BSON_ASSERT_PARAM (client);
BSON_ASSERT (opts);
_mongoc_ssl_opts_cleanup (&client->ssl_opts, false /* don't free internal opts */);
client->use_ssl = true;
_mongoc_ssl_opts_copy_to (opts, &client->ssl_opts, false /* don't overwrite internal opts */);
if (client->topology->single_threaded) {
mongoc_topology_scanner_set_ssl_opts (client->topology->scanner, &client->ssl_opts);
/* Update the OpenSSL context associated with this client to match new ssl opts. */
/* Active connections previously made by client can still access original OpenSSL context. */
#if defined(MONGOC_ENABLE_SSL_OPENSSL) && OPENSSL_VERSION_NUMBER >= 0x10100000L
SSL_CTX_free (client->topology->scanner->openssl_ctx);
client->topology->scanner->openssl_ctx = _mongoc_openssl_ctx_new (&client->ssl_opts);
#endif
}
}
#endif
mongoc_client_t *
mongoc_client_new_from_uri (const mongoc_uri_t *uri)
{
mongoc_client_t *client;
bson_error_t error = {0};
if (!(client = mongoc_client_new_from_uri_with_error (uri, &error))) {
MONGOC_ERROR ("%s", error.message);
}
return client;
}
mongoc_client_t *
mongoc_client_new_from_uri_with_error (const mongoc_uri_t *uri, bson_error_t *error)
{
mongoc_client_t *client;
mongoc_topology_t *topology;
ENTRY;
BSON_ASSERT (uri);
#ifndef MONGOC_ENABLE_SSL
if (mongoc_uri_get_tls (uri)) {
bson_set_error (error,
MONGOC_ERROR_COMMAND,
MONGOC_ERROR_COMMAND_INVALID_ARG,
"Can't create SSL client, SSL not enabled in this build.");
RETURN (NULL);
}
#endif
topology = mongoc_topology_new (uri, true);
if (!topology->valid) {
if (error) {
memcpy (error, &topology->scanner->error, sizeof (bson_error_t));
}
mongoc_topology_destroy (topology);
RETURN (NULL);
}
client = _mongoc_client_new_from_topology (topology);
BSON_ASSERT (client);
RETURN (client);
}
/* precondition: topology is valid */
mongoc_client_t *
_mongoc_client_new_from_topology (mongoc_topology_t *topology)
{
mongoc_client_t *client;
const mongoc_read_prefs_t *read_prefs;
const mongoc_read_concern_t *read_concern;
const mongoc_write_concern_t *write_concern;
const char *appname;
BSON_ASSERT (topology);
BSON_ASSERT (topology->valid);
client = (mongoc_client_t *) bson_malloc0 (sizeof *client);
client->uri = mongoc_uri_copy (topology->uri);
client->initiator = mongoc_client_default_stream_initiator;
client->initiator_data = client;
client->topology = topology;
client->error_api_version = MONGOC_ERROR_API_VERSION_LEGACY;
client->error_api_set = false;
client->client_sessions = mongoc_set_new (8, NULL, NULL);
client->csid_rand_seed = (unsigned int) bson_get_monotonic_time ();
write_concern = mongoc_uri_get_write_concern (client->uri);
client->write_concern = mongoc_write_concern_copy (write_concern);
read_concern = mongoc_uri_get_read_concern (client->uri);
client->read_concern = mongoc_read_concern_copy (read_concern);
read_prefs = mongoc_uri_get_read_prefs_t (client->uri);
client->read_prefs = mongoc_read_prefs_copy (read_prefs);
appname = mongoc_uri_get_option_as_utf8 (client->uri, MONGOC_URI_APPNAME, NULL);
if (appname && client->topology->single_threaded) {
/* the appname should have already been validated */
BSON_ASSERT (mongoc_client_set_appname (client, appname));
}
mongoc_cluster_init (&client->cluster, client->uri, client);
#ifdef MONGOC_ENABLE_SSL
client->use_ssl = false;
if (mongoc_uri_get_tls (client->uri)) {
mongoc_ssl_opt_t ssl_opt = {0};
_mongoc_internal_tls_opts_t internal_tls_opts = {0};
_mongoc_ssl_opts_from_uri (&ssl_opt, &internal_tls_opts, client->uri);
/* sets use_ssl = true */
/* this call creates an ssl ctx only if single-threaded, otherwise client inherits from pool */
mongoc_client_set_ssl_opts (client, &ssl_opt);
_mongoc_client_set_internal_tls_opts (client, &internal_tls_opts);
}
#endif
mongoc_structured_log (topology->log_and_monitor.structured_log,
MONGOC_STRUCTURED_LOG_LEVEL_DEBUG,
MONGOC_STRUCTURED_LOG_COMPONENT_CONNECTION,
"Client created");
mongoc_counter_clients_active_inc ();
return client;
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_destroy --
*
* Destroys a mongoc_client_t and cleans up all resources associated
* with the client instance.
*
* Returns:
* None.
*
* Side effects:
* @client is destroyed.
*
*--------------------------------------------------------------------------
*/
void
mongoc_client_destroy (mongoc_client_t *client)
{
if (client) {
if (client->topology->single_threaded) {
_mongoc_client_end_sessions (client);
mongoc_topology_destroy (client->topology);
}
mongoc_write_concern_destroy (client->write_concern);
mongoc_read_concern_destroy (client->read_concern);
mongoc_read_prefs_destroy (client->read_prefs);
mongoc_cluster_destroy (&client->cluster);
mongoc_uri_destroy (client->uri);
mongoc_set_destroy (client->client_sessions);
mongoc_server_api_destroy (client->api);
#ifdef MONGOC_ENABLE_SSL
_mongoc_ssl_opts_cleanup (&client->ssl_opts, true);
#endif
bson_free (client);
mongoc_counter_clients_active_dec ();
mongoc_counter_clients_disposed_inc ();
}
}
void
mongoc_client_set_sockettimeoutms (mongoc_client_t *client, int32_t timeoutms)
{
BSON_ASSERT_PARAM (client);
mongoc_cluster_set_sockettimeoutms (&client->cluster, timeoutms);
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_get_uri --
*
* Fetch the URI used for @client.
*
* Returns:
* A mongoc_uri_t that should not be modified or freed.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
const mongoc_uri_t *
mongoc_client_get_uri (const mongoc_client_t *client)
{
BSON_ASSERT_PARAM (client);
return client->uri;
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_start_session --
*
* Creates a structure to communicate in a session over @client.
*
* This structure should be freed when the caller is done with it
* using mongoc_client_session_destroy().
*
* Returns:
* A newly allocated mongoc_client_session_t.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
mongoc_client_session_t *
mongoc_client_start_session (mongoc_client_t *client, const mongoc_session_opt_t *opts, bson_error_t *error)
{
BSON_ASSERT_PARAM (client);
mongoc_server_session_t *ss;
mongoc_client_session_t *cs;
uint32_t csid;
ENTRY;
const mongoc_ss_log_context_t ss_log_context = {.operation = "startSession"};
ss = _mongoc_client_pop_server_session (client, &ss_log_context, error);
if (!ss) {
RETURN (NULL);
}
/* get a random internal id for the session, retrying on collision */
do {
csid = (uint32_t) _mongoc_rand_simple (&client->csid_rand_seed);
} while (mongoc_set_get (client->client_sessions, csid));
/* causal consistency and snapshot cannot both be set. */
if (opts && mongoc_session_opts_get_causal_consistency (opts) && mongoc_session_opts_get_snapshot (opts)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_SESSION_FAILURE,
"Only one of causal consistency and snapshot can be enabled.");
_mongoc_client_push_server_session (client, ss);
RETURN (NULL);
}
cs = _mongoc_client_session_new (client, ss, opts, csid);
/* remember session so if we see its client_session_id in a command, we can
* find its lsid and clusterTime */
mongoc_set_add (client->client_sessions, csid, cs);
RETURN (cs);
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_get_database --
*
* Fetches a newly allocated database structure to communicate with
* a database over @client.
*
* @database should be a db name such as "test".
*
* This structure should be freed when the caller is done with it
* using mongoc_database_destroy().
*
* Returns:
* A newly allocated mongoc_database_t.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
mongoc_database_t *
mongoc_client_get_database (mongoc_client_t *client, const char *name)
{
BSON_ASSERT_PARAM (client);
BSON_ASSERT (name);
return _mongoc_database_new (client, name, client->read_prefs, client->read_concern, client->write_concern);
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_get_default_database --
*
* Get the database named in the MongoDB connection URI, or NULL
* if none was specified in the URI.
*
* This structure should be freed when the caller is done with it
* using mongoc_database_destroy().
*
* Returns:
* A newly allocated mongoc_database_t or NULL.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
mongoc_database_t *
mongoc_client_get_default_database (mongoc_client_t *client)
{
const char *db;
BSON_ASSERT_PARAM (client);
db = mongoc_uri_get_database (client->uri);
if (db) {
return mongoc_client_get_database (client, db);
}
return NULL;
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_get_collection --
*
* This function returns a newly allocated collection structure.
*
* @db should be the name of the database, such as "test".
* @collection should be the name of the collection such as "test".
*
* The above would result in the namespace "test.test".
*
* You should free this structure when you are done with it using
* mongoc_collection_destroy().
*
* Returns:
* A newly allocated mongoc_collection_t that should be freed with
* mongoc_collection_destroy().
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
mongoc_collection_t *
mongoc_client_get_collection (mongoc_client_t *client, const char *db, const char *collection)
{
BSON_ASSERT_PARAM (client);
BSON_ASSERT (db);
BSON_ASSERT (collection);
return _mongoc_collection_new (
client, db, collection, client->read_prefs, client->read_concern, client->write_concern);
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_get_gridfs --
*
* This function returns a newly allocated collection structure.
*
* @db should be the name of the database, such as "test".
*
* @prefix optional prefix for GridFS collection names, or NULL. Default
* is "fs", thus the default collection names for GridFS are "fs.files"
* and "fs.chunks".
*
* Returns:
* A newly allocated mongoc_gridfs_t that should be freed with
* mongoc_gridfs_destroy().
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
mongoc_gridfs_t *
mongoc_client_get_gridfs (mongoc_client_t *client, const char *db, const char *prefix, bson_error_t *error)
{
BSON_ASSERT_PARAM (client);
BSON_ASSERT (db);
if (!prefix) {
prefix = "fs";
}
return _mongoc_gridfs_new (client, db, prefix, error);
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_get_write_concern --
*
* Fetches the default write concern for @client.
*
* Returns:
* A mongoc_write_concern_t that should not be modified or freed.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
const mongoc_write_concern_t *
mongoc_client_get_write_concern (const mongoc_client_t *client)
{
BSON_ASSERT_PARAM (client);
return client->write_concern;
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_set_write_concern --
*
* Sets the default write concern for @client.
*
* Returns:
* None.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
void
mongoc_client_set_write_concern (mongoc_client_t *client, const mongoc_write_concern_t *write_concern)
{
BSON_ASSERT_PARAM (client);
if (write_concern != client->write_concern) {
if (client->write_concern) {
mongoc_write_concern_destroy (client->write_concern);
}
client->write_concern = write_concern ? mongoc_write_concern_copy (write_concern) : mongoc_write_concern_new ();
}
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_get_read_concern --
*
* Fetches the default read concern for @client.
*
* Returns:
* A mongoc_read_concern_t that should not be modified or freed.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
const mongoc_read_concern_t *
mongoc_client_get_read_concern (const mongoc_client_t *client)
{
BSON_ASSERT_PARAM (client);
return client->read_concern;
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_set_read_concern --
*
* Sets the default read concern for @client.
*
* Returns:
* None.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
void
mongoc_client_set_read_concern (mongoc_client_t *client, const mongoc_read_concern_t *read_concern)
{
BSON_ASSERT_PARAM (client);
if (read_concern != client->read_concern) {
if (client->read_concern) {
mongoc_read_concern_destroy (client->read_concern);
}
client->read_concern = read_concern ? mongoc_read_concern_copy (read_concern) : mongoc_read_concern_new ();
}
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_get_read_prefs --
*
* Fetch the default read preferences for @client.
*
* Returns:
* None.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
const mongoc_read_prefs_t *
mongoc_client_get_read_prefs (const mongoc_client_t *client)
{
BSON_ASSERT_PARAM (client);
return client->read_prefs;
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_set_read_prefs --
*
* Set the default read preferences for @client.
*
* Returns:
* None.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
void
mongoc_client_set_read_prefs (mongoc_client_t *client, const mongoc_read_prefs_t *read_prefs)
{
BSON_ASSERT_PARAM (client);
if (read_prefs != client->read_prefs) {
if (client->read_prefs) {
mongoc_read_prefs_destroy (client->read_prefs);
}
client->read_prefs =
read_prefs ? mongoc_read_prefs_copy (read_prefs) : mongoc_read_prefs_new (MONGOC_READ_PRIMARY);
}
}
mongoc_cursor_t *
mongoc_client_command (mongoc_client_t *client,
const char *db_name,
mongoc_query_flags_t flags,
uint32_t skip,
uint32_t limit,
uint32_t batch_size,
const bson_t *query,
const bson_t *fields,
const mongoc_read_prefs_t *read_prefs)
{
char *ns = NULL;
mongoc_cursor_t *cursor;
BSON_UNUSED (flags);
BSON_UNUSED (skip);
BSON_UNUSED (limit);
BSON_UNUSED (batch_size);
BSON_UNUSED (fields);
BSON_ASSERT_PARAM (client);
BSON_ASSERT (db_name);
BSON_ASSERT (query);
/*
* Allow a caller to provide a fully qualified namespace
*/
if (NULL == strstr (db_name, "$cmd")) {
ns = bson_strdup_printf ("%s.$cmd", db_name);
db_name = ns;
}
cursor = _mongoc_cursor_cmd_deprecated_new (client, db_name, query, read_prefs);
bson_free (ns);
return cursor;
}
static bool
_mongoc_client_retryable_read_command_with_stream (mongoc_client_t *client,
mongoc_cmd_parts_t *parts,
mongoc_server_stream_t *server_stream,
bson_t *reply,
bson_error_t *error)
{
mongoc_server_stream_t *retry_server_stream = NULL;
bool is_retryable = true;
bool ret;
bson_t reply_local;
BSON_ASSERT_PARAM (client);
BSON_UNUSED (server_stream);
if (reply == NULL) {
reply = &reply_local;
}
ENTRY;
BSON_ASSERT (parts->is_retryable_read);
retry:
ret = mongoc_cluster_run_command_monitored (&client->cluster, &parts->assembled, reply, error);
/* If a retryable error is encountered and the read is retryable, select
* a new readable stream and retry. If server selection fails or the selected
* server does not support retryable reads, fall through and allow the
* original error to be reported. */
if (is_retryable && _mongoc_read_error_get_type (ret, error, reply) == MONGOC_READ_ERR_RETRY) {
/* each read command may be retried at most once */
is_retryable = false;
{
mongoc_deprioritized_servers_t *const ds = mongoc_deprioritized_servers_new ();
if (retry_server_stream) {
mongoc_deprioritized_servers_add_if_sharded (
ds, retry_server_stream->topology_type, retry_server_stream->sd);
mongoc_server_stream_cleanup (retry_server_stream);
} else {
mongoc_deprioritized_servers_add_if_sharded (ds, server_stream->topology_type, server_stream->sd);
}
const mongoc_ss_log_context_t ss_log_context = {
.operation = parts->assembled.command_name,
.has_operation_id = true,
.operation_id = parts->assembled.operation_id,
};
retry_server_stream = mongoc_cluster_stream_for_reads (&client->cluster,
&ss_log_context,
parts->read_prefs,
parts->assembled.session,
ds,
NULL /* reply */,
NULL /* error */);
mongoc_deprioritized_servers_destroy (ds);
}
if (retry_server_stream) {
parts->assembled.server_stream = retry_server_stream;
bson_destroy (reply);
GOTO (retry);
}
}
if (retry_server_stream) {
mongoc_server_stream_cleanup (retry_server_stream);
}
if (ret && error) {
/* if a retry succeeded, clear the initial error */
memset (error, 0, sizeof (bson_error_t));
}
RETURN (ret);
}
static bool
_mongoc_client_command_with_stream (mongoc_client_t *client,
mongoc_cmd_parts_t *parts,
const mongoc_read_prefs_t *read_prefs,
mongoc_server_stream_t *server_stream,
bson_t *reply,
bson_error_t *error)
{
ENTRY;
BSON_ASSERT_PARAM (client);
BSON_UNUSED (read_prefs);
parts->assembled.operation_id = ++client->cluster.operation_id;
if (!mongoc_cmd_parts_assemble (parts, server_stream, error)) {
_mongoc_bson_init_if_set (reply);
return false;
}
if (parts->is_retryable_write) {
mongoc_server_stream_t *retry_server_stream = NULL;
bool ret = mongoc_cluster_run_retryable_write (
&client->cluster, &parts->assembled, true /* is_retryable */, &retry_server_stream, reply, error);
if (retry_server_stream) {
mongoc_server_stream_cleanup (retry_server_stream);
parts->assembled.server_stream = NULL;
}
RETURN (ret);
}
if (parts->is_retryable_read) {
RETURN (_mongoc_client_retryable_read_command_with_stream (client, parts, server_stream, reply, error));
}
RETURN (mongoc_cluster_run_command_monitored (&client->cluster, &parts->assembled, reply, error));
}
bool
mongoc_client_command_simple (mongoc_client_t *client,
const char *db_name,
const bson_t *command,
const mongoc_read_prefs_t *read_prefs,
bson_t *reply,
bson_error_t *error)
{
mongoc_cluster_t *cluster;
mongoc_server_stream_t *server_stream = NULL;
mongoc_cmd_parts_t parts;
bool ret;
ENTRY;
BSON_ASSERT_PARAM (client);
BSON_ASSERT (db_name);
BSON_ASSERT (command);
if (!_mongoc_read_prefs_validate (read_prefs, error)) {
RETURN (false);
}
cluster = &client->cluster;
mongoc_cmd_parts_init (&parts, client, db_name, MONGOC_QUERY_NONE, command);
parts.read_prefs = read_prefs;
/* Server Selection Spec: "The generic command method has a default read
* preference of mode 'primary'. The generic command method MUST ignore any
* default read preference from client, database or collection
* configuration. The generic command method SHOULD allow an optional read
* preference argument."
*/
const mongoc_ss_log_context_t ss_log_context = {.operation = _mongoc_get_command_name (command)};
server_stream = mongoc_cluster_stream_for_reads (cluster, &ss_log_context, read_prefs, NULL, NULL, reply, error);
if (server_stream) {
ret = _mongoc_client_command_with_stream (client, &parts, read_prefs, server_stream, reply, error);
} else {
/* reply initialized by mongoc_cluster_stream_for_reads */
ret = false;
}
mongoc_cmd_parts_cleanup (&parts);
mongoc_server_stream_cleanup (server_stream);
RETURN (ret);
}
/*
*--------------------------------------------------------------------------
*
* _mongoc_client_command_with_opts --
*
* Execute a command on the server. If mode is MONGOC_CMD_READ or
* MONGOC_CMD_RW, then read concern is applied from @opts, or else from
* @default_rc, and read preferences are applied from @user_prefs, or else
* from @default_prefs. If mode is MONGOC_CMD_WRITE or MONGOC_CMD_RW, then
* write concern is applied from @opts if present, or else @default_wc.
*
* If mode is MONGOC_CMD_RAW, then read concern and write concern are
* applied from @opts only. Read preferences are applied from
* @user_prefs.
*
* The mongoc_client_t's read preference, read concern, and write concern
* are *NOT* applied.
*
* Returns:
* Success or failure.
* A write concern timeout or write concern error is considered a failure.
*
* Side effects:
* @reply is always initialized.
* @error is filled out if the command fails.
*
*--------------------------------------------------------------------------
*/
bool
_mongoc_client_command_with_opts (mongoc_client_t *client,
const char *db_name,
const bson_t *command,
mongoc_command_mode_t mode,
const bson_t *opts,
mongoc_query_flags_t flags,
const mongoc_read_prefs_t *user_prefs,
const mongoc_read_prefs_t *default_prefs,
mongoc_read_concern_t *default_rc,
mongoc_write_concern_t *default_wc,
bson_t *reply,
bson_error_t *error)
{
mongoc_read_write_opts_t read_write_opts;
mongoc_cmd_parts_t parts;
const char *command_name;
const mongoc_read_prefs_t *prefs = COALESCE (user_prefs, default_prefs);
mongoc_server_stream_t *server_stream = NULL;
mongoc_cluster_t *cluster;
mongoc_client_session_t *cs;
bson_t reply_local;
bson_t *reply_ptr;
bool reply_initialized = false;
bool ret = false;
ENTRY;
BSON_ASSERT_PARAM (client);
BSON_ASSERT (db_name);
BSON_ASSERT (command);
command_name = _mongoc_get_command_name (command);
cluster = &client->cluster;
reply_ptr = reply ? reply : &reply_local;
mongoc_cmd_parts_init (&parts, client, db_name, flags, command);
parts.is_read_command = (mode & MONGOC_CMD_READ);
parts.is_write_command = (mode & MONGOC_CMD_WRITE);
if (!_mongoc_read_write_opts_parse (client, opts, &read_write_opts, error)) {
GOTO (done);
}
cs = read_write_opts.client_session;
if (!command_name) {
bson_set_error (error, MONGOC_ERROR_COMMAND, MONGOC_ERROR_COMMAND_INVALID_ARG, "Empty command document");
GOTO (done);
}
if (_mongoc_client_session_in_txn (read_write_opts.client_session)) {
if ((mode == MONGOC_CMD_READ || mode == MONGOC_CMD_RAW) && !IS_PREF_PRIMARY (user_prefs)) {
bson_set_error (error,
MONGOC_ERROR_COMMAND,
MONGOC_ERROR_COMMAND_INVALID_ARG,
"Read preference in a transaction must be primary");
GOTO (done);
}
if (!bson_empty (&read_write_opts.readConcern)) {
bson_set_error (error,
MONGOC_ERROR_COMMAND,
MONGOC_ERROR_COMMAND_INVALID_ARG,
"Cannot set read concern after starting transaction");
GOTO (done);
}
if (read_write_opts.writeConcern && strcmp (command_name, "commitTransaction") != 0 &&
strcmp (command_name, "abortTransaction") != 0) {
bson_set_error (error,
MONGOC_ERROR_COMMAND,
MONGOC_ERROR_COMMAND_INVALID_ARG,
"Cannot set write concern after starting transaction");
GOTO (done);
}
}
if (mode == MONGOC_CMD_READ || mode == MONGOC_CMD_RAW) {
/* NULL read pref is ok */
if (!_mongoc_read_prefs_validate (prefs, error)) {
GOTO (done);
}
parts.read_prefs = prefs;
} else {
/* this is a command that writes */
prefs = NULL;
}
const mongoc_ss_log_context_t ss_log_context = {.operation = command_name};
if (read_write_opts.serverId) {
/* "serverId" passed in opts */
server_stream = mongoc_cluster_stream_for_server (
cluster, read_write_opts.serverId, true /* reconnect ok */, cs, reply_ptr, error);
if (server_stream && server_stream->sd->type != MONGOC_SERVER_MONGOS) {
parts.user_query_flags |= MONGOC_QUERY_SECONDARY_OK;
}
} else if (parts.is_write_command) {
server_stream = mongoc_cluster_stream_for_writes (cluster, &ss_log_context, cs, NULL, reply_ptr, error);
} else {
server_stream = mongoc_cluster_stream_for_reads (cluster, &ss_log_context, prefs, cs, NULL, reply_ptr, error);
}
if (!server_stream) {
/* stream_for_reads/writes/server has initialized reply */
reply_initialized = true;
GOTO (done);
}
if (!mongoc_cmd_parts_append_read_write (&parts, &read_write_opts, error)) {
GOTO (done);
}
if (mode & MONGOC_CMD_WRITE) {
/* use default write concern unless it's in opts */
if (!mongoc_write_concern_is_default (default_wc) && !read_write_opts.write_concern_owned) {
if (!mongoc_cmd_parts_set_write_concern (&parts, default_wc, error)) {
GOTO (done);
}
}
}
/* use default read concern for read command, unless it's in opts */
if ((mode & MONGOC_CMD_READ) && bson_empty (&read_write_opts.readConcern)) {
if (!mongoc_cmd_parts_set_read_concern (&parts, default_rc, error)) {
GOTO (done);
}
}
ret = _mongoc_client_command_with_stream (client, &parts, user_prefs, server_stream, reply_ptr, error);
reply_initialized = true;
if (ret && (mode & MONGOC_CMD_WRITE)) {
ret = !_mongoc_parse_wc_err (reply_ptr, error);
}
done:
if (reply_ptr == &reply_local) {
if (reply_initialized) {
bson_destroy (reply_ptr);
}
} else if (!reply_initialized) {
_mongoc_bson_init_if_set (reply);
}
if (server_stream) {
mongoc_server_stream_cleanup (server_stream);
}
mongoc_cmd_parts_cleanup (&parts);
_mongoc_read_write_opts_cleanup (&read_write_opts);
RETURN (ret);
}
bool
mongoc_client_read_command_with_opts (mongoc_client_t *client,
const char *db_name,
const bson_t *command,
const mongoc_read_prefs_t *read_prefs,
const bson_t *opts,
bson_t *reply,
bson_error_t *error)
{
return _mongoc_client_command_with_opts (client,
db_name,
command,
MONGOC_CMD_READ,
opts,
MONGOC_QUERY_NONE,
read_prefs,
client->read_prefs,
client->read_concern,
client->write_concern,
reply,
error);
}
bool
mongoc_client_write_command_with_opts (mongoc_client_t *client,
const char *db_name,
const bson_t *command,
const bson_t *opts,
bson_t *reply,
bson_error_t *error)
{
return _mongoc_client_command_with_opts (client,
db_name,
command,
MONGOC_CMD_WRITE,
opts,
MONGOC_QUERY_NONE,
NULL,
client->read_prefs,
client->read_concern,
client->write_concern,
reply,
error);
}
bool
mongoc_client_read_write_command_with_opts (mongoc_client_t *client,
const char *db_name,
const bson_t *command,
const mongoc_read_prefs_t *read_prefs /* IGNORED */,
const bson_t *opts,
bson_t *reply,
bson_error_t *error)
{
return _mongoc_client_command_with_opts (client,
db_name,
command,
MONGOC_CMD_RW,
opts,
MONGOC_QUERY_NONE,
read_prefs,
client->read_prefs,
client->read_concern,
client->write_concern,
reply,
error);
}
bool
mongoc_client_command_with_opts (mongoc_client_t *client,
const char *db_name,
const bson_t *command,
const mongoc_read_prefs_t *read_prefs,
const bson_t *opts,
bson_t *reply,
bson_error_t *error)
{
return _mongoc_client_command_with_opts (client,
db_name,
command,
MONGOC_CMD_RAW,
opts,
MONGOC_QUERY_NONE,
read_prefs,
NULL,
client->read_concern,
client->write_concern,
reply,
error);
}
bool
mongoc_client_command_simple_with_server_id (mongoc_client_t *client,
const char *db_name,
const bson_t *command,
const mongoc_read_prefs_t *read_prefs,
uint32_t server_id,
bson_t *reply,
bson_error_t *error)
{
mongoc_server_stream_t *server_stream;
mongoc_cmd_parts_t parts;
bool ret;
ENTRY;
BSON_ASSERT_PARAM (client);
BSON_ASSERT (db_name);
BSON_ASSERT (command);
if (!_mongoc_read_prefs_validate (read_prefs, error)) {
RETURN (false);
}
server_stream =
mongoc_cluster_stream_for_server (&client->cluster, server_id, true /* reconnect ok */, NULL, reply, error);
if (server_stream) {
mongoc_cmd_parts_init (&parts, client, db_name, MONGOC_QUERY_NONE, command);
parts.read_prefs = read_prefs;
ret = _mongoc_client_command_with_stream (client, &parts, read_prefs, server_stream, reply, error);
mongoc_cmd_parts_cleanup (&parts);
mongoc_server_stream_cleanup (server_stream);
RETURN (ret);
} else {
/* stream_for_server initialized reply */
RETURN (false);
}
}
static void
_mongoc_client_prepare_killcursors_command (int64_t cursor_id, const char *collection, bson_t *command)
{
bson_array_builder_t *child;
bson_append_utf8 (command, "killCursors", 11, collection, -1);
bson_append_array_builder_begin (command, "cursors", 7, &child);
bson_array_builder_append_int64 (child, cursor_id);
bson_append_array_builder_end (command, child);
}
void
_mongoc_client_kill_cursor (mongoc_client_t *client,
uint32_t server_id,
int64_t cursor_id,
int64_t operation_id,
const char *db,
const char *collection,
mongoc_client_session_t *cs)
{
mongoc_server_stream_t *server_stream;
ENTRY;
BSON_ASSERT_PARAM (client);
BSON_ASSERT (cursor_id);
/* don't attempt reconnect if server unavailable, and ignore errors */
server_stream =
mongoc_cluster_stream_for_server (&client->cluster, server_id, false /* reconnect_ok */, NULL, NULL, NULL);
if (!server_stream) {
return;
}
if (db && collection) {
_mongoc_client_killcursors_command (&client->cluster, server_stream, cursor_id, db, collection, cs);
} else {
_mongoc_client_op_killcursors (&client->cluster, server_stream, cursor_id, operation_id, db, collection);
}
mongoc_server_stream_cleanup (server_stream);
EXIT;
}
static void
_mongoc_client_monitor_op_killcursors (mongoc_cluster_t *cluster,
mongoc_server_stream_t *server_stream,
int64_t cursor_id,
int64_t operation_id,
const char *db,
const char *collection)
{
bson_t doc;
mongoc_apm_command_started_t event;
ENTRY;
mongoc_client_t *client = cluster->client;
const mongoc_log_and_monitor_instance_t *log_and_monitor = &client->topology->log_and_monitor;
if (!log_and_monitor->apm_callbacks.started) {
return;
}
bson_init (&doc);
_mongoc_client_prepare_killcursors_command (cursor_id, collection, &doc);
mongoc_apm_command_started_init (&event,
&doc,
db,
"killCursors",
cluster->request_id,
operation_id,
&server_stream->sd->host,
server_stream->sd->id,
&server_stream->sd->service_id,
server_stream->sd->server_connection_id,
NULL,
log_and_monitor->apm_context);
log_and_monitor->apm_callbacks.started (&event);
mongoc_apm_command_started_cleanup (&event);
bson_destroy (&doc);
EXIT;
}
static void
_mongoc_client_monitor_op_killcursors_succeeded (mongoc_cluster_t *cluster,
int64_t duration,
mongoc_server_stream_t *server_stream,
int64_t cursor_id,
int64_t operation_id,
const char *db)
{
bson_t doc;
bson_array_builder_t *cursors_unknown;
mongoc_apm_command_succeeded_t event;
ENTRY;
mongoc_client_t *client = cluster->client;
const mongoc_log_and_monitor_instance_t *log_and_monitor = &client->topology->log_and_monitor;
if (!log_and_monitor->apm_callbacks.succeeded) {
EXIT;
}
/* fake server reply to killCursors command: {ok: 1, cursorsUnknown: [42]} */
bson_init (&doc);
bson_append_int32 (&doc, "ok", 2, 1);
bson_append_array_builder_begin (&doc, "cursorsUnknown", 14, &cursors_unknown);
bson_array_builder_append_int64 (cursors_unknown, cursor_id);
bson_append_array_builder_end (&doc, cursors_unknown);
mongoc_apm_command_succeeded_init (&event,
duration,
&doc,
"killCursors",
db,
cluster->request_id,
operation_id,
&server_stream->sd->host,
server_stream->sd->id,
&server_stream->sd->service_id,
server_stream->sd->server_connection_id,
false,
log_and_monitor->apm_context);
log_and_monitor->apm_callbacks.succeeded (&event);
mongoc_apm_command_succeeded_cleanup (&event);
bson_destroy (&doc);
}
static void
_mongoc_client_monitor_op_killcursors_failed (mongoc_cluster_t *cluster,
int64_t duration,
mongoc_server_stream_t *server_stream,
const bson_error_t *error,
int64_t operation_id,
const char *db)
{
bson_t doc;
mongoc_apm_command_failed_t event;
ENTRY;
mongoc_client_t *client = cluster->client;
const mongoc_log_and_monitor_instance_t *log_and_monitor = &client->topology->log_and_monitor;
if (!log_and_monitor->apm_callbacks.failed) {
EXIT;
}
/* fake server reply to killCursors command: {ok: 0} */
bson_init (&doc);
bson_append_int32 (&doc, "ok", 2, 0);
mongoc_apm_command_failed_init (&event,
duration,
"killCursors",
db,
error,
&doc,
cluster->request_id,
operation_id,
&server_stream->sd->host,
server_stream->sd->id,
&server_stream->sd->service_id,
server_stream->sd->server_connection_id,
false,
log_and_monitor->apm_context);
log_and_monitor->apm_callbacks.failed (&event);
mongoc_apm_command_failed_cleanup (&event);
bson_destroy (&doc);
}
static void
_mongoc_client_op_killcursors (mongoc_cluster_t *cluster,
mongoc_server_stream_t *server_stream,
int64_t cursor_id,
int64_t operation_id,
const char *db,
const char *collection)
{
BSON_ASSERT_PARAM (cluster);
BSON_ASSERT_PARAM (server_stream);
BSON_OPTIONAL_PARAM (db);
BSON_OPTIONAL_PARAM (collection);
const bool has_ns = db && collection;
const int64_t started = bson_get_monotonic_time ();
mcd_rpc_message *const rpc = mcd_rpc_message_new ();
{
int32_t message_length = 0;
message_length += mcd_rpc_header_set_message_length (rpc, 0);
message_length += mcd_rpc_header_set_request_id (rpc, ++cluster->request_id);
message_length += mcd_rpc_header_set_response_to (rpc, 0);
message_length += mcd_rpc_header_set_op_code (rpc, MONGOC_OP_CODE_KILL_CURSORS);
message_length += sizeof (int32_t); // ZERO
message_length += mcd_rpc_op_kill_cursors_set_cursor_ids (rpc, &cursor_id, 1);
mcd_rpc_message_set_length (rpc, message_length);
}
if (has_ns) {
_mongoc_client_monitor_op_killcursors (cluster, server_stream, cursor_id, operation_id, db, collection);
}
bson_error_t error;
const bool res = mongoc_cluster_legacy_rpc_sendv_to_server (cluster, rpc, server_stream, &error);
if (has_ns) {
if (res) {
_mongoc_client_monitor_op_killcursors_succeeded (
cluster, bson_get_monotonic_time () - started, server_stream, cursor_id, operation_id, db);
} else {
_mongoc_client_monitor_op_killcursors_failed (
cluster, bson_get_monotonic_time () - started, server_stream, &error, operation_id, db);
}
}
mcd_rpc_message_destroy (rpc);
}
static void
_mongoc_client_killcursors_command (mongoc_cluster_t *cluster,
mongoc_server_stream_t *server_stream,
int64_t cursor_id,
const char *db,
const char *collection,
mongoc_client_session_t *cs)
{
bson_t command = BSON_INITIALIZER;
mongoc_cmd_parts_t parts;
ENTRY;
_mongoc_client_prepare_killcursors_command (cursor_id, collection, &command);
mongoc_cmd_parts_init (&parts, cluster->client, db, MONGOC_QUERY_SECONDARY_OK, &command);
parts.assembled.operation_id = ++cluster->operation_id;
mongoc_cmd_parts_set_session (&parts, cs);
if (mongoc_cmd_parts_assemble (&parts, server_stream, NULL)) {
/* Find, getMore And killCursors Commands Spec: "The result from the
* killCursors command MAY be safely ignored."
*/
(void) mongoc_cluster_run_command_monitored (cluster, &parts.assembled, NULL, NULL);
}
mongoc_cmd_parts_cleanup (&parts);
bson_destroy (&command);
EXIT;
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_kill_cursor --
*
* Destroy a cursor on the server.
*
* NOTE: this is only reliable when connected to a single mongod or
* mongos. If connected to a replica set, the driver attempts to
* kill the cursor on the primary. If connected to multiple mongoses
* the kill-cursors message is sent to a *random* mongos.
*
* If no primary, mongos, or standalone server is known, return
* without attempting to reconnect.
*
* Returns:
* None.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
void
mongoc_client_kill_cursor (mongoc_client_t *client, int64_t cursor_id)
{
BSON_ASSERT_PARAM (client);
mongoc_topology_t *const topology = BSON_ASSERT_PTR_INLINE (client)->topology;
mongoc_server_description_t const *selected_server;
mongoc_read_prefs_t *read_prefs;
bson_error_t error;
uint32_t server_id = 0;
mc_shared_tpld td = mc_tpld_take_ref (topology);
read_prefs = mongoc_read_prefs_new (MONGOC_READ_PRIMARY);
if (!mongoc_topology_compatible (td.ptr, NULL, &error)) {
MONGOC_ERROR ("Could not kill cursor: %s", error.message);
mc_tpld_drop_ref (&td);
mongoc_read_prefs_destroy (read_prefs);
return;
}
/* see if there's a known writable server - do no I/O or retries */
selected_server = mongoc_topology_description_select (td.ptr,
MONGOC_SS_WRITE,
read_prefs,
NULL /* chosen read mode */,
NULL /* deprioritized servers */,
topology->local_threshold_msec);
if (selected_server) {
server_id = selected_server->id;
}
if (server_id) {
_mongoc_client_kill_cursor (
client, server_id, cursor_id, 0 /* operation_id */, NULL /* db */, NULL /* collection */, NULL /* session */);
} else {
MONGOC_INFO ("No server available for mongoc_client_kill_cursor");
}
mongoc_read_prefs_destroy (read_prefs);
mc_tpld_drop_ref (&td);
}
char **
mongoc_client_get_database_names (mongoc_client_t *client, bson_error_t *error)
{
return mongoc_client_get_database_names_with_opts (client, NULL, error);
}
char **
mongoc_client_get_database_names_with_opts (mongoc_client_t *client, const bson_t *opts, bson_error_t *error)
{
bson_iter_t iter;
const char *name;
char **ret = NULL;
int i = 0;
mongoc_cursor_t *cursor;
const bson_t *doc;
bson_t cmd = BSON_INITIALIZER;
BSON_ASSERT_PARAM (client);
BSON_APPEND_INT32 (&cmd, "listDatabases", 1);
BSON_APPEND_BOOL (&cmd, "nameOnly", true);
/* ignore client read prefs */
cursor = _mongoc_cursor_array_new (client, "admin", &cmd, opts, "databases");
bson_destroy (&cmd);
while (mongoc_cursor_next (cursor, &doc)) {
if (bson_iter_init (&iter, doc) && bson_iter_find (&iter, "name") && BSON_ITER_HOLDS_UTF8 (&iter) &&
(name = bson_iter_utf8 (&iter, NULL))) {
ret = (char **) bson_realloc (ret, sizeof (char *) * (i + 2));
ret[i] = bson_strdup (name);
ret[++i] = NULL;
}
}
if (!ret && !mongoc_cursor_error (cursor, error)) {
ret = (char **) bson_malloc0 (sizeof (void *));
}
mongoc_cursor_destroy (cursor);
return ret;
}
mongoc_cursor_t *
mongoc_client_find_databases (mongoc_client_t *client, bson_error_t *error)
{
BSON_ASSERT_PARAM (client);
BSON_UNUSED (error);
/* existing bug in this deprecated API: error pointer is unused */
return mongoc_client_find_databases_with_opts (client, NULL);
}
mongoc_cursor_t *
mongoc_client_find_databases_with_opts (mongoc_client_t *client, const bson_t *opts)
{
bson_t cmd = BSON_INITIALIZER;
mongoc_cursor_t *cursor;
BSON_ASSERT_PARAM (client);
BSON_APPEND_INT32 (&cmd, "listDatabases", 1);
cursor = _mongoc_cursor_array_new (client, "admin", &cmd, opts, "databases");
bson_destroy (&cmd);
return cursor;
}
int32_t
mongoc_client_get_max_message_size (mongoc_client_t *client) /* IN */
{
BSON_ASSERT_PARAM (client);
return mongoc_cluster_get_max_msg_size (&client->cluster);
}
int32_t
mongoc_client_get_max_bson_size (mongoc_client_t *client) /* IN */
{
BSON_ASSERT_PARAM (client);
return mongoc_cluster_get_max_bson_obj_size (&client->cluster);
}
bool
mongoc_client_get_server_status (mongoc_client_t *client, /* IN */
mongoc_read_prefs_t *read_prefs, /* IN */
bson_t *reply, /* OUT */
bson_error_t *error) /* OUT */
{
bson_t cmd = BSON_INITIALIZER;
bool ret = false;
BSON_ASSERT_PARAM (client);
BSON_APPEND_INT32 (&cmd, "serverStatus", 1);
ret = mongoc_client_command_simple (client, "admin", &cmd, read_prefs, reply, error);
bson_destroy (&cmd);
return ret;
}
void
mongoc_client_set_stream_initiator (mongoc_client_t *client, mongoc_stream_initiator_t initiator, void *user_data)
{
BSON_ASSERT_PARAM (client);
if (!initiator) {
initiator = mongoc_client_default_stream_initiator;
user_data = client;
} else {
MONGOC_DEBUG ("Using custom stream initiator.");
}
client->initiator = initiator;
client->initiator_data = user_data;
if (client->topology->single_threaded) {
mongoc_topology_scanner_set_stream_initiator (client->topology->scanner, initiator, user_data);
}
}
bool
mongoc_client_set_apm_callbacks (mongoc_client_t *client, mongoc_apm_callbacks_t *callbacks, void *context)
{
BSON_ASSERT_PARAM (client);
if (!client->topology->single_threaded) {
MONGOC_ERROR ("Cannot set callbacks on a pooled client, use "
"mongoc_client_pool_set_apm_callbacks");
return false;
}
mongoc_log_and_monitor_instance_set_apm_callbacks (&client->topology->log_and_monitor, callbacks, context);
return true;
}
bool
mongoc_client_set_structured_log_opts (mongoc_client_t *client, const mongoc_structured_log_opts_t *opts)
{
BSON_ASSERT_PARAM (client);
BSON_OPTIONAL_PARAM (opts);
if (client->topology->single_threaded) {
mongoc_log_and_monitor_instance_set_structured_log_opts (&client->topology->log_and_monitor, opts);
return true;
} else {
MONGOC_WARNING ("Cannot set structured log options on a pooled client, use "
"mongoc_client_pool_set_structured_log_opts before the first mongoc_client_pool_pop");
return false;
}
}
mongoc_server_description_t *
mongoc_client_get_server_description (mongoc_client_t *client, uint32_t server_id)
{
BSON_ASSERT_PARAM (client);
mongoc_server_description_t *ret;
mc_shared_tpld td = mc_tpld_take_ref (client->topology);
mongoc_server_description_t const *sd =
mongoc_topology_description_server_by_id_const (td.ptr, server_id, NULL /* <- the error info isn't useful */);
ret = mongoc_server_description_new_copy (sd);
mc_tpld_drop_ref (&td);
return ret;
}
mongoc_server_description_t **
mongoc_client_get_server_descriptions (const mongoc_client_t *client, size_t *n /* OUT */)
{
BSON_ASSERT_PARAM (client);
mc_shared_tpld td = mc_tpld_take_ref (BSON_ASSERT_PTR_INLINE (client)->topology);
mongoc_server_description_t **const sds =
mongoc_topology_description_get_servers (td.ptr, BSON_ASSERT_PTR_INLINE (n));
mc_tpld_drop_ref (&td);
return sds;
}
void
mongoc_server_descriptions_destroy_all (mongoc_server_description_t **sds, size_t n)
{
size_t i;
for (i = 0; i < n; ++i) {
mongoc_server_description_destroy (sds[i]);
}
bson_free (sds);
}
mongoc_server_description_t *
mongoc_client_select_server (mongoc_client_t *client,
bool for_writes,
const mongoc_read_prefs_t *prefs,
bson_error_t *error)
{
BSON_ASSERT_PARAM (client);
mongoc_ss_optype_t optype = for_writes ? MONGOC_SS_WRITE : MONGOC_SS_READ;
mongoc_server_description_t *sd;
if (for_writes && prefs) {
bson_set_error (error,
MONGOC_ERROR_SERVER_SELECTION,
MONGOC_ERROR_SERVER_SELECTION_FAILURE,
"Cannot use read preferences with for_writes = true");
return NULL;
}
if (!_mongoc_read_prefs_validate (prefs, error)) {
return NULL;
}
const mongoc_ss_log_context_t ss_log_context = {.operation = "mongoc_client_select_server"};
sd = mongoc_topology_select (client->topology, optype, &ss_log_context, prefs, NULL /* chosen read mode */, error);
if (!sd) {
return NULL;
}
if (mongoc_cluster_check_interval (&client->cluster, sd->id)) {
/* check not required, or it succeeded */
return sd;
}
/* check failed, retry once */
mongoc_server_description_destroy (sd);
sd = mongoc_topology_select (client->topology, optype, &ss_log_context, prefs, NULL /* chosen read mode */, error);
if (sd) {
return sd;
}
return NULL;
}
bool
mongoc_client_set_error_api (mongoc_client_t *client, int32_t version)
{
BSON_ASSERT_PARAM (client);
if (!client->topology->single_threaded) {
MONGOC_ERROR ("Cannot set Error API Version on a pooled client, use "
"mongoc_client_pool_set_error_api");
return false;
}
if (version != MONGOC_ERROR_API_VERSION_LEGACY && version != MONGOC_ERROR_API_VERSION_2) {
MONGOC_ERROR ("Unsupported Error API Version: %" PRId32, version);
return false;
}
if (client->error_api_set) {
MONGOC_ERROR ("Can only set Error API Version once");
return false;
}
client->error_api_version = version;
client->error_api_set = true;
return true;
}
bool
mongoc_client_set_appname (mongoc_client_t *client, const char *appname)
{
BSON_ASSERT_PARAM (client);
if (!client->topology->single_threaded) {
MONGOC_ERROR ("Cannot call set_appname on a client from a pool");
return false;
}
return _mongoc_topology_set_appname (client->topology, appname);
}
mongoc_server_session_t *
_mongoc_client_pop_server_session (mongoc_client_t *client,
const mongoc_ss_log_context_t *log_context,
bson_error_t *error)
{
BSON_ASSERT_PARAM (client);
return _mongoc_topology_pop_server_session (client->topology, log_context, error);
}
/*
*--------------------------------------------------------------------------
*
* _mongoc_client_lookup_session --
*
* Retrieve a mongoc_client_session_t associated with @client_session_id.
* Use this to find the "lsid" and "$clusterTime" to send in the server
* command.
*
* Returns:
* True on success, false on error and @error is set. Will return false
* if the session is from an outdated client generation, a holdover
* from before a call to mongoc_client_reset.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
bool
_mongoc_client_lookup_session (const mongoc_client_t *client,
uint32_t client_session_id,
mongoc_client_session_t **cs /* OUT */,
bson_error_t *error /* OUT */)
{
ENTRY;
BSON_ASSERT_PARAM (client);
*cs = mongoc_set_get (client->client_sessions, client_session_id);
if (*cs) {
RETURN (true);
}
bson_set_error (error, MONGOC_ERROR_COMMAND, MONGOC_ERROR_COMMAND_INVALID_ARG, "Invalid sessionId");
RETURN (false);
}
void
_mongoc_client_unregister_session (mongoc_client_t *client, mongoc_client_session_t *session)
{
BSON_ASSERT_PARAM (client);
mongoc_set_rm (client->client_sessions, session->client_session_id);
}
void
_mongoc_client_push_server_session (mongoc_client_t *client, mongoc_server_session_t *server_session)
{
BSON_ASSERT_PARAM (client);
_mongoc_topology_push_server_session (client->topology, server_session);
}
/*
*--------------------------------------------------------------------------
*
* mongoc_client_end_sessions --
*
* End all server sessions in the topology's server session pool.
* Don't block long: if server selection or connecting fails, quit.
*
* The server session pool becomes invalid, but may not be empty.
* Destroy the topology after this without using any sessions.
*
*--------------------------------------------------------------------------
*/
void
_mongoc_client_end_sessions (mongoc_client_t *client)
{
mongoc_topology_t *t = client->topology;
mongoc_read_prefs_t *prefs;
bson_error_t error;
uint32_t server_id;
bson_t cmd;
mongoc_server_stream_t *stream;
mongoc_cmd_parts_t parts;
mongoc_cluster_t *cluster = &client->cluster;
bool r;
BSON_ASSERT_PARAM (client);
while (!mongoc_server_session_pool_is_empty (t->session_pool)) {
prefs = mongoc_read_prefs_new (MONGOC_READ_PRIMARY_PREFERRED);
const mongoc_ss_log_context_t ss_log_context = {
.operation = "endSessions", .has_operation_id = true, .operation_id = 1 + cluster->operation_id};
server_id = mongoc_topology_select_server_id (t,
MONGOC_SS_READ,
&ss_log_context,
prefs,
NULL /* chosen read mode */,
NULL /* deprioritized servers */,
&error);
mongoc_read_prefs_destroy (prefs);
if (!server_id) {
MONGOC_WARNING ("Couldn't send \"endSessions\": %s", error.message);
return;
}
stream = mongoc_cluster_stream_for_server (cluster, server_id, false /* reconnect_ok */, NULL, NULL, &error);
if (!stream) {
MONGOC_WARNING ("Couldn't send \"endSessions\": %s", error.message);
return;
}
/* end sessions in chunks */
while (_mongoc_topology_end_sessions_cmd (t, &cmd)) {
mongoc_cmd_parts_init (&parts, client, "admin", MONGOC_QUERY_SECONDARY_OK, &cmd);
parts.assembled.operation_id = ++cluster->operation_id;
parts.prohibit_lsid = true;
r = mongoc_cmd_parts_assemble (&parts, stream, &error);
if (!r) {
MONGOC_WARNING ("Couldn't construct \"endSessions\" command: %s", error.message);
} else {
r = mongoc_cluster_run_command_monitored (cluster, &parts.assembled, NULL, &error);
if (!r) {
MONGOC_WARNING ("Couldn't send \"endSessions\": %s", error.message);
}
}
mongoc_cmd_parts_cleanup (&parts);
if (!mongoc_cluster_stream_valid (cluster, stream)) {
/* The stream was invalidated as a result of a network error, so we
* stop sending commands. */
break;
}
bson_destroy (&cmd);
}
bson_destroy (&cmd);
mongoc_server_stream_cleanup (stream);
}
}
void
mongoc_client_reset (mongoc_client_t *client)
{
BSON_ASSERT_PARAM (client);
client->generation++;
/* Client sessions are owned and destroyed by the user, but we keep
local pointers to them for reference. On reset, clear our local
set without destroying the sessions or calling endSessions.
client_sessions has no dtor, so it won't destroy its items.
Destroying the local cache of client sessions here ensures they
cannot be used by future operations--lookup for them will fail. */
mongoc_set_destroy (client->client_sessions);
client->client_sessions = mongoc_set_new (8, NULL, NULL);
/* Server sessions are owned by us, so we clear the pool on reset. */
mongoc_server_session_pool_clear (client->topology->session_pool);
}
mongoc_change_stream_t *
mongoc_client_watch (mongoc_client_t *client, const bson_t *pipeline, const bson_t *opts)
{
return _mongoc_change_stream_new_from_client (client, pipeline, opts);
}
bool
mongoc_client_enable_auto_encryption (mongoc_client_t *client, mongoc_auto_encryption_opts_t *opts, bson_error_t *error)
{
BSON_ASSERT_PARAM (client);
if (!client->topology->single_threaded) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_INVALID_ENCRYPTION_ARG,
"Cannot enable auto encryption on a pooled client, use "
"mongoc_client_pool_enable_auto_encryption");
return false;
}
return _mongoc_cse_client_enable_auto_encryption (client, opts, error);
}
bool
mongoc_client_set_server_api (mongoc_client_t *client, const mongoc_server_api_t *api, bson_error_t *error)
{
BSON_ASSERT_PARAM (client);
BSON_ASSERT_PARAM (api);
if (!client->topology->single_threaded) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_API_FROM_POOL,
"Cannot set server api on a client checked out from a pool");
return false;
}
if (mongoc_client_uses_server_api (client)) {
bson_set_error (error,
MONGOC_ERROR_CLIENT,
MONGOC_ERROR_CLIENT_API_ALREADY_SET,
"Cannot set server api more than once per client");
return false;
}
client->api = mongoc_server_api_copy (api);
_mongoc_topology_scanner_set_server_api (client->topology->scanner, api);
return true;
}
mongoc_server_description_t *
mongoc_client_get_handshake_description (mongoc_client_t *client, uint32_t server_id, bson_t *opts, bson_error_t *error)
{
mongoc_server_stream_t *server_stream;
mongoc_server_description_t *sd;
BSON_ASSERT_PARAM (client);
BSON_UNUSED (opts);
server_stream = mongoc_cluster_stream_for_server (
&client->cluster, server_id, true /* reconnect */, NULL /* client session */, NULL /* reply */, error);
if (!server_stream) {
return NULL;
}
sd = mongoc_server_description_new_copy (server_stream->sd);
mongoc_server_stream_cleanup (server_stream);
return sd;
}
bool
mongoc_client_uses_server_api (const mongoc_client_t *client)
{
BSON_ASSERT_PARAM (client);
return mongoc_topology_uses_server_api (client->topology);
}
bool
mongoc_client_uses_loadbalanced (const mongoc_client_t *client)
{
BSON_ASSERT_PARAM (client);
return mongoc_topology_uses_loadbalanced (client->topology);
}
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-aws-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-aws-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-aws-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-aws-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-aws.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-aws.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-aws.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-aws.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-cyrus-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-cyrus-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-cyrus-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-cyrus-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-cyrus.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-cyrus.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-cyrus.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-cyrus.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sasl-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sasl-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sasl-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sasl-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sasl.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sasl.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sasl.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sasl.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sspi-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sspi-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sspi-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sspi-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sspi.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sspi.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sspi.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sspi.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cmd-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cmd-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cmd-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cmd-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cmd.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cmd.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cmd.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cmd.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-compression-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-compression-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-compression-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-compression-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-compression.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-compression.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-compression.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-compression.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h.in b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h.in
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h.in
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h.in
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters.defs b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters.defs
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters.defs
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters.defs
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypt-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypt-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypt-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypt-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypt.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypt.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypt.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypt.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-cng-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-cng-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-cng-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-cng-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-cng.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-cng.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-cng.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-cng.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-common-crypto-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-common-crypto-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-common-crypto-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-common-crypto-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-common-crypto.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-common-crypto.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-common-crypto.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-common-crypto.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-openssl-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-openssl-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-openssl-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-openssl-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-openssl.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-openssl.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-openssl.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-openssl.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-array.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-array.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-array.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-array.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-change-stream.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-change-stream.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-change-stream.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-change-stream.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-cmd-deprecated.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-cmd-deprecated.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-cmd-deprecated.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-cmd-deprecated.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-cmd.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-cmd.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-cmd.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-cmd.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find-cmd.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find-cmd.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find-cmd.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find-cmd.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find-opquery.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find-opquery.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find-opquery.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find-opquery.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-legacy.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-legacy.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-legacy.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-legacy.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cyrus-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cyrus-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cyrus-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cyrus-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cyrus.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cyrus.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cyrus.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-cyrus.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-database-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-database-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-database-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-database-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-database.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-database.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-database.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-database.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-database.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-database.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-database.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-database.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-deprioritized-servers-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-deprioritized-servers-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-deprioritized-servers-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-deprioritized-servers-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-deprioritized-servers.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-deprioritized-servers.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-deprioritized-servers.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-deprioritized-servers.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-errno-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-errno-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-errno-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-errno-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error-private.h
similarity index 95%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error-private.h
index 253dfade..236b55d4 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error-private.h
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error-private.h
@@ -1,110 +1,116 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <mongoc/mongoc-prelude.h>
#ifndef MONGOC_ERROR_PRIVATE_H
#define MONGOC_ERROR_PRIVATE_H
#include <bson/bson.h>
#include <stddef.h>
#include <mongoc/mongoc-server-description.h>
BSON_BEGIN_DECLS
typedef enum { MONGOC_READ_ERR_NONE, MONGOC_READ_ERR_OTHER, MONGOC_READ_ERR_RETRY } mongoc_read_err_type_t;
/* Server error codes libmongoc cares about. Compare with:
* https://github.com/mongodb/mongo/blob/master/src/mongo/base/error_codes.yml
*/
typedef enum {
MONGOC_SERVER_ERR_HOSTUNREACHABLE = 6,
MONGOC_SERVER_ERR_HOSTNOTFOUND = 7,
MONGOC_SERVER_ERR_CURSOR_NOT_FOUND = 43,
MONGOC_SERVER_ERR_STALESHARDVERSION = 63,
MONGOC_SERVER_ERR_NETWORKTIMEOUT = 89,
MONGOC_SERVER_ERR_SHUTDOWNINPROGRESS = 91,
MONGOC_SERVER_ERR_FAILEDTOSATISFYREADPREFERENCE = 133,
MONGOC_SERVER_ERR_READCONCERNMAJORITYNOTAVAILABLEYET = 134,
MONGOC_SERVER_ERR_STALEEPOCH = 150,
MONGOC_SERVER_ERR_PRIMARYSTEPPEDDOWN = 189,
MONGOC_SERVER_ERR_ELECTIONINPROGRESS = 216,
MONGOC_SERVER_ERR_RETRYCHANGESTREAM = 234,
MONGOC_SERVER_ERR_EXCEEDEDTIMELIMIT = 262,
MONGOC_SERVER_ERR_SOCKETEXCEPTION = 9001,
MONGOC_SERVER_ERR_NOTPRIMARY = 10107,
MONGOC_SERVER_ERR_INTERRUPTEDATSHUTDOWN = 11600,
MONGOC_SERVER_ERR_INTERRUPTEDDUETOREPLSTATECHANGE = 11602,
MONGOC_SERVER_ERR_STALECONFIG = 13388,
MONGOC_SERVER_ERR_NOTPRIMARYNOSECONDARYOK = 13435,
MONGOC_SERVER_ERR_NOTPRIMARYORSECONDARY = 13436,
MONGOC_SERVER_ERR_LEGACYNOTPRIMARY = 10058,
MONGOC_SERVER_ERR_NS_NOT_FOUND = 26
} mongoc_server_err_t;
mongoc_read_err_type_t
_mongoc_read_error_get_type (bool cmd_ret, const bson_error_t *cmd_err, const bson_t *reply);
void
_mongoc_error_copy_labels_and_upsert (const bson_t *src, bson_t *dst, char *label);
void
_mongoc_write_error_append_retryable_label (bson_t *reply);
void
_mongoc_write_error_handle_labels (bool cmd_ret,
const bson_error_t *cmd_err,
bson_t *reply,
const mongoc_server_description_t *sd);
bool
_mongoc_error_is_shutdown (bson_error_t *error);
bool
_mongoc_error_is_recovering (bson_error_t *error);
bool
_mongoc_error_is_not_primary (bson_error_t *error);
bool
_mongoc_error_is_state_change (bson_error_t *error);
bool
_mongoc_error_is_network (const bson_error_t *error);
bool
_mongoc_error_is_server (const bson_error_t *error);
bool
_mongoc_error_is_auth (const bson_error_t *error);
/* Try to append `s` to `error`. Truncates `s` if `error` is out of space. */
void
_mongoc_error_append (bson_error_t *error, const char *s);
typedef enum {
MONGOC_ERROR_CONTENT_FLAG_CODE = (1 << 0),
MONGOC_ERROR_CONTENT_FLAG_DOMAIN = (1 << 1),
MONGOC_ERROR_CONTENT_FLAG_MESSAGE = (1 << 2),
} mongoc_error_content_flags_t;
bool
mongoc_error_append_contents_to_bson (const bson_error_t *error, bson_t *bson, mongoc_error_content_flags_t flags);
+#ifdef _WIN32
+// Call `mongoc_winerr_to_string` on a Windows error code (e.g. a return from GetLastError()).
+char *
+mongoc_winerr_to_string (DWORD err_code);
+#endif
+
BSON_END_DECLS
#endif /* MONGOC_ERROR_PRIVATE_H */
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.c
similarity index 90%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.c
index 60403d79..667e7e06 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.c
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.c
@@ -1,340 +1,377 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <bson/bson.h>
#include <mongoc/mongoc-error.h>
#include <mongoc/mongoc-error-private.h>
#include <mongoc/mongoc-rpc-private.h>
#include <mongoc/mongoc-client-private.h>
#include <mongoc/mongoc-server-description-private.h>
bool
mongoc_error_has_label (const bson_t *reply, const char *label)
{
bson_iter_t iter;
bson_iter_t error_labels;
BSON_ASSERT (reply);
BSON_ASSERT (label);
if (bson_iter_init_find (&iter, reply, "errorLabels") && bson_iter_recurse (&iter, &error_labels)) {
while (bson_iter_next (&error_labels)) {
if (BSON_ITER_HOLDS_UTF8 (&error_labels) && !strcmp (bson_iter_utf8 (&error_labels, NULL), label)) {
return true;
}
}
}
return false;
}
bool
_mongoc_error_is_server (const bson_error_t *error)
{
if (!error) {
return false;
}
return error->domain == MONGOC_ERROR_SERVER || error->domain == MONGOC_ERROR_WRITE_CONCERN;
}
static bool
_mongoc_write_error_is_retryable (bson_error_t *error)
{
if (!_mongoc_error_is_server (error)) {
return false;
}
switch (error->code) {
case MONGOC_SERVER_ERR_HOSTUNREACHABLE:
case MONGOC_SERVER_ERR_HOSTNOTFOUND:
case MONGOC_SERVER_ERR_NETWORKTIMEOUT:
case MONGOC_SERVER_ERR_SHUTDOWNINPROGRESS:
case MONGOC_SERVER_ERR_PRIMARYSTEPPEDDOWN:
case MONGOC_SERVER_ERR_EXCEEDEDTIMELIMIT:
case MONGOC_SERVER_ERR_SOCKETEXCEPTION:
case MONGOC_SERVER_ERR_NOTPRIMARY:
case MONGOC_SERVER_ERR_INTERRUPTEDATSHUTDOWN:
case MONGOC_SERVER_ERR_INTERRUPTEDDUETOREPLSTATECHANGE:
case MONGOC_SERVER_ERR_NOTPRIMARYNOSECONDARYOK:
case MONGOC_SERVER_ERR_NOTPRIMARYORSECONDARY:
return true;
default:
return false;
}
}
void
_mongoc_write_error_append_retryable_label (bson_t *reply)
{
bson_t reply_local = BSON_INITIALIZER;
if (!reply) {
bson_destroy (&reply_local);
return;
}
bson_copy_to_excluding_noinit (reply, &reply_local, "errorLabels", NULL);
_mongoc_error_copy_labels_and_upsert (reply, &reply_local, RETRYABLE_WRITE_ERROR);
bson_destroy (reply);
bson_steal (reply, &reply_local);
}
void
_mongoc_write_error_handle_labels (bool cmd_ret,
const bson_error_t *cmd_err,
bson_t *reply,
const mongoc_server_description_t *sd)
{
bson_error_t error;
/* check for a client error. */
if (!cmd_ret && _mongoc_error_is_network (cmd_err)) {
/* Retryable writes spec: When the driver encounters a network error
* communicating with any server version that supports retryable
* writes, it MUST add a RetryableWriteError label to that error. */
_mongoc_write_error_append_retryable_label (reply);
return;
}
if (sd->max_wire_version >= WIRE_VERSION_RETRYABLE_WRITE_ERROR_LABEL) {
return;
}
/* Check for a server error. Do not consult writeConcernError for pre-4.4
* mongos. */
if (sd->type == MONGOC_SERVER_MONGOS) {
if (_mongoc_cmd_check_ok (reply, MONGOC_ERROR_API_VERSION_2, &error)) {
return;
}
} else {
if (_mongoc_cmd_check_ok_no_wce (reply, MONGOC_ERROR_API_VERSION_2, &error)) {
return;
}
}
if (_mongoc_write_error_is_retryable (&error)) {
_mongoc_write_error_append_retryable_label (reply);
}
}
/*--------------------------------------------------------------------------
*
* _mongoc_read_error_get_type --
*
* Checks if the error or reply from a read command is considered
* retryable according to the retryable reads spec. Checks both
* for a client error (a network exception) and a server error in
* the reply. @cmd_ret and @cmd_err come from the result of a
* read_command function.
*
*
* Return:
* A mongoc_read_error_type_t indicating the type of error (if any).
*
*--------------------------------------------------------------------------
*/
mongoc_read_err_type_t
_mongoc_read_error_get_type (bool cmd_ret, const bson_error_t *cmd_err, const bson_t *reply)
{
bson_error_t error;
/* check for a client error. */
if (!cmd_ret && cmd_err && _mongoc_error_is_network (cmd_err)) {
/* Retryable reads spec: "considered retryable if [...] any network
* exception (e.g. socket timeout or error) */
return MONGOC_READ_ERR_RETRY;
}
/* check for a server error. */
if (_mongoc_cmd_check_ok_no_wce (reply, MONGOC_ERROR_API_VERSION_2, &error)) {
return MONGOC_READ_ERR_NONE;
}
switch (error.code) {
case MONGOC_SERVER_ERR_EXCEEDEDTIMELIMIT:
case MONGOC_SERVER_ERR_INTERRUPTEDATSHUTDOWN:
case MONGOC_SERVER_ERR_INTERRUPTEDDUETOREPLSTATECHANGE:
case MONGOC_SERVER_ERR_NOTPRIMARY:
case MONGOC_SERVER_ERR_NOTPRIMARYNOSECONDARYOK:
case MONGOC_SERVER_ERR_NOTPRIMARYORSECONDARY:
case MONGOC_SERVER_ERR_PRIMARYSTEPPEDDOWN:
case MONGOC_SERVER_ERR_READCONCERNMAJORITYNOTAVAILABLEYET:
case MONGOC_SERVER_ERR_SHUTDOWNINPROGRESS:
case MONGOC_SERVER_ERR_HOSTNOTFOUND:
case MONGOC_SERVER_ERR_HOSTUNREACHABLE:
case MONGOC_SERVER_ERR_NETWORKTIMEOUT:
case MONGOC_SERVER_ERR_SOCKETEXCEPTION:
return MONGOC_READ_ERR_RETRY;
default:
if (strstr (error.message, "not master") || strstr (error.message, "node is recovering")) {
return MONGOC_READ_ERR_RETRY;
}
return MONGOC_READ_ERR_OTHER;
}
}
void
_mongoc_error_copy_labels_and_upsert (const bson_t *src, bson_t *dst, char *label)
{
bson_iter_t iter;
bson_iter_t src_label;
bson_array_builder_t *dst_labels;
BSON_APPEND_ARRAY_BUILDER_BEGIN (dst, "errorLabels", &dst_labels);
bson_array_builder_append_utf8 (dst_labels, label, -1);
/* append any other errorLabels already in "src" */
if (bson_iter_init_find (&iter, src, "errorLabels") && bson_iter_recurse (&iter, &src_label)) {
while (bson_iter_next (&src_label) && BSON_ITER_HOLDS_UTF8 (&src_label)) {
if (strcmp (bson_iter_utf8 (&src_label, NULL), label) != 0) {
bson_array_builder_append_utf8 (dst_labels, bson_iter_utf8 (&src_label, NULL), -1);
}
}
}
bson_append_array_builder_end (dst, dst_labels);
}
/* Defined in SDAM spec under "Application Errors".
* @error should have been obtained from a command reply, e.g. with
* _mongoc_cmd_check_ok.
*/
bool
_mongoc_error_is_shutdown (bson_error_t *error)
{
if (!_mongoc_error_is_server (error)) {
return false;
}
switch (error->code) {
case 11600: /* InterruptedAtShutdown */
case 91: /* ShutdownInProgress */
return true;
default:
return false;
}
}
bool
_mongoc_error_is_not_primary (bson_error_t *error)
{
if (!_mongoc_error_is_server (error)) {
return false;
}
if (_mongoc_error_is_recovering (error)) {
return false;
}
switch (error->code) {
case MONGOC_SERVER_ERR_NOTPRIMARY:
case MONGOC_SERVER_ERR_NOTPRIMARYNOSECONDARYOK:
case MONGOC_SERVER_ERR_LEGACYNOTPRIMARY:
return true;
/* All errors where no code was found are marked as
* MONGOC_ERROR_QUERY_FAILURE */
case MONGOC_ERROR_QUERY_FAILURE:
return NULL != strstr (error->message, "not master");
default:
return false;
}
}
bool
_mongoc_error_is_recovering (bson_error_t *error)
{
if (!_mongoc_error_is_server (error)) {
return false;
}
switch (error->code) {
case MONGOC_SERVER_ERR_INTERRUPTEDATSHUTDOWN:
case MONGOC_SERVER_ERR_INTERRUPTEDDUETOREPLSTATECHANGE:
case MONGOC_SERVER_ERR_NOTPRIMARYORSECONDARY:
case MONGOC_SERVER_ERR_PRIMARYSTEPPEDDOWN:
case MONGOC_SERVER_ERR_SHUTDOWNINPROGRESS:
return true;
/* All errors where no code was found are marked as
* MONGOC_ERROR_QUERY_FAILURE */
case MONGOC_ERROR_QUERY_FAILURE:
return NULL != strstr (error->message, "not master or secondary") ||
NULL != strstr (error->message, "node is recovering");
default:
return false;
}
}
/* Assumes @error was parsed as an API V2 error. */
bool
_mongoc_error_is_state_change (bson_error_t *error)
{
return _mongoc_error_is_recovering (error) || _mongoc_error_is_not_primary (error);
}
bool
_mongoc_error_is_network (const bson_error_t *error)
{
if (!error) {
return false;
}
if (error->domain == MONGOC_ERROR_STREAM) {
return true;
}
if (error->domain == MONGOC_ERROR_PROTOCOL && error->code == MONGOC_ERROR_PROTOCOL_INVALID_REPLY) {
return true;
}
return false;
}
bool
_mongoc_error_is_auth (const bson_error_t *error)
{
if (!error) {
return false;
}
return error->domain == MONGOC_ERROR_CLIENT && error->code == MONGOC_ERROR_CLIENT_AUTHENTICATE;
}
void
_mongoc_error_append (bson_error_t *error, const char *s)
{
BSON_ASSERT (error);
const size_t error_len = strlen (error->message);
const size_t remaining = sizeof (error->message) - error_len;
bson_strncpy (error->message + error_len, s, remaining);
}
bool
mongoc_error_append_contents_to_bson (const bson_error_t *error, bson_t *bson, mongoc_error_content_flags_t flags)
{
BSON_ASSERT_PARAM (error);
BSON_ASSERT_PARAM (bson);
if ((flags & MONGOC_ERROR_CONTENT_FLAG_CODE) && !BSON_APPEND_INT32 (bson, "code", error->code)) {
return false;
}
if ((flags & MONGOC_ERROR_CONTENT_FLAG_DOMAIN) && !BSON_APPEND_INT32 (bson, "domain", error->domain)) {
return false;
}
if ((flags & MONGOC_ERROR_CONTENT_FLAG_MESSAGE) && !BSON_APPEND_UTF8 (bson, "message", error->message)) {
return false;
}
return true;
}
+
+#ifdef _WIN32
+
+char *
+mongoc_winerr_to_string (DWORD err_code)
+{
+ LPSTR msg = NULL;
+ if (0 == FormatMessageA (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_ARGUMENT_ARRAY |
+ FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ err_code,
+ MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPSTR) &msg,
+ 0,
+ NULL)) {
+ LocalFree (msg);
+ return bson_strdup_printf ("(0x%.8lX) (Failed to get error message)", err_code);
+ }
+
+ // Remove trailing newline.
+ size_t msglen = strlen (msg);
+ if (msglen >= 1 && msg[msglen - 1] == '\n') {
+ if (msglen >= 2 && msg[msglen - 2] == '\r') {
+ // Remove trailing \r\n.
+ msg[msglen - 2] = '\0';
+ } else {
+ // Just remove trailing \n.
+ msg[msglen - 1] = '\0';
+ }
+ }
+
+ char *ret = bson_strdup_printf ("(0x%.8lX) %s", err_code, msg);
+ LocalFree (msg);
+ return ret;
+}
+
+#endif // _WIN32
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-generation-map-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-generation-map-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-generation-map-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-generation-map-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-generation-map.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-generation-map.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-generation-map.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-generation-map.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-file-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-file-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-file-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-file-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-file.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-file.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-file.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-file.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-compiler-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-compiler-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-compiler-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-compiler-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-os-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-os-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-os-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-os-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.c
similarity index 99%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.c
index 2aa9e64c..594b731c 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.c
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.c
@@ -1,845 +1,848 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <bson/bson.h>
#ifdef _POSIX_VERSION
#include <sys/utsname.h>
#endif
#ifdef _WIN32
#include <windows.h>
#endif
#include <mongoc/mongoc-linux-distro-scanner-private.h>
#include <mongoc/mongoc-handshake.h>
#include <mongoc/mongoc-handshake-compiler-private.h>
#include <mongoc/mongoc-handshake-os-private.h>
#include <mongoc/mongoc-handshake-private.h>
#include <mongoc/mongoc-client.h>
#include <mongoc/mongoc-client-private.h>
#include <mongoc/mongoc-error.h>
+#include <mongoc/mongoc-error-private.h>
#include <mongoc/mongoc-log.h>
#include <mongoc/mongoc-version.h>
#include <mongoc/mongoc-util-private.h>
#include <common-bson-dsl-private.h>
#include <common-string-private.h>
#include <common-cmp-private.h>
/*
* Global handshake data instance. Initialized at startup from mongoc_init
*
* Can be modified by calls to mongoc_handshake_data_append
*/
static mongoc_handshake_t gMongocHandshake;
/*
* Used for thread-safety in mongoc_handshake_data_append
*/
static bson_mutex_t gHandshakeLock;
static void
_set_bit (uint8_t *bf, uint32_t byte_count, uint32_t bit)
{
uint32_t byte = bit / 8;
uint32_t bit_of_byte = (bit) % 8;
/* byte 0 is the last location in bf. */
bf[(byte_count - 1) - byte] |= 1u << bit_of_byte;
}
/* returns a hex string for all config flag bits, which must be freed. */
char *
_mongoc_handshake_get_config_hex_string (void)
{
const uint32_t byte_count = (LAST_MONGOC_MD_FLAG + 7) / 8; /* ceil (num_bits / 8) */
/* allocate enough bytes to fit all config bits. */
uint8_t *const bf = (uint8_t *) bson_malloc0 (byte_count);
#ifdef MONGOC_ENABLE_SSL_SECURE_CHANNEL
_set_bit (bf, byte_count, MONGOC_ENABLE_SSL_SECURE_CHANNEL);
#endif
#ifdef MONGOC_ENABLE_CRYPTO_CNG
_set_bit (bf, byte_count, MONGOC_ENABLE_CRYPTO_CNG);
#endif
#ifdef MONGOC_HAVE_BCRYPT_PBKDF2
_set_bit (bf, byte_count, MONGOC_MD_FLAG_HAVE_BCRYPT_PBKDF2);
#endif
#ifdef MONGOC_ENABLE_SSL_SECURE_TRANSPORT
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_SSL_SECURE_TRANSPORT);
#endif
#ifdef MONGOC_ENABLE_CRYPTO_COMMON_CRYPTO
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_CRYPTO_COMMON_CRYPTO);
#endif
#ifdef MONGOC_ENABLE_SSL_OPENSSL
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_SSL_OPENSSL);
#endif
#ifdef MONGOC_ENABLE_CRYPTO_LIBCRYPTO
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_CRYPTO_LIBCRYPTO);
#endif
#ifdef MONGOC_ENABLE_SSL
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_SSL);
#endif
#ifdef MONGOC_ENABLE_CRYPTO
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_CRYPTO);
#endif
#ifdef MONGOC_ENABLE_CRYPTO_SYSTEM_PROFILE
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_CRYPTO_SYSTEM_PROFILE);
#endif
#ifdef MONGOC_ENABLE_SASL
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_SASL);
#endif
#ifdef MONGOC_HAVE_SASL_CLIENT_DONE
_set_bit (bf, byte_count, MONGOC_MD_FLAG_HAVE_SASL_CLIENT_DONE);
#endif
#ifdef MONGOC_NO_AUTOMATIC_GLOBALS
_set_bit (bf, byte_count, MONGOC_MD_FLAG_NO_AUTOMATIC_GLOBALS);
#endif
#ifdef MONGOC_EXPERIMENTAL_FEATURES
_set_bit (bf, byte_count, MONGOC_MD_FLAG_EXPERIMENTAL_FEATURES);
#endif
#ifdef MONGOC_ENABLE_SSL_LIBRESSL
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_SSL_LIBRESSL);
#endif
#ifdef MONGOC_ENABLE_SASL_CYRUS
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_SASL_CYRUS);
#endif
#ifdef MONGOC_ENABLE_SASL_SSPI
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_SASL_SSPI);
#endif
#ifdef MONGOC_HAVE_SOCKLEN
_set_bit (bf, byte_count, MONGOC_MD_FLAG_HAVE_SOCKLEN);
#endif
#ifdef MONGOC_ENABLE_COMPRESSION
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_COMPRESSION);
#endif
#ifdef MONGOC_ENABLE_COMPRESSION_SNAPPY
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_COMPRESSION_SNAPPY);
#endif
#ifdef MONGOC_ENABLE_COMPRESSION_ZLIB
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_COMPRESSION_ZLIB);
#endif
#ifdef MONGOC_HAVE_RES_NSEARCH
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_RES_NSEARCH);
#endif
#ifdef MONGOC_HAVE_RES_NDESTROY
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_RES_NDESTROY);
#endif
#ifdef MONGOC_HAVE_RES_NCLOSE
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_RES_NCLOSE);
#endif
#ifdef MONGOC_HAVE_RES_SEARCH
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_RES_SEARCH);
#endif
#ifdef MONGOC_HAVE_DNSAPI
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_DNSAPI);
#endif
#ifdef MONGOC_HAVE_RDTSCP
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_RDTSCP);
#endif
#ifdef MONGOC_HAVE_SCHED_GETCPU
_set_bit (bf, byte_count, MONGOC_MD_FLAG_HAVE_SCHED_GETCPU);
#endif
#ifdef MONGOC_ENABLE_SHM_COUNTERS
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_SHM_COUNTERS);
#endif
if (MONGOC_TRACE_ENABLED) {
_set_bit (bf, byte_count, MONGOC_MD_FLAG_TRACE);
}
#ifdef MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_CLIENT_SIDE_ENCRYPTION);
#endif
#ifdef MONGOC_ENABLE_MONGODB_AWS_AUTH
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_MONGODB_AWS_AUTH);
#endif
if (MONGOC_SRV_ENABLED) {
_set_bit (bf, byte_count, MONGOC_MD_FLAG_ENABLE_SRV);
}
mcommon_string_append_t append;
mcommon_string_set_append (mcommon_string_new_with_capacity ("0x", 2, 2 + byte_count * 2), &append);
for (uint32_t i = 0u; i < byte_count; i++) {
mcommon_string_append_printf (&append, "%02x", bf[i]);
}
bson_free (bf);
return mcommon_string_from_append_destroy_with_steal (&append);
}
static char *
_get_os_type (void)
{
#ifdef MONGOC_OS_TYPE
return bson_strndup (MONGOC_OS_TYPE, HANDSHAKE_OS_TYPE_MAX);
#else
return bson_strndup ("unknown", HANDSHAKE_OS_TYPE_MAX);
#endif
}
static char *
_get_os_architecture (void)
{
const char *ret = NULL;
#ifdef _WIN32
SYSTEM_INFO system_info;
DWORD arch;
GetSystemInfo (&system_info);
arch = system_info.wProcessorArchitecture;
switch (arch) {
case PROCESSOR_ARCHITECTURE_AMD64:
ret = "x86_64";
break;
case PROCESSOR_ARCHITECTURE_ARM:
ret = "ARM";
break;
case PROCESSOR_ARCHITECTURE_IA64:
ret = "IA64";
break;
case PROCESSOR_ARCHITECTURE_INTEL:
ret = "x86";
break;
case PROCESSOR_ARCHITECTURE_UNKNOWN:
ret = "Unknown";
break;
default:
ret = "Other";
break;
}
#elif defined(_POSIX_VERSION)
struct utsname system_info;
if (uname (&system_info) >= 0) {
ret = system_info.machine;
}
#endif
if (ret) {
return bson_strndup (ret, HANDSHAKE_OS_ARCHITECTURE_MAX);
}
return NULL;
}
#ifndef MONGOC_OS_IS_LINUX
static char *
_get_os_name (void)
{
#ifdef MONGOC_OS_NAME
return bson_strndup (MONGOC_OS_NAME, HANDSHAKE_OS_NAME_MAX);
#elif defined(_POSIX_VERSION)
struct utsname system_info;
if (uname (&system_info) >= 0) {
return bson_strndup (system_info.sysname, HANDSHAKE_OS_NAME_MAX);
}
#endif
return NULL;
}
static char *
_get_os_version (void)
{
char *ret = bson_malloc (HANDSHAKE_OS_VERSION_MAX);
bool found = false;
#ifdef _WIN32
OSVERSIONINFO osvi;
ZeroMemory (&osvi, sizeof (OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
#if defined(_MSC_VER)
// CDRIVER-4263: GetVersionEx is deprecated.
#pragma warning(suppress : 4996)
const BOOL res = GetVersionEx (&osvi);
#else
const BOOL res = GetVersionEx (&osvi);
#endif
if (res) {
// Truncation is OK.
int req = bson_snprintf (
ret, HANDSHAKE_OS_VERSION_MAX, "%lu.%lu (%lu)", osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.dwBuildNumber);
BSON_ASSERT (req > 0);
found = true;
} else {
- MONGOC_WARNING ("Error with GetVersionEx(): %lu", GetLastError ());
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_WARNING ("Error with GetVersionEx(): %s", msg);
+ bson_free (msg);
}
#elif defined(_POSIX_VERSION)
struct utsname system_info;
if (uname (&system_info) >= 0) {
bson_strncpy (ret, system_info.release, HANDSHAKE_OS_VERSION_MAX);
found = true;
} else {
MONGOC_WARNING ("Error with uname(): %d", errno);
}
#endif
if (!found) {
bson_free (ret);
ret = NULL;
}
return ret;
}
#endif
static void
_get_system_info (mongoc_handshake_t *handshake)
{
handshake->os_type = _get_os_type ();
#ifdef MONGOC_OS_IS_LINUX
_mongoc_linux_distro_scanner_get_distro (&handshake->os_name, &handshake->os_version);
#else
handshake->os_name = _get_os_name ();
handshake->os_version = _get_os_version ();
#endif
handshake->os_architecture = _get_os_architecture ();
}
static void
_free_system_info (mongoc_handshake_t *handshake)
{
bson_free (handshake->os_type);
bson_free (handshake->os_name);
bson_free (handshake->os_version);
bson_free (handshake->os_architecture);
}
static void
_get_driver_info (mongoc_handshake_t *handshake)
{
handshake->driver_name = bson_strndup ("mongoc", HANDSHAKE_DRIVER_NAME_MAX);
handshake->driver_version = bson_strndup (MONGOC_VERSION_S, HANDSHAKE_DRIVER_VERSION_MAX);
}
static void
_free_driver_info (mongoc_handshake_t *handshake)
{
bson_free (handshake->driver_name);
bson_free (handshake->driver_version);
}
static void
_set_platform_string (mongoc_handshake_t *handshake)
{
handshake->platform = bson_strdup ("");
}
static void
_free_env_info (mongoc_handshake_t *handshake)
{
bson_free (handshake->env_region);
}
static void
_get_env_info (mongoc_handshake_t *handshake)
{
char *aws_env = _mongoc_getenv ("AWS_EXECUTION_ENV");
char *aws_lambda = _mongoc_getenv ("AWS_LAMBDA_RUNTIME_API");
char *vercel_env = _mongoc_getenv ("VERCEL");
char *azure_env = _mongoc_getenv ("FUNCTIONS_WORKER_RUNTIME");
char *gcp_env = _mongoc_getenv ("K_SERVICE");
char *memory_str = NULL;
char *timeout_str = NULL;
char *region_str = NULL;
bool is_aws = (aws_env && strlen (aws_env) && (aws_env == strstr (aws_env, "AWS_Lambda_"))) ||
(aws_lambda && strlen (aws_lambda));
bool is_vercel = vercel_env && strlen (vercel_env);
bool is_azure = azure_env && strlen (azure_env);
bool is_gcp = gcp_env && strlen (gcp_env);
handshake->env = MONGOC_HANDSHAKE_ENV_NONE;
handshake->env_region = NULL;
handshake->env_memory_mb.set = false;
handshake->env_timeout_sec.set = false;
if ((is_aws || is_vercel) + is_azure + is_gcp != 1) {
goto cleanup;
}
if (is_aws && !is_vercel) {
handshake->env = MONGOC_HANDSHAKE_ENV_AWS;
region_str = _mongoc_getenv ("AWS_REGION");
memory_str = _mongoc_getenv ("AWS_LAMBDA_FUNCTION_MEMORY_SIZE");
} else if (is_vercel) {
handshake->env = MONGOC_HANDSHAKE_ENV_VERCEL;
region_str = _mongoc_getenv ("VERCEL_REGION");
} else if (is_gcp) {
handshake->env = MONGOC_HANDSHAKE_ENV_GCP;
region_str = _mongoc_getenv ("FUNCTION_REGION");
memory_str = _mongoc_getenv ("FUNCTION_MEMORY_MB");
timeout_str = _mongoc_getenv ("FUNCTION_TIMEOUT_SEC");
} else if (is_azure) {
handshake->env = MONGOC_HANDSHAKE_ENV_AZURE;
}
if (memory_str) {
char *endptr;
int64_t env_memory_mb = bson_ascii_strtoll (memory_str, &endptr, 10);
bool parse_ok = endptr == memory_str + (strlen (memory_str));
bool in_range = mcommon_in_range_int32_t_signed (env_memory_mb);
if (parse_ok && in_range) {
handshake->env_memory_mb.set = true;
handshake->env_memory_mb.value = (int32_t) env_memory_mb;
}
}
if (timeout_str) {
char *endptr;
int64_t env_timeout_sec = bson_ascii_strtoll (timeout_str, &endptr, 10);
bool parse_ok = endptr == timeout_str + (strlen (timeout_str));
bool in_range = mcommon_in_range_int32_t_signed (env_timeout_sec);
if (parse_ok && in_range) {
handshake->env_timeout_sec.set = true;
handshake->env_timeout_sec.value = (int32_t) env_timeout_sec;
}
}
if (region_str && strlen (region_str)) {
handshake->env_region = bson_strdup (region_str);
}
cleanup:
bson_free (aws_env);
bson_free (aws_lambda);
bson_free (vercel_env);
bson_free (azure_env);
bson_free (gcp_env);
bson_free (memory_str);
bson_free (timeout_str);
bson_free (region_str);
}
static void
_set_compiler_info (mongoc_handshake_t *handshake)
{
mcommon_string_append_t append;
mcommon_string_new_as_append (&append);
char *config_str = _mongoc_handshake_get_config_hex_string ();
mcommon_string_append_printf (&append, "cfg=%s", config_str);
bson_free (config_str);
#ifdef _POSIX_VERSION
mcommon_string_append_printf (&append, " posix=%ld", _POSIX_VERSION);
#endif
#ifdef __STDC_VERSION__
mcommon_string_append_printf (&append, " stdc=%ld", __STDC_VERSION__);
#endif
mcommon_string_append_printf (&append, " CC=%s", MONGOC_COMPILER);
#ifdef MONGOC_COMPILER_VERSION
mcommon_string_append_printf (&append, " %s", MONGOC_COMPILER_VERSION);
#endif
handshake->compiler_info = mcommon_string_from_append_destroy_with_steal (&append);
}
static void
_set_flags (mongoc_handshake_t *handshake)
{
mcommon_string_append_t append;
mcommon_string_new_as_append (&append);
if (strlen (MONGOC_EVALUATE_STR (MONGOC_USER_SET_CFLAGS)) > 0) {
mcommon_string_append_printf (&append, " CFLAGS=%s", MONGOC_EVALUATE_STR (MONGOC_USER_SET_CFLAGS));
}
if (strlen (MONGOC_EVALUATE_STR (MONGOC_USER_SET_LDFLAGS)) > 0) {
mcommon_string_append_printf (&append, " LDFLAGS=%s", MONGOC_EVALUATE_STR (MONGOC_USER_SET_LDFLAGS));
}
handshake->flags = mcommon_string_from_append_destroy_with_steal (&append);
}
static void
_free_platform_string (mongoc_handshake_t *handshake)
{
bson_free (handshake->platform);
bson_free (handshake->compiler_info);
bson_free (handshake->flags);
}
void
_mongoc_handshake_init (void)
{
_get_system_info (_mongoc_handshake_get ());
_get_driver_info (_mongoc_handshake_get ());
_set_platform_string (_mongoc_handshake_get ());
_get_env_info (_mongoc_handshake_get ());
_set_compiler_info (_mongoc_handshake_get ());
_set_flags (_mongoc_handshake_get ());
_mongoc_handshake_get ()->frozen = false;
bson_mutex_init (&gHandshakeLock);
}
void
_mongoc_handshake_cleanup (void)
{
mongoc_handshake_t *h = _mongoc_handshake_get ();
_free_system_info (h);
_free_driver_info (h);
_free_platform_string (h);
_free_env_info (h);
*h = (mongoc_handshake_t){0};
bson_mutex_destroy (&gHandshakeLock);
}
static void
_append_platform_field (bson_t *doc, const char *platform, bool truncate)
{
char *compiler_info = _mongoc_handshake_get ()->compiler_info;
char *flags = _mongoc_handshake_get ()->flags;
const uint32_t overhead = (/* 1 byte for utf8 tag */
1 +
/* key size */
(int) strlen (HANDSHAKE_PLATFORM_FIELD) + 1 +
/* 4 bytes for length of string */
4 +
/* NUL terminator */
1);
if (truncate && doc->len >= HANDSHAKE_MAX_SIZE - overhead) {
return;
}
mcommon_string_append_t combined_platform;
mcommon_string_set_append_with_limit (mcommon_string_new_with_capacity ("", 0, HANDSHAKE_MAX_SIZE - overhead),
&combined_platform,
truncate ? HANDSHAKE_MAX_SIZE - overhead - doc->len : UINT32_MAX - 1u);
mcommon_string_append (&combined_platform, platform);
mcommon_string_append_all_or_none (&combined_platform, compiler_info);
mcommon_string_append_all_or_none (&combined_platform, flags);
bson_append_utf8 (doc,
HANDSHAKE_PLATFORM_FIELD,
strlen (HANDSHAKE_PLATFORM_FIELD),
mcommon_str_from_append (&combined_platform),
mcommon_strlen_from_append (&combined_platform));
mcommon_string_from_append_destroy (&combined_platform);
}
static bool
_get_subdoc_static (bson_t *doc, char *subdoc_name, bson_t *out)
{
bson_iter_t iter;
if (bson_iter_init_find (&iter, doc, subdoc_name) && BSON_ITER_HOLDS_DOCUMENT (&iter)) {
uint32_t len;
const uint8_t *data;
bson_iter_document (&iter, &len, &data);
BSON_ASSERT (bson_init_static (out, data, len));
return true;
}
return false;
}
static bool
_truncate_handshake (bson_t **doc)
{
if ((*doc)->len > HANDSHAKE_MAX_SIZE) {
bson_t env_doc;
if (_get_subdoc_static (*doc, "env", &env_doc)) {
bson_t *new_env = bson_new ();
bson_copy_to_including_noinit (&env_doc, new_env, "name", NULL);
bson_t *new_doc = bson_new ();
bson_copy_to_excluding_noinit (*doc, new_doc, "env", NULL);
bson_append_document (new_doc, "env", -1, new_env);
bson_destroy (new_env);
bson_destroy (*doc);
*doc = new_doc;
}
}
if ((*doc)->len > HANDSHAKE_MAX_SIZE) {
bson_t os_doc;
if (_get_subdoc_static (*doc, "os", &os_doc)) {
bson_t *new_os = bson_new ();
bson_copy_to_including_noinit (&os_doc, new_os, "type", NULL);
bson_t *new_doc = bson_new ();
bson_copy_to_excluding_noinit (*doc, new_doc, "os", NULL);
bson_append_document (new_doc, "os", -1, new_os);
bson_destroy (new_os);
bson_destroy (*doc);
*doc = new_doc;
}
}
if ((*doc)->len > HANDSHAKE_MAX_SIZE) {
bson_t *new_doc = bson_new ();
bson_copy_to_excluding_noinit (*doc, new_doc, "env", NULL);
bson_destroy (*doc);
*doc = new_doc;
}
const mongoc_handshake_t *md = _mongoc_handshake_get ();
if ((*doc)->len > HANDSHAKE_MAX_SIZE && md->platform) {
bson_t *new_doc = bson_new ();
bson_copy_to_excluding_noinit (*doc, new_doc, "platform", NULL);
_append_platform_field (new_doc, md->platform, true);
bson_destroy (*doc);
*doc = new_doc;
}
return (*doc)->len <= HANDSHAKE_MAX_SIZE;
}
/*
* Return true if we build the document, and it's not too big
* false if there's no way to prevent the doc from being too big. In this
* case, the caller shouldn't include it with hello
*/
bson_t *
_mongoc_handshake_build_doc_with_application (const char *appname)
{
const mongoc_handshake_t *md = _mongoc_handshake_get ();
char *env_name = NULL;
switch (md->env) {
case MONGOC_HANDSHAKE_ENV_AWS:
env_name = "aws.lambda";
break;
case MONGOC_HANDSHAKE_ENV_GCP:
env_name = "gcp.func";
break;
case MONGOC_HANDSHAKE_ENV_AZURE:
env_name = "azure.func";
break;
case MONGOC_HANDSHAKE_ENV_VERCEL:
env_name = "vercel";
break;
case MONGOC_HANDSHAKE_ENV_NONE:
env_name = NULL;
break;
default:
break;
}
bson_t *doc = bson_new ();
// Optimistically include all handshake data
bsonBuildAppend (
*doc,
if (appname, then (kv ("application", doc (kv ("name", cstr (appname)))))),
kv ("driver", doc (kv ("name", cstr (md->driver_name)), kv ("version", cstr (md->driver_version)))),
kv ("os",
doc (kv ("type", cstr (md->os_type)),
if (md->os_name, then (kv ("name", cstr (md->os_name)))),
if (md->os_version, then (kv ("version", cstr (md->os_version)))),
if (md->os_architecture, then (kv ("architecture", cstr (md->os_architecture)))))),
if (env_name,
then (kv ("env",
doc (kv ("name", cstr (env_name)),
if (md->env_timeout_sec.set, then (kv ("timeout_sec", int32 (md->env_timeout_sec.value)))),
if (md->env_memory_mb.set, then (kv ("memory_mb", int32 (md->env_memory_mb.value)))),
if (md->env_region, then (kv ("region", cstr (md->env_region)))))))));
if (md->platform) {
_append_platform_field (doc, md->platform, false);
}
if (_truncate_handshake (&doc)) {
return doc;
} else {
bson_destroy (doc);
return NULL;
}
}
void
_mongoc_handshake_freeze (void)
{
bson_mutex_lock (&gHandshakeLock);
_mongoc_handshake_get ()->frozen = true;
bson_mutex_unlock (&gHandshakeLock);
}
static void
_mongoc_handshake_freeze_nolock (void)
{
_mongoc_handshake_get ()->frozen = true;
}
/*
* free (*s) and make *s point to *s concated with suffix.
* If *s is NULL it's treated like it's an empty string.
*/
static void
_append_and_truncate (char **s, const char *suffix, size_t max_len)
{
char *old_str = *s;
const size_t delim_len = strlen (" / ");
BSON_ASSERT_PARAM (s);
BSON_ASSERT_PARAM (suffix);
const char *const prefix = old_str ? old_str : "";
const size_t required_space = strlen (prefix) + delim_len;
if (max_len <= required_space) {
/* the old string already takes the whole allotted space */
return;
}
const size_t space_for_suffix = max_len - required_space;
BSON_ASSERT (mcommon_in_range_unsigned (int, space_for_suffix));
*s = bson_strdup_printf ("%s / %.*s", prefix, (int) space_for_suffix, suffix);
BSON_ASSERT (strlen (*s) <= max_len);
bson_free (old_str);
}
/*
* Set some values in our global handshake struct. These values will be sent
* to the server as part of the initial connection handshake (hello).
* If this function is called more than once, or after we've connected to a
* mongod, then it will do nothing and return false. It will return true if
* it successfully sets the values.
*
* All arguments are optional.
*/
bool
mongoc_handshake_data_append (const char *driver_name, const char *driver_version, const char *platform)
{
int platform_space;
bson_mutex_lock (&gHandshakeLock);
if (_mongoc_handshake_get ()->frozen) {
bson_mutex_unlock (&gHandshakeLock);
return false;
}
BSON_ASSERT (_mongoc_handshake_get ()->platform);
/* allow practically any size for "platform", we'll trim it down in
* _mongoc_handshake_build_doc_with_application */
platform_space = HANDSHAKE_MAX_SIZE - (int) strlen (_mongoc_handshake_get ()->platform);
if (platform) {
/* we check for an empty string as a special case to avoid an
* unnecessary delimiter being added in front of the string by
* _append_and_truncate */
if (_mongoc_handshake_get ()->platform[0] == '\0') {
bson_free (_mongoc_handshake_get ()->platform);
_mongoc_handshake_get ()->platform = bson_strdup_printf ("%.*s", platform_space, platform);
} else {
_append_and_truncate (&_mongoc_handshake_get ()->platform, platform, HANDSHAKE_MAX_SIZE);
}
}
if (driver_name) {
_append_and_truncate (&_mongoc_handshake_get ()->driver_name, driver_name, HANDSHAKE_DRIVER_NAME_MAX);
}
if (driver_version) {
_append_and_truncate (&_mongoc_handshake_get ()->driver_version, driver_version, HANDSHAKE_DRIVER_VERSION_MAX);
}
_mongoc_handshake_freeze_nolock ();
bson_mutex_unlock (&gHandshakeLock);
return true;
}
mongoc_handshake_t *
_mongoc_handshake_get (void)
{
return &gMongocHandshake;
}
bool
_mongoc_handshake_appname_is_valid (const char *appname)
{
return strlen (appname) <= MONGOC_HANDSHAKE_APPNAME_MAX;
}
void
_mongoc_handshake_append_sasl_supported_mechs (const mongoc_uri_t *uri, bson_t *cmd)
{
const char *username;
char *db_user;
username = mongoc_uri_get_username (uri);
db_user = bson_strdup_printf ("%s.%s", mongoc_uri_get_auth_source (uri), username);
bson_append_utf8 (cmd, "saslSupportedMechs", 18, db_user, -1);
bson_free (db_user);
}
void
_mongoc_handshake_parse_sasl_supported_mechs (const bson_t *hello,
mongoc_handshake_sasl_supported_mechs_t *sasl_supported_mechs)
{
memset (sasl_supported_mechs, 0, sizeof (*sasl_supported_mechs));
bsonParse (*hello,
find (keyWithType ("saslSupportedMechs", array),
visitEach (case (when (strEqual ("SCRAM-SHA-256"), do (sasl_supported_mechs->scram_sha_256 = true)),
when (strEqual ("SCRAM-SHA-1"), do (sasl_supported_mechs->scram_sha_1 = true))))));
}
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-http-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-http-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-http-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-http-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-http.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-http.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-http.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-http.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-index.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-index.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-index.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-index.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-index.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-index.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-index.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-index.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-init.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-init.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-init.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-init.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-init.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-init.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-init.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-init.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-interrupt-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-interrupt-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-interrupt-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-interrupt-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-interrupt.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-interrupt.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-interrupt.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-interrupt.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-iovec.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-iovec.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-iovec.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-iovec.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-libressl-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-libressl-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-libressl-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-libressl-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-libressl.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-libressl.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-libressl.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-libressl.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-linux-distro-scanner-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-linux-distro-scanner-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-linux-distro-scanner-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-linux-distro-scanner-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-linux-distro-scanner.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-linux-distro-scanner.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-linux-distro-scanner.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-linux-distro-scanner.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-list-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-list-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-list-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-list-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-list.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-list.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-list.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-list.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-and-monitor-private.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-and-monitor-private.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-and-monitor-private.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-and-monitor-private.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-and-monitor-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-and-monitor-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-and-monitor-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-and-monitor-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-log.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-macros.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-macros.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-macros.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-macros.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-op-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-op-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-op-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-op-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-op.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-op.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-op.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-op.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-memcmp-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-memcmp-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-memcmp-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-memcmp-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-memcmp.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-memcmp.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-memcmp.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-memcmp.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ocsp-cache-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ocsp-cache-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ocsp-cache-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ocsp-cache-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ocsp-cache.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ocsp-cache.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ocsp-cache.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ocsp-cache.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opcode.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opcode.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opcode.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opcode.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opcode.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opcode.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opcode.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opcode.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl.c
similarity index 98%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl.c
index 483c8959..b5b7a56c 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl.c
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl.c
@@ -1,1086 +1,1080 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <mongoc/mongoc-config.h>
#ifdef MONGOC_ENABLE_SSL_OPENSSL
#include <bson/bson.h>
#include <limits.h>
#include <openssl/bio.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
#include <openssl/ocsp.h>
#include <openssl/x509v3.h>
#include <openssl/crypto.h>
#include <string.h>
+#include <mongoc/mongoc-error-private.h>
#include <mongoc/mongoc-http-private.h>
#include <mongoc/mongoc-init.h>
#include <mongoc/mongoc-openssl-private.h>
#include <mongoc/mongoc-socket.h>
#include <mongoc/mongoc-ssl.h>
#include <mongoc/mongoc-stream-tls-openssl-private.h>
#include <mongoc/mongoc-thread-private.h>
#include <mongoc/mongoc-trace-private.h>
#include <mongoc/mongoc-util-private.h>
#ifdef MONGOC_ENABLE_OCSP_OPENSSL
#include <mongoc/mongoc-ocsp-cache-private.h>
#endif
#ifdef _WIN32
#include <wincrypt.h>
#endif
#if OPENSSL_VERSION_NUMBER < 0x10100000L
static bson_mutex_t *gMongocOpenSslThreadLocks;
static void
_mongoc_openssl_thread_startup (void);
static void
_mongoc_openssl_thread_cleanup (void);
#endif
#ifndef MONGOC_HAVE_ASN1_STRING_GET0_DATA
#define ASN1_STRING_get0_data ASN1_STRING_data
#endif
static int tlsfeature_nid;
/**
* _mongoc_openssl_init:
*
* initialization function for SSL
*
* This needs to get called early on and is not threadsafe. Called by
* mongoc_init.
*/
void
_mongoc_openssl_init (void)
{
SSL_CTX *ctx;
SSL_library_init ();
SSL_load_error_strings ();
#if OPENSSL_VERSION_NUMBER < 0x30000000L
// See:
// https://www.openssl.org/docs/man3.0/man7/migration_guide.html#Deprecated-function-mappings
ERR_load_BIO_strings ();
#endif
OpenSSL_add_all_algorithms ();
#if OPENSSL_VERSION_NUMBER < 0x10100000L
_mongoc_openssl_thread_startup ();
#endif
ctx = SSL_CTX_new (SSLv23_method ());
if (!ctx) {
MONGOC_ERROR ("Failed to initialize OpenSSL.");
}
#ifdef NID_tlsfeature
tlsfeature_nid = NID_tlsfeature;
#else
/* TLS versions before 1.1.0 did not define the TLS Feature extension. */
tlsfeature_nid = OBJ_create ("1.3.6.1.5.5.7.1.24", "tlsfeature", "TLS Feature");
#endif
SSL_CTX_free (ctx);
}
void
_mongoc_openssl_cleanup (void)
{
#if OPENSSL_VERSION_NUMBER < 0x10100000L
_mongoc_openssl_thread_cleanup ();
#endif
}
static int
_mongoc_openssl_password_cb (char *buf, int num, int rwflag, void *user_data)
{
char *pass = (char *) user_data;
int pass_len = (int) strlen (pass);
BSON_UNUSED (rwflag);
if (num < pass_len + 1) {
return 0;
}
bson_strncpy (buf, pass, num);
return pass_len;
}
#ifdef _WIN32
bool
_mongoc_openssl_import_cert_store (LPWSTR store_name, DWORD dwFlags, X509_STORE *openssl_store)
{
PCCERT_CONTEXT cert = NULL;
HCERTSTORE cert_store;
cert_store = CertOpenStore (CERT_STORE_PROV_SYSTEM, /* provider */
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, /* certificate encoding */
0, /* unused */
dwFlags, /* dwFlags */
store_name); /* system store name. "My" or "Root" */
if (cert_store == NULL) {
- LPTSTR msg = NULL;
- FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,
- NULL,
- GetLastError (),
- LANG_NEUTRAL,
- (LPTSTR) &msg,
- 0,
- NULL);
- MONGOC_ERROR ("Can't open CA store: 0x%.8X: '%s'", GetLastError (), msg);
- LocalFree (msg);
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_ERROR ("Can't open CA store: %s", msg);
+ bson_free (msg);
return false;
}
while ((cert = CertEnumCertificatesInStore (cert_store, cert)) != NULL) {
X509 *x509Obj = d2i_X509 (NULL, (const unsigned char **) &cert->pbCertEncoded, cert->cbCertEncoded);
if (x509Obj == NULL) {
MONGOC_WARNING ("Error parsing X509 object from Windows certificate store");
continue;
}
X509_STORE_add_cert (openssl_store, x509Obj);
X509_free (x509Obj);
}
CertCloseStore (cert_store, 0);
return true;
}
bool
_mongoc_openssl_import_cert_stores (SSL_CTX *context)
{
bool retval;
X509_STORE *store = SSL_CTX_get_cert_store (context);
if (!store) {
MONGOC_WARNING ("no X509 store found for SSL context while loading "
"system certificates");
return false;
}
retval =
_mongoc_openssl_import_cert_store (L"root", CERT_SYSTEM_STORE_CURRENT_USER | CERT_STORE_READONLY_FLAG, store);
retval &=
_mongoc_openssl_import_cert_store (L"CA", CERT_SYSTEM_STORE_CURRENT_USER | CERT_STORE_READONLY_FLAG, store);
return retval;
}
#endif
#if OPENSSL_VERSION_NUMBER > 0x10002000L
bool
_mongoc_openssl_check_peer_hostname (SSL *ssl, const char *host, bool allow_invalid_hostname)
{
X509 *peer = NULL;
if (allow_invalid_hostname) {
return true;
}
peer = SSL_get_peer_certificate (ssl);
if (peer && (X509_check_host (peer, host, 0, 0, NULL) == 1 || X509_check_ip_asc (peer, host, 0) == 1)) {
X509_free (peer);
return true;
}
if (peer) {
X509_free (peer);
}
return false;
}
#else
/** mongoc_openssl_hostcheck
*
* rfc 6125 match a given hostname against a given pattern
*
* Patterns come from DNS common names or subjectAltNames.
*
* This code is meant to implement RFC 6125 6.4.[1-3]
*
*/
static bool
_mongoc_openssl_hostcheck (const char *pattern, const char *hostname)
{
const char *pattern_label_end;
const char *pattern_wildcard;
const char *hostname_label_end;
size_t prefixlen;
size_t suffixlen;
TRACE ("Comparing '%s' == '%s'", pattern, hostname);
pattern_wildcard = strchr (pattern, '*');
if (pattern_wildcard == NULL) {
return strcasecmp (pattern, hostname) == 0;
}
pattern_label_end = strchr (pattern, '.');
/* Bail out on wildcarding in a couple of situations:
* o we don't have 2 dots - we're not going to wildcard root tlds
* o the wildcard isn't in the left most group (separated by dots)
* o the pattern is embedded in an A-label or U-label
*/
if (pattern_label_end == NULL || strchr (pattern_label_end + 1, '.') == NULL ||
pattern_wildcard > pattern_label_end || strncasecmp (pattern, "xn--", 4) == 0) {
return strcasecmp (pattern, hostname) == 0;
}
hostname_label_end = strchr (hostname, '.');
/* we know we have a dot in the pattern, we need one in the hostname */
if (hostname_label_end == NULL || strcasecmp (pattern_label_end, hostname_label_end)) {
return 0;
}
/* The wildcard must match at least one character, so the left part of the
* hostname is at least as large as the left part of the pattern. */
if ((hostname_label_end - hostname) < (pattern_label_end - pattern)) {
return 0;
}
/* If the left prefix group before the star matches and right of the star
* matches... we have a wildcard match */
prefixlen = pattern_wildcard - pattern;
suffixlen = pattern_label_end - (pattern_wildcard + 1);
return strncasecmp (pattern, hostname, prefixlen) == 0 &&
strncasecmp (pattern_wildcard + 1, hostname_label_end - suffixlen, suffixlen) == 0;
}
/** check if a provided cert matches a passed hostname
*/
bool
_mongoc_openssl_check_peer_hostname (SSL *ssl, const char *host, bool allow_invalid_hostname)
{
X509 *peer;
X509_NAME *subject_name;
X509_NAME_ENTRY *entry;
ASN1_STRING *entry_data;
int length;
int idx;
int r = 0;
long verify_status;
size_t addrlen = 0;
unsigned char addr4[sizeof (struct in_addr)];
unsigned char addr6[sizeof (struct in6_addr)];
int i;
int n_sans = -1;
int target = GEN_DNS;
STACK_OF (GENERAL_NAME) *sans = NULL;
ENTRY;
BSON_ASSERT (ssl);
BSON_ASSERT (host);
if (allow_invalid_hostname) {
RETURN (true);
}
/** if the host looks like an IP address, match that, otherwise we assume we
* have a DNS name */
if (inet_pton (AF_INET, host, &addr4)) {
target = GEN_IPADD;
addrlen = sizeof addr4;
} else if (inet_pton (AF_INET6, host, &addr6)) {
target = GEN_IPADD;
addrlen = sizeof addr6;
}
peer = SSL_get_peer_certificate (ssl);
if (!peer) {
MONGOC_WARNING ("SSL Certification verification failed: %s", ERR_error_string (ERR_get_error (), NULL));
RETURN (false);
}
verify_status = SSL_get_verify_result (ssl);
if (verify_status == X509_V_OK) {
/* gets a stack of alt names that we can iterate through */
sans = (STACK_OF (GENERAL_NAME) *) X509_get_ext_d2i ((X509 *) peer, NID_subject_alt_name, NULL, NULL);
if (sans) {
n_sans = sk_GENERAL_NAME_num (sans);
/* loop through the stack, or until we find a match */
for (i = 0; i < n_sans && !r; i++) {
const GENERAL_NAME *name = sk_GENERAL_NAME_value (sans, i);
/* skip entries that can't apply, I.e. IP entries if we've got a
* DNS host */
if (name->type == target) {
const char *check;
check = (const char *) ASN1_STRING_get0_data (name->d.ia5);
length = ASN1_STRING_length (name->d.ia5);
switch (target) {
case GEN_DNS:
/* check that we don't have an embedded null byte */
if ((length == bson_strnlen (check, length)) && _mongoc_openssl_hostcheck (check, host)) {
r = 1;
}
break;
case GEN_IPADD:
if (length == addrlen) {
if (length == sizeof addr6 && !memcmp (check, &addr6, length)) {
r = 1;
} else if (length == sizeof addr4 && !memcmp (check, &addr4, length)) {
r = 1;
}
}
break;
default:
BSON_ASSERT (0);
break;
}
}
}
GENERAL_NAMES_free (sans);
} else {
subject_name = X509_get_subject_name (peer);
if (subject_name) {
i = -1;
/* skip to the last common name */
while ((idx = X509_NAME_get_index_by_NID (subject_name, NID_commonName, i)) >= 0) {
i = idx;
}
if (i >= 0) {
entry = X509_NAME_get_entry (subject_name, i);
entry_data = X509_NAME_ENTRY_get_data (entry);
if (entry_data) {
char *check;
/* TODO: I've heard tell that old versions of SSL crap out
* when calling ASN1_STRING_to_UTF8 on already utf8 data.
* Check up on that */
length = ASN1_STRING_to_UTF8 ((unsigned char **) &check, entry_data);
if (length >= 0) {
/* check for embedded nulls */
if ((length == bson_strnlen (check, length)) && _mongoc_openssl_hostcheck (check, host)) {
r = 1;
}
OPENSSL_free (check);
}
}
}
}
}
}
X509_free (peer);
RETURN (r);
}
#endif /* OPENSSL_VERSION_NUMBER */
static bool
_mongoc_openssl_setup_ca (SSL_CTX *ctx, const char *cert, const char *cert_dir)
{
BSON_ASSERT (ctx);
BSON_ASSERT (cert || cert_dir);
if (!SSL_CTX_load_verify_locations (ctx, cert, cert_dir)) {
MONGOC_ERROR ("Cannot load Certificate Authorities from '%s' and '%s'", cert, cert_dir);
return 0;
}
return 1;
}
static bool
_mongoc_openssl_setup_crl (SSL_CTX *ctx, const char *crlfile)
{
X509_STORE *store;
X509_LOOKUP *lookup;
int status;
store = SSL_CTX_get_cert_store (ctx);
X509_STORE_set_flags (store, X509_V_FLAG_CRL_CHECK);
lookup = X509_STORE_add_lookup (store, X509_LOOKUP_file ());
status = X509_load_crl_file (lookup, crlfile, X509_FILETYPE_PEM);
return status != 0;
}
static bool
_mongoc_openssl_setup_pem_file (SSL_CTX *ctx, const char *pem_file, const char *password)
{
if (!SSL_CTX_use_certificate_chain_file (ctx, pem_file)) {
MONGOC_ERROR ("Cannot find certificate in '%s'", pem_file);
return 0;
}
if (password) {
SSL_CTX_set_default_passwd_cb_userdata (ctx, (void *) password);
SSL_CTX_set_default_passwd_cb (ctx, _mongoc_openssl_password_cb);
}
if (!(SSL_CTX_use_PrivateKey_file (ctx, pem_file, SSL_FILETYPE_PEM))) {
MONGOC_ERROR ("Cannot find private key in: '%s'", pem_file);
return 0;
}
if (!(SSL_CTX_check_private_key (ctx))) {
MONGOC_ERROR ("Cannot load private key: '%s'", pem_file);
return 0;
}
return 1;
}
#ifdef MONGOC_ENABLE_OCSP_OPENSSL
static X509 *
_get_issuer (X509 *cert, STACK_OF (X509) * chain)
{
X509 *issuer = NULL, *candidate = NULL;
X509_NAME *issuer_name = NULL, *candidate_name = NULL;
int i;
issuer_name = X509_get_issuer_name (cert);
for (i = 0; i < sk_X509_num (chain) && issuer == NULL; i++) {
candidate = sk_X509_value (chain, i);
candidate_name = X509_get_subject_name (candidate);
if (0 == X509_NAME_cmp (candidate_name, issuer_name)) {
issuer = candidate;
}
}
RETURN (issuer);
}
#if OPENSSL_VERSION_NUMBER >= 0x10100000L
/* OpenSSL 1.1.0+ has conveniences that we polyfill in older OpenSSL versions.
*/
STACK_OF (X509) * _get_verified_chain (SSL *ssl)
{
return SSL_get0_verified_chain (ssl);
}
void
_free_verified_chain (STACK_OF (X509) * verified_chain)
{
BSON_UNUSED (verified_chain);
/* _get_verified_chain does not return a copy. Do nothing. */
return;
}
const STACK_OF (X509_EXTENSION) * _get_extensions (const X509 *cert)
{
return X509_get0_extensions (cert);
}
#else
/* Polyfill functionality for pre 1.1.0 OpenSSL */
STACK_OF (X509) * _get_verified_chain (SSL *ssl)
{
X509_STORE *store = NULL;
X509 *peer = NULL;
STACK_OF (X509) *peer_chain = NULL;
X509_STORE_CTX *store_ctx = NULL;
STACK_OF (X509) *verified_chain = NULL;
/* Get the certificate the server presented. */
peer = SSL_get_peer_certificate (ssl);
/* Get the chain of certificates the server presented. This is not a verified
* chain. */
peer_chain = SSL_get_peer_cert_chain (ssl);
store = SSL_CTX_get_cert_store (SSL_get_SSL_CTX (ssl));
store_ctx = X509_STORE_CTX_new ();
if (!X509_STORE_CTX_init (store_ctx, store, peer, peer_chain)) {
MONGOC_ERROR ("failed to initialize X509 store");
goto fail;
}
if (X509_verify_cert (store_ctx) <= 0) {
MONGOC_ERROR ("failed to obtain verified chain");
goto fail;
}
verified_chain = X509_STORE_CTX_get1_chain (store_ctx);
fail:
X509_free (peer);
X509_STORE_CTX_free (store_ctx);
return verified_chain;
}
/* On OpenSSL < 1.1.0, this chain isn't attached to the SSL session, so we need
* it to dispose of itself. */
void
_free_verified_chain (STACK_OF (X509) * verified_chain)
{
if (!verified_chain) {
return;
}
sk_X509_pop_free (verified_chain, X509_free);
}
const STACK_OF (X509_EXTENSION) * _get_extensions (const X509 *cert)
{
return cert->cert_info->extensions;
}
#endif /* OPENSSL_VERSION_NUMBER */
#define TLSFEATURE_STATUS_REQUEST 5
/* Check a tlsfeature extension contents for a status_request.
*
* Parse just enough of a DER encoded data to check if a SEQUENCE of INTEGER
* contains the status_request extension (5). There are only five tlsfeature
* extension types, so this only handles the case that the sequence's length is
* representable in one byte, and that each integer is representable in one
* byte. */
bool
_mongoc_tlsfeature_has_status_request (const uint8_t *data, int length)
{
int i;
/* Expect a sequence type, with a sequence length representable in one byte.
*/
if (length < 3 || data[0] != 0x30 || data[1] >= 127) {
MONGOC_ERROR ("malformed tlsfeature extension sequence");
return false;
}
for (i = 2; i < length; i += 3) {
/* Expect an integer, representable in one byte. */
if (length < i + 3 || data[i] != 0x02 || data[i + 1] != 1) {
MONGOC_ERROR ("malformed tlsfeature extension integer");
return false;
}
if (data[i + 2] == TLSFEATURE_STATUS_REQUEST) {
TRACE ("%s", "found status request in tlsfeature extension");
return true;
}
}
return false;
}
/* Check that the certificate has a tlsfeature extension with status_request. */
bool
_get_must_staple (X509 *cert)
{
const STACK_OF (X509_EXTENSION) *exts = NULL;
X509_EXTENSION *ext;
ASN1_STRING *ext_data;
int idx;
exts = _get_extensions (cert);
if (!exts) {
TRACE ("%s", "certificate extensions not found");
return false;
}
idx = X509v3_get_ext_by_NID (exts, tlsfeature_nid, -1);
if (-1 == idx) {
TRACE ("%s", "tlsfeature extension not found");
return false;
}
ext = sk_X509_EXTENSION_value (exts, idx);
ext_data = X509_EXTENSION_get_data (ext);
/* Data is a DER encoded sequence of integers. */
return _mongoc_tlsfeature_has_status_request (ASN1_STRING_get0_data (ext_data), ASN1_STRING_length (ext_data));
}
#define ERR_STR (ERR_error_string (ERR_get_error (), NULL))
#define MONGOC_OCSP_REQUEST_TIMEOUT_MS 5000
static OCSP_RESPONSE *
_contact_ocsp_responder (OCSP_CERTID *id, X509 *peer, mongoc_ssl_opt_t *ssl_opts, int *ocsp_uri_count)
{
STACK_OF (OPENSSL_STRING) *url_stack = NULL;
OPENSSL_STRING url = NULL, host = NULL, path = NULL, port = NULL;
OCSP_REQUEST *req = NULL;
const unsigned char *resp_data;
OCSP_RESPONSE *resp = NULL;
int i, ssl;
url_stack = X509_get1_ocsp (peer);
*ocsp_uri_count = sk_OPENSSL_STRING_num (url_stack);
for (i = 0; i < *ocsp_uri_count && !resp; i++) {
unsigned char *request_der = NULL;
int request_der_len;
mongoc_http_request_t http_req;
mongoc_http_response_t http_res;
bson_error_t error;
_mongoc_http_request_init (&http_req);
_mongoc_http_response_init (&http_res);
url = sk_OPENSSL_STRING_value (url_stack, i);
TRACE ("Contacting OCSP responder '%s'", url);
/* splits the given url into its host, port and path components */
if (!OCSP_parse_url (url, &host, &port, &path, &ssl)) {
MONGOC_DEBUG ("Could not parse URL");
GOTO (retry);
}
if (!(req = OCSP_REQUEST_new ())) {
MONGOC_DEBUG ("Could not create new OCSP request");
GOTO (retry);
}
/* add the cert ID to the OCSP request object */
if (!id || !OCSP_request_add0_id (req, OCSP_CERTID_dup (id))) {
MONGOC_DEBUG ("Could not add cert ID to the OCSP request object");
GOTO (retry);
}
/* add nonce to OCSP request object */
if (!OCSP_request_add1_nonce (req, 0 /* use random nonce */, -1)) {
MONGOC_DEBUG ("Could not add nonce to OCSP request object");
GOTO (retry);
}
request_der_len = i2d_OCSP_REQUEST (req, &request_der);
if (request_der_len < 0) {
MONGOC_DEBUG ("Could not encode OCSP request");
GOTO (retry);
}
http_req.method = "POST";
http_req.extra_headers = "Content-Type: application/ocsp-request\r\n";
http_req.host = host;
http_req.path = path;
http_req.port = (int) bson_ascii_strtoll (port, NULL, 10);
http_req.body = (const char *) request_der;
http_req.body_len = request_der_len;
if (!_mongoc_http_send (&http_req, MONGOC_OCSP_REQUEST_TIMEOUT_MS, ssl != 0, ssl_opts, &http_res, &error)) {
MONGOC_DEBUG ("Could not send HTTP request: %s", error.message);
GOTO (retry);
}
resp_data = (const unsigned char *) http_res.body;
if (http_res.body_len == 0 || !d2i_OCSP_RESPONSE (&resp, &resp_data, http_res.body_len)) {
MONGOC_DEBUG ("Could not parse OCSP response from HTTP response");
MONGOC_DEBUG ("Response headers: %s", http_res.headers);
GOTO (retry);
}
retry:
if (host)
OPENSSL_free (host);
if (port)
OPENSSL_free (port);
if (path)
OPENSSL_free (path);
if (req)
OCSP_REQUEST_free (req);
if (request_der)
OPENSSL_free (request_der);
_mongoc_http_response_cleanup (&http_res);
}
if (url_stack)
X509_email_free (url_stack);
RETURN (resp);
}
#define SOFT_FAIL(...) ((stapled_response) ? MONGOC_ERROR (__VA_ARGS__) : MONGOC_DEBUG (__VA_ARGS__))
#define X509_CHECK_SUCCESS 1
#define OCSP_VERIFY_SUCCESS 1
int
_mongoc_ocsp_tlsext_status (SSL *ssl, mongoc_openssl_ocsp_opt_t *opts)
{
enum { OCSP_CB_ERROR = -1, OCSP_CB_REVOKED, OCSP_CB_SUCCESS } ret;
bool stapled_response = true;
bool must_staple;
OCSP_RESPONSE *resp = NULL;
OCSP_BASICRESP *basic = NULL;
X509_STORE *store = NULL;
X509 *peer = NULL, *issuer = NULL;
STACK_OF (X509) *cert_chain = NULL;
const unsigned char *resp_data = NULL;
unsigned char *mutable_resp_data = NULL;
int cert_status, reason, len, status;
OCSP_CERTID *id = NULL;
ASN1_GENERALIZEDTIME *produced_at = NULL, *this_update = NULL, *next_update = NULL;
int ocsp_uri_count = 0;
if (opts->weak_cert_validation) {
return OCSP_CB_SUCCESS;
}
if (!(peer = SSL_get_peer_certificate (ssl))) {
MONGOC_ERROR ("No certificate was presented by the peer");
ret = OCSP_CB_ERROR;
GOTO (done);
}
/* Get a STACK_OF(X509) certs forming the cert chain of the peer, including
* the peer's cert */
if (!(cert_chain = _get_verified_chain (ssl))) {
MONGOC_ERROR ("Unable to obtain verified chain");
ret = OCSP_CB_REVOKED;
GOTO (done);
}
if (!(issuer = _get_issuer (peer, cert_chain))) {
MONGOC_ERROR ("Could not get issuer from peer cert");
ret = OCSP_CB_ERROR;
GOTO (done);
}
if (!(id = OCSP_cert_to_id (NULL /* SHA1 */, peer, issuer))) {
MONGOC_ERROR ("Could not obtain a valid OCSP_CERTID for peer");
ret = OCSP_CB_ERROR;
GOTO (done);
}
if (_mongoc_ocsp_cache_get_status (id, &cert_status, &reason, &this_update, &next_update)) {
GOTO (validate);
}
/* Get the stapled OCSP response returned by the server */
len = SSL_get_tlsext_status_ocsp_resp (ssl, &mutable_resp_data);
resp_data = mutable_resp_data;
stapled_response = !!resp_data;
if (stapled_response) {
/* obtain an OCSP_RESPONSE object from the OCSP response */
if (!d2i_OCSP_RESPONSE (&resp, &resp_data, len)) {
MONGOC_ERROR ("Failed to parse OCSP response");
ret = OCSP_CB_ERROR;
GOTO (done);
}
} else {
TRACE ("%s", "Server does not contain a stapled response");
must_staple = _get_must_staple (peer);
if (must_staple) {
MONGOC_ERROR ("Server must contain a stapled response");
ret = OCSP_CB_REVOKED;
GOTO (done);
}
if (opts->disable_endpoint_check ||
!(resp = _contact_ocsp_responder (id, peer, &opts->ssl_opts, &ocsp_uri_count))) {
if (ocsp_uri_count > 0) {
/* Only log a soft failure if there were OCSP responders listed in
* the certificate. */
MONGOC_DEBUG ("Soft-fail: No OCSP responder could be reached");
}
ret = OCSP_CB_SUCCESS;
GOTO (done);
}
}
TRACE ("%s", "Validating OCSP response");
/* Validate the OCSP response status of the OCSP_RESPONSE object */
status = OCSP_response_status (resp);
if (status != OCSP_RESPONSE_STATUS_SUCCESSFUL) {
SOFT_FAIL ("OCSP response error %d %s", status, OCSP_response_status_str (status));
ret = OCSP_CB_ERROR;
GOTO (done);
}
TRACE ("%s", "OCSP response status successful");
/* Get the OCSP_BASICRESP structure contained in OCSP_RESPONSE object for the
* peer cert */
basic = OCSP_response_get1_basic (resp);
if (!basic) {
SOFT_FAIL ("Could not find BasicOCSPResponse: %s", ERR_STR);
ret = OCSP_CB_ERROR;
GOTO (done);
}
store = SSL_CTX_get_cert_store (SSL_get_SSL_CTX (ssl));
/*
* checks that the basic response message is correctly signed and that the
* signer certificate can be validated.
* 1. The function first verifies the signer cert of the response is in the
* given cert chain.
* 2. Next, the function verifies the signature of the basic response.
* 3. Finally, the function validates the signer cert, constructing the
* validation path via the untrusted cert chain.
*
* cert_chain has already been verified. Use OCSP_TRUSTOTHER so the signer
* certificate can be considered verified if it is in cert_chain.
*/
if (OCSP_basic_verify (basic, cert_chain, store, OCSP_TRUSTOTHER) != OCSP_VERIFY_SUCCESS) {
SOFT_FAIL ("OCSP response failed verification: %s", ERR_STR);
ret = OCSP_CB_ERROR;
GOTO (done);
}
/* searches the basic response for an OCSP response for the given cert ID */
if (!OCSP_resp_find_status (basic, id, &cert_status, &reason, &produced_at, &this_update, &next_update)) {
SOFT_FAIL ("No OCSP response found for the peer certificate");
ret = OCSP_CB_ERROR;
GOTO (done);
}
/* checks the validity of this_update and next_update values */
if (!OCSP_check_validity (this_update, next_update, 0L, -1L)) {
SOFT_FAIL ("OCSP response has expired: %s", ERR_STR);
ret = OCSP_CB_ERROR;
GOTO (done);
}
validate:
switch (cert_status) {
case V_OCSP_CERTSTATUS_GOOD:
TRACE ("%s", "OCSP Certificate Status: Good");
_mongoc_ocsp_cache_set_resp (id, cert_status, reason, this_update, next_update);
break;
case V_OCSP_CERTSTATUS_REVOKED:
MONGOC_ERROR ("OCSP Certificate Status: Revoked. Reason: %s", OCSP_crl_reason_str (reason));
ret = OCSP_CB_REVOKED;
_mongoc_ocsp_cache_set_resp (id, cert_status, reason, this_update, next_update);
GOTO (done);
default:
MONGOC_DEBUG ("OCSP Certificate Status: Unknown");
break;
}
/* Validate hostname matches cert */
if (!_mongoc_openssl_check_peer_hostname (ssl, opts->host, opts->allow_invalid_hostname)) {
ret = OCSP_CB_REVOKED;
GOTO (done);
}
ret = OCSP_CB_SUCCESS;
done:
if (ret == OCSP_CB_ERROR && !stapled_response) {
ret = OCSP_CB_SUCCESS;
}
if (basic)
OCSP_BASICRESP_free (basic);
if (resp)
OCSP_RESPONSE_free (resp);
if (id)
OCSP_CERTID_free (id);
if (peer)
X509_free (peer);
if (cert_chain)
_free_verified_chain (cert_chain);
RETURN (ret);
}
#endif /* MONGOC_ENABLE_OCSP_OPENSSL */
/**
* _mongoc_openssl_ctx_new:
*
* Create a new ssl context declaratively
*
* The opt.pem_pwd parameter, if passed, must exist for the life of this
* context object (for storing and loading the associated pem file)
*/
SSL_CTX *
_mongoc_openssl_ctx_new (mongoc_ssl_opt_t *opt)
{
SSL_CTX *ctx = NULL;
int ssl_ctx_options = 0;
/*
* Ensure we are initialized. This is safe to call multiple times.
*/
mongoc_init ();
ctx = SSL_CTX_new (SSLv23_method ());
BSON_ASSERT (ctx);
/* SSL_OP_ALL - Activate all bug workaround options, to support buggy client
* SSL's. */
ssl_ctx_options |= SSL_OP_ALL;
/* SSL_OP_NO_SSLv2 - Disable SSL v2 support */
ssl_ctx_options |= SSL_OP_NO_SSLv2;
/* Disable compression, if we can.
* OpenSSL 0.9.x added compression support which was always enabled when built
* against zlib
* OpenSSL 1.0.0 added the ability to disable it, while keeping it enabled by
* default
* OpenSSL 1.1.0 disabled it by default.
*/
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
ssl_ctx_options |= SSL_OP_NO_COMPRESSION;
#endif
/* man SSL_get_options says: "SSL_OP_NO_RENEGOTIATION options were added in
* OpenSSL 1.1.1". */
#ifdef SSL_OP_NO_RENEGOTIATION
ssl_ctx_options |= SSL_OP_NO_RENEGOTIATION;
#endif
SSL_CTX_set_options (ctx, ssl_ctx_options);
/* only defined in special build, using:
* --enable-system-crypto-profile (autotools)
* -DENABLE_CRYPTO_SYSTEM_PROFILE:BOOL=ON (cmake) */
#ifndef MONGOC_ENABLE_CRYPTO_SYSTEM_PROFILE
/* HIGH - Enable strong ciphers
* !EXPORT - Disable export ciphers (40/56 bit)
* !aNULL - Disable anonymous auth ciphers
* @STRENGTH - Sort ciphers based on strength */
SSL_CTX_set_cipher_list (ctx, "HIGH:!EXPORT:!aNULL@STRENGTH");
#endif
/* If renegotiation is needed, don't return from recv() or send() until it's
* successful.
* Note: this is for blocking sockets only. */
SSL_CTX_set_mode (ctx, SSL_MODE_AUTO_RETRY);
/* Load my private keys to present to the server */
if (opt->pem_file && !_mongoc_openssl_setup_pem_file (ctx, opt->pem_file, opt->pem_pwd)) {
SSL_CTX_free (ctx);
return NULL;
}
/* Load in my Certificate Authority, to verify the server against
* If none provided, fallback to the distro defaults */
if (opt->ca_file || opt->ca_dir) {
if (!_mongoc_openssl_setup_ca (ctx, opt->ca_file, opt->ca_dir)) {
SSL_CTX_free (ctx);
return NULL;
}
} else {
/* If the server certificate is issued by known CA we trust it by default */
#ifdef _WIN32
_mongoc_openssl_import_cert_stores (ctx);
#else
SSL_CTX_set_default_verify_paths (ctx);
#endif
}
/* Load my revocation list, to verify the server against */
if (opt->crl_file && !_mongoc_openssl_setup_crl (ctx, opt->crl_file)) {
SSL_CTX_free (ctx);
return NULL;
}
if (opt->weak_cert_validation) {
SSL_CTX_set_verify (ctx, SSL_VERIFY_NONE, NULL);
} else {
SSL_CTX_set_verify (ctx, SSL_VERIFY_PEER, NULL);
}
return ctx;
}
#if OPENSSL_VERSION_NUMBER < 0x10100000L
#ifdef _WIN32
static unsigned long
_mongoc_openssl_thread_id_callback (void)
{
unsigned long ret;
ret = (unsigned long) GetCurrentThreadId ();
return ret;
}
#else
static unsigned long
_mongoc_openssl_thread_id_callback (void)
{
unsigned long ret;
ret = (unsigned long) pthread_self ();
return ret;
}
#endif
static void
_mongoc_openssl_thread_locking_callback (int mode, int type, const char *file, int line)
{
if (mode & CRYPTO_LOCK) {
bson_mutex_lock (&gMongocOpenSslThreadLocks[type]);
} else {
bson_mutex_unlock (&gMongocOpenSslThreadLocks[type]);
}
}
static void
_mongoc_openssl_thread_startup (void)
{
int i;
gMongocOpenSslThreadLocks = (bson_mutex_t *) OPENSSL_malloc (CRYPTO_num_locks () * sizeof (bson_mutex_t));
for (i = 0; i < CRYPTO_num_locks (); i++) {
bson_mutex_init (&gMongocOpenSslThreadLocks[i]);
}
if (!CRYPTO_get_locking_callback ()) {
CRYPTO_set_locking_callback (_mongoc_openssl_thread_locking_callback);
CRYPTO_set_id_callback (_mongoc_openssl_thread_id_callback);
}
}
static void
_mongoc_openssl_thread_cleanup (void)
{
int i;
if (CRYPTO_get_locking_callback () == _mongoc_openssl_thread_locking_callback) {
CRYPTO_set_locking_callback (NULL);
}
if (CRYPTO_get_id_callback () == _mongoc_openssl_thread_id_callback) {
CRYPTO_set_id_callback (NULL);
}
for (i = 0; i < CRYPTO_num_locks (); i++) {
bson_mutex_destroy (&gMongocOpenSslThreadLocks[i]);
}
OPENSSL_free (gMongocOpenSslThreadLocks);
}
#endif
#endif
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-optional.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-optional.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-optional.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-optional.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-optional.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-optional.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-optional.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-optional.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-helpers-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-helpers-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-helpers-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-helpers-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-helpers.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-helpers.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-helpers.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-helpers.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-prelude.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-prelude.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-prelude.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-prelude.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-queue-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-queue-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-queue-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-queue-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-queue.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-queue.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-queue.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-queue.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-cng.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-cng.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-cng.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-cng.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-common-crypto.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-common-crypto.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-common-crypto.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-common-crypto.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-openssl.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-openssl.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-openssl.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-openssl.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rpc-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rpc-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rpc-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rpc-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rpc.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rpc.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rpc.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-rpc.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sasl-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sasl-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sasl-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sasl-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sasl.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sasl.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sasl.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sasl.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel-private.h
similarity index 87%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel-private.h
index d723664e..673e2543 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel-private.h
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel-private.h
@@ -1,77 +1,81 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <mongoc/mongoc-prelude.h>
#ifndef MONGOC_SECURE_CHANNEL_PRIVATE_H
#define MONGOC_SECURE_CHANNEL_PRIVATE_H
#include <bson/bson.h>
#include <mongoc/mongoc-ssl.h>
#include <mongoc/mongoc-stream-tls.h>
#include <mongoc/mongoc-stream-tls-secure-channel-private.h>
#define SECURITY_WIN32
#include <security.h>
#include <schnlsp.h>
#include <schannel.h>
BSON_BEGIN_DECLS
bool
-mongoc_secure_channel_setup_ca (mongoc_stream_tls_secure_channel_t *secure_channel, mongoc_ssl_opt_t *opt);
+mongoc_secure_channel_setup_ca (mongoc_ssl_opt_t *opt);
bool
-mongoc_secure_channel_setup_crl (mongoc_stream_tls_secure_channel_t *secure_channel, mongoc_ssl_opt_t *opt);
+mongoc_secure_channel_setup_crl (mongoc_ssl_opt_t *opt);
+
+// mongoc_secure_channel_load_crl is used in tests.
+PCCRL_CONTEXT
+mongoc_secure_channel_load_crl (const char *crl_file);
ssize_t
mongoc_secure_channel_read (mongoc_stream_tls_t *tls, void *data, size_t data_length);
ssize_t
mongoc_secure_channel_write (mongoc_stream_tls_t *tls, const void *data, size_t data_length);
PCCERT_CONTEXT
-mongoc_secure_channel_setup_certificate (mongoc_stream_tls_secure_channel_t *secure_channel, mongoc_ssl_opt_t *opt);
+mongoc_secure_channel_setup_certificate (mongoc_ssl_opt_t *opt);
/* it may require 16k + some overhead to hold one decryptable block of data - do
* what cURL does, add 1k */
#define MONGOC_SCHANNEL_BUFFER_INIT_SIZE (17 * 1024)
void
_mongoc_secure_channel_init_sec_buffer (SecBuffer *buffer,
unsigned long buf_type,
void *buf_data_ptr,
unsigned long buf_byte_size);
void
_mongoc_secure_channel_init_sec_buffer_desc (SecBufferDesc *desc, SecBuffer *buffer_array, unsigned long buffer_count);
void
mongoc_secure_channel_realloc_buf (size_t *size, uint8_t **buf, size_t new_size);
bool
mongoc_secure_channel_handshake_step_1 (mongoc_stream_tls_t *tls, char *hostname, bson_error_t *error);
bool
mongoc_secure_channel_handshake_step_2 (mongoc_stream_tls_t *tls, char *hostname, bson_error_t *error);
bool
mongoc_secure_channel_handshake_step_3 (mongoc_stream_tls_t *tls, char *hostname, bson_error_t *error);
BSON_END_DECLS
#endif /* MONGOC_SECURE_CHANNEL_PRIVATE_H */
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel.c
similarity index 65%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel.c
index eb2f429f..fea0ee20 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel.c
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel.c
@@ -1,869 +1,1010 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <mongoc/mongoc-config.h>
#ifdef MONGOC_ENABLE_SSL_SECURE_CHANNEL
#include <bson/bson.h>
#include <mongoc/mongoc-log.h>
#include <mongoc/mongoc-trace-private.h>
#include <mongoc/mongoc-ssl.h>
#include <mongoc/mongoc-stream-tls.h>
#include <mongoc/mongoc-stream-tls-private.h>
#include <mongoc/mongoc-secure-channel-private.h>
#include <mongoc/mongoc-stream-tls-secure-channel-private.h>
#include <mongoc/mongoc-errno-private.h>
#include <mongoc/mongoc-error.h>
+#include <mongoc/mongoc-error-private.h>
#include <common-string-private.h>
#include <common-cmp-private.h>
#undef MONGOC_LOG_DOMAIN
#define MONGOC_LOG_DOMAIN "stream-secure-channel"
/* mingw doesn't define this */
#ifndef SECBUFFER_ALERT
#define SECBUFFER_ALERT 17
#endif
+// `decode_pem_base64` decodes a base-64 PEM blob with headers.
+// Returns NULL on error.
+static LPBYTE
+decode_pem_base64 (const char *base64_in, DWORD *out_len, const char *descriptor, const char *filename)
+{
+ BSON_ASSERT_PARAM (base64_in);
+ BSON_ASSERT_PARAM (out_len);
+ BSON_ASSERT_PARAM (descriptor);
+ BSON_ASSERT_PARAM (filename);
+
+ // Get needed output length:
+ if (!CryptStringToBinaryA (base64_in, 0, CRYPT_STRING_BASE64HEADER, NULL, out_len, NULL, NULL)) {
+ MONGOC_ERROR (
+ "Failed to convert base64 %s from '%s'. Error 0x%.8X", descriptor, filename, (unsigned int) GetLastError ());
+ return NULL;
+ }
+
+ if (*out_len == 0) {
+ return NULL;
+ }
+
+ LPBYTE out = (LPBYTE) bson_malloc (*out_len);
+
+ if (!CryptStringToBinaryA (base64_in, 0, CRYPT_STRING_BASE64HEADER, out, out_len, NULL, NULL)) {
+ MONGOC_ERROR (
+ "Failed to convert base64 %s from '%s'. Error 0x%.8X", descriptor, filename, (unsigned int) GetLastError ());
+ bson_free (out);
+ return NULL;
+ }
+ return out;
+}
+
+// `read_file_and_null_terminate` reads a file into a NUL-terminated string.
+// On success: returns a NUL-terminated string and (optionally) sets `*out_len` excluding NUL.
+// On error: returns NULL.
+static char *
+read_file_and_null_terminate (const char *filename, size_t *out_len)
+{
+ BSON_ASSERT_PARAM (filename);
+ BSON_OPTIONAL_PARAM (out_len);
+
+ bool ok = false;
+ char *contents = NULL;
+ char errmsg_buf[BSON_ERROR_BUFFER_SIZE];
+
+ FILE *file = fopen (filename, "rb");
+ if (!file) {
+ MONGOC_ERROR ("Failed to open file: '%s' with error: '%s'",
+ filename,
+ bson_strerror_r (errno, errmsg_buf, sizeof errmsg_buf));
+ goto fail;
+ }
+
+ if (0 != fseek (file, 0, SEEK_END)) {
+ MONGOC_ERROR ("Failed to seek in file: '%s' with error: '%s'",
+ filename,
+ bson_strerror_r (errno, errmsg_buf, sizeof errmsg_buf));
+ goto fail;
+ }
+
+ const long file_len = ftell (file);
+ if (file_len < 0) {
+ MONGOC_ERROR ("Failed to get length of file: '%s' with error: '%s'",
+ filename,
+ bson_strerror_r (errno, errmsg_buf, sizeof errmsg_buf));
+ goto fail;
+ }
+
+ if (file_len > LONG_MAX - 1) {
+ goto fail;
+ }
+
+ if (0 != fseek (file, 0, SEEK_SET)) {
+ goto fail;
+ }
+
+ // Read the whole file into one NUL-terminated string:
+ contents = (char *) bson_malloc ((size_t) file_len + 1u);
+ contents[file_len] = '\0';
+ if ((size_t) file_len != fread (contents, 1, file_len, file)) {
+ SecureZeroMemory (contents, file_len);
+ if (feof (file)) {
+ MONGOC_ERROR ("Unexpected EOF reading file: '%s'", filename);
+ goto fail;
+ } else {
+ MONGOC_ERROR ("Failed to read file: '%s' with error: '%s'",
+ filename,
+ bson_strerror_r (errno, errmsg_buf, sizeof errmsg_buf));
+ goto fail;
+ }
+ }
+ if (out_len) {
+ *out_len = (size_t) file_len;
+ }
+
+ ok = true;
+fail:
+ if (file) {
+ (void) fclose (file); // Ignore error.
+ }
+ if (!ok) {
+ bson_free (contents);
+ contents = NULL;
+ }
+ return contents;
+}
+
+
+// `decode_object` decodes a cryptographic object from a blob.
+// Returns NULL on error.
+static LPBYTE
+decode_object (const char *structType,
+ const LPBYTE data,
+ DWORD data_len,
+ DWORD *out_len,
+ const char *descriptor,
+ const char *filename)
+{
+ BSON_ASSERT_PARAM (structType);
+ BSON_ASSERT_PARAM (data);
+ BSON_ASSERT_PARAM (structType);
+ BSON_ASSERT_PARAM (out_len);
+ BSON_ASSERT_PARAM (descriptor);
+ BSON_ASSERT_PARAM (filename);
+ // Get needed output length:
+ if (!CryptDecodeObjectEx (X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, /* dwCertEncodingType */
+ structType, /* lpszStructType */
+ data, /* pbEncoded */
+ data_len, /* cbEncoded */
+ 0, /* dwFlags */
+ NULL, /* pDecodePara */
+ NULL, /* pvStructInfo */
+ out_len /* pcbStructInfo */
+ )) {
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_ERROR ("Failed to decode %s from '%s': %s", descriptor, filename, msg);
+ bson_free (msg);
+ return NULL;
+ }
+
+ if (*out_len == 0) {
+ return NULL;
+ }
+ LPBYTE out = (LPBYTE) bson_malloc (*out_len);
+
+ if (!CryptDecodeObjectEx (X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, /* dwCertEncodingType */
+ structType, /* lpszStructType */
+ data, /* pbEncoded */
+ data_len, /* cbEncoded */
+ 0, /* dwFlags */
+ NULL, /* pDecodePara */
+ out, /* pvStructInfo */
+ out_len /* pcbStructInfo */
+ )) {
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_ERROR ("Failed to decode %s from '%s': %s", descriptor, filename, msg);
+ bson_free (msg);
+ bson_free (out);
+ return NULL;
+ }
+
+ return out;
+}
PCCERT_CONTEXT
mongoc_secure_channel_setup_certificate_from_file (const char *filename)
{
char *pem;
- FILE *file;
+ bool ret = false;
bool success;
- HCRYPTKEY hKey;
- long pem_length;
+ size_t pem_length;
HCRYPTPROV provider;
- CERT_BLOB public_blob;
+ DWORD encoded_cert_len;
+ LPBYTE encoded_cert = NULL;
const char *pem_public;
const char *pem_private;
- LPBYTE blob_private = NULL;
PCCERT_CONTEXT cert = NULL;
+ LPBYTE blob_private = NULL;
DWORD blob_private_len = 0;
- DWORD encrypted_private_len = 0;
- LPBYTE encrypted_private = NULL;
-
+ LPBYTE blob_private_rsa = NULL;
+ DWORD blob_private_rsa_len = 0;
+ DWORD encoded_private_len = 0;
+ LPBYTE encoded_private = NULL;
- file = fopen (filename, "rb");
- if (!file) {
- MONGOC_ERROR ("Couldn't open file '%s'", filename);
- return NULL;
+ pem = read_file_and_null_terminate (filename, &pem_length);
+ if (!pem) {
+ goto fail;
}
- fseek (file, 0, SEEK_END);
- pem_length = ftell (file);
- fseek (file, 0, SEEK_SET);
- if (pem_length < 1) {
- MONGOC_ERROR ("Couldn't determine file size of '%s'", filename);
- return NULL;
+ pem_public = strstr (pem, "-----BEGIN CERTIFICATE-----");
+ if (!pem_public) {
+ MONGOC_ERROR ("Can't find public certificate in '%s'", filename);
+ goto fail;
}
- pem = (char *) bson_malloc0 (pem_length);
- fread ((void *) pem, 1, pem_length, file);
- fclose (file);
-
- pem_public = strstr (pem, "-----BEGIN CERTIFICATE-----");
pem_private = strstr (pem, "-----BEGIN ENCRYPTED PRIVATE KEY-----");
if (pem_private) {
MONGOC_ERROR ("Detected unsupported encrypted private key");
goto fail;
}
- pem_private = strstr (pem, "-----BEGIN RSA PRIVATE KEY-----");
- if (!pem_private) {
- pem_private = strstr (pem, "-----BEGIN PRIVATE KEY-----");
- }
-
- if (!pem_private) {
- MONGOC_ERROR ("Can't find private key in '%s'", filename);
+ encoded_cert = decode_pem_base64 (pem_public, &encoded_cert_len, "public key", filename);
+ if (!encoded_cert) {
goto fail;
}
-
- public_blob.cbData = (DWORD) strlen (pem_public);
- public_blob.pbData = (BYTE *) pem_public;
-
- /* https://msdn.microsoft.com/en-us/library/windows/desktop/aa380264%28v=vs.85%29.aspx
- */
- CryptQueryObject (CERT_QUERY_OBJECT_BLOB, /* dwObjectType, blob or file */
- &public_blob, /* pvObject, Unicode filename */
- CERT_QUERY_CONTENT_FLAG_ALL, /* dwExpectedContentTypeFlags */
- CERT_QUERY_FORMAT_FLAG_ALL, /* dwExpectedFormatTypeFlags */
- 0, /* dwFlags, reserved for "future use" */
- NULL, /* pdwMsgAndCertEncodingType, OUT, unused */
- NULL, /* pdwContentType (dwExpectedContentTypeFlags), OUT, unused */
- NULL, /* pdwFormatType (dwExpectedFormatTypeFlags,), OUT, unused */
- NULL, /* phCertStore, OUT, HCERTSTORE.., unused, for now */
- NULL, /* phMsg, OUT, HCRYPTMSG, only for PKC7, unused */
- (const void **) &cert /* ppvContext, OUT, the Certificate Context */
- );
+ cert = CertCreateCertificateContext (X509_ASN_ENCODING, encoded_cert, encoded_cert_len);
if (!cert) {
- MONGOC_ERROR ("Failed to extract public key from '%s'. Error 0x%.8X", filename, (unsigned int) GetLastError ());
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_ERROR ("Failed to extract public key from '%s': %s", filename, msg);
+ bson_free (msg);
goto fail;
}
- /* https://msdn.microsoft.com/en-us/library/windows/desktop/aa380285%28v=vs.85%29.aspx
- */
- success = CryptStringToBinaryA (pem_private, /* pszString */
- 0, /* cchString */
- CRYPT_STRING_BASE64HEADER, /* dwFlags */
- NULL, /* pbBinary */
- &encrypted_private_len, /* pcBinary, IN/OUT */
- NULL, /* pdwSkip */
- NULL); /* pdwFlags */
- if (!success) {
- MONGOC_ERROR ("Failed to convert base64 private key. Error 0x%.8X", (unsigned int) GetLastError ());
- goto fail;
- }
+ if (NULL != (pem_private = strstr (pem, "-----BEGIN RSA PRIVATE KEY-----"))) {
+ encoded_private = decode_pem_base64 (pem_private, &encoded_private_len, "private key", filename);
+ if (!encoded_private) {
+ goto fail;
+ }
- encrypted_private = (LPBYTE) bson_malloc0 (encrypted_private_len);
- success = CryptStringToBinaryA (
- pem_private, 0, CRYPT_STRING_BASE64HEADER, encrypted_private, &encrypted_private_len, NULL, NULL);
- if (!success) {
- MONGOC_ERROR ("Failed to convert base64 private key. Error 0x%.8X", (unsigned int) GetLastError ());
- goto fail;
- }
+ blob_private_rsa = decode_object (
+ PKCS_RSA_PRIVATE_KEY, encoded_private, encoded_private_len, &blob_private_rsa_len, "private key", filename);
+ if (!blob_private_rsa) {
+ goto fail;
+ }
+ } else if (NULL != (pem_private = strstr (pem, "-----BEGIN PRIVATE KEY-----"))) {
+ encoded_private = decode_pem_base64 (pem_private, &encoded_private_len, "private key", filename);
+ if (!encoded_private) {
+ goto fail;
+ }
- /* https://msdn.microsoft.com/en-us/library/windows/desktop/aa379912%28v=vs.85%29.aspx
- */
- success = CryptDecodeObjectEx (X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, /* dwCertEncodingType */
- PKCS_RSA_PRIVATE_KEY, /* lpszStructType */
- encrypted_private, /* pbEncoded */
- encrypted_private_len, /* cbEncoded */
- 0, /* dwFlags */
- NULL, /* pDecodePara */
- NULL, /* pvStructInfo */
- &blob_private_len); /* pcbStructInfo */
- if (!success) {
- LPTSTR msg = NULL;
- FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,
- NULL,
- GetLastError (),
- LANG_NEUTRAL,
- (LPTSTR) &msg,
- 0,
- NULL);
- MONGOC_ERROR ("Failed to parse private key. %s (0x%.8X)", msg, (unsigned int) GetLastError ());
- LocalFree (msg);
- goto fail;
- }
+ blob_private = decode_object (
+ PKCS_PRIVATE_KEY_INFO, encoded_private, encoded_private_len, &blob_private_len, "private key", filename);
+ if (!blob_private) {
+ goto fail;
+ }
- blob_private = (LPBYTE) bson_malloc0 (blob_private_len);
- success = CryptDecodeObjectEx (X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
- PKCS_RSA_PRIVATE_KEY,
- encrypted_private,
- encrypted_private_len,
- 0,
- NULL,
- blob_private,
- &blob_private_len);
- if (!success) {
- MONGOC_ERROR ("Failed to parse private key. Error 0x%.8X", (unsigned int) GetLastError ());
+ // Have PrivateKey. Get RSA key from it.
+ CRYPT_PRIVATE_KEY_INFO *privateKeyInfo = (CRYPT_PRIVATE_KEY_INFO *) blob_private;
+ if (strcmp (privateKeyInfo->Algorithm.pszObjId, szOID_RSA_RSA) != 0) {
+ MONGOC_ERROR ("Non-RSA private keys are not supported");
+ goto fail;
+ }
+
+ blob_private_rsa = decode_object (PKCS_RSA_PRIVATE_KEY,
+ privateKeyInfo->PrivateKey.pbData,
+ privateKeyInfo->PrivateKey.cbData,
+ &blob_private_rsa_len,
+ "private key",
+ filename);
+ if (!blob_private_rsa) {
+ goto fail;
+ }
+ } else {
+ MONGOC_ERROR ("Can't find private key in '%s'", filename);
goto fail;
}
/* https://msdn.microsoft.com/en-us/library/windows/desktop/aa379886%28v=vs.85%29.aspx
*/
success = CryptAcquireContext (&provider, /* phProv */
NULL, /* pszContainer */
MS_ENHANCED_PROV, /* pszProvider */
PROV_RSA_FULL, /* dwProvType */
CRYPT_VERIFYCONTEXT); /* dwFlags */
if (!success) {
- MONGOC_ERROR ("CryptAcquireContext failed with error 0x%.8X", (unsigned int) GetLastError ());
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_ERROR ("CryptAcquireContext failed: %s", msg);
+ bson_free (msg);
goto fail;
}
+ HCRYPTKEY hKey;
/* https://msdn.microsoft.com/en-us/library/windows/desktop/aa380207%28v=vs.85%29.aspx
*/
- success = CryptImportKey (provider, /* hProv */
- blob_private, /* pbData */
- blob_private_len, /* dwDataLen */
- 0, /* hPubKey */
- 0, /* dwFlags */
- &hKey); /* phKey, OUT */
+ success = CryptImportKey (provider, /* hProv */
+ blob_private_rsa, /* pbData */
+ blob_private_rsa_len, /* dwDataLen */
+ 0, /* hPubKey */
+ 0, /* dwFlags */
+ &hKey); /* phKey, OUT */
if (!success) {
- MONGOC_ERROR ("CryptImportKey for private key failed with error 0x%.8X", (unsigned int) GetLastError ());
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_ERROR ("CryptImportKey for private key failed: %s", msg);
+ bson_free (msg);
+ CryptReleaseContext (provider, 0);
goto fail;
}
+ CryptDestroyKey (hKey);
/* https://msdn.microsoft.com/en-us/library/windows/desktop/aa376573%28v=vs.85%29.aspx
*/
+ // The CERT_KEY_PROV_HANDLE_PROP_ID property takes ownership of `provider`.
success = CertSetCertificateContextProperty (cert, /* pCertContext */
CERT_KEY_PROV_HANDLE_PROP_ID, /* dwPropId */
0, /* dwFlags */
(const void *) provider); /* pvData */
- if (success) {
- TRACE ("%s", "Successfully loaded client certificate");
- return cert;
+ if (!success) {
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_ERROR ("Can't associate private key with public key: %s", msg);
+ bson_free (msg);
+ goto fail;
}
- MONGOC_ERROR ("Can't associate private key with public key: 0x%.8X", (unsigned int) GetLastError ());
+ TRACE ("%s", "Successfully loaded client certificate");
+ ret = true;
fail:
- SecureZeroMemory (pem, pem_length);
- bson_free (pem);
- if (encrypted_private) {
- SecureZeroMemory (encrypted_private, encrypted_private_len);
- bson_free (encrypted_private);
+ if (pem) {
+ SecureZeroMemory (pem, pem_length);
+ bson_free (pem);
+ }
+ bson_free (encoded_cert);
+ if (encoded_private) {
+ SecureZeroMemory (encoded_private, encoded_private_len);
+ bson_free (encoded_private);
+ }
+
+ if (blob_private_rsa) {
+ SecureZeroMemory (blob_private_rsa, blob_private_rsa_len);
+ bson_free (blob_private_rsa);
}
if (blob_private) {
SecureZeroMemory (blob_private, blob_private_len);
bson_free (blob_private);
}
- return NULL;
+ if (!ret) {
+ CertFreeCertificateContext (cert);
+ return NULL;
+ }
+
+ return cert;
}
PCCERT_CONTEXT
-mongoc_secure_channel_setup_certificate (mongoc_stream_tls_secure_channel_t *secure_channel, mongoc_ssl_opt_t *opt)
+mongoc_secure_channel_setup_certificate (mongoc_ssl_opt_t *opt)
{
return mongoc_secure_channel_setup_certificate_from_file (opt->pem_file);
}
bool
-mongoc_secure_channel_setup_ca (mongoc_stream_tls_secure_channel_t *secure_channel, mongoc_ssl_opt_t *opt)
+mongoc_secure_channel_setup_ca (mongoc_ssl_opt_t *opt)
{
- FILE *file;
- long length;
+ bool ok = false;
+ char *pem = NULL;
const char *pem_key;
HCERTSTORE cert_store = NULL;
PCCERT_CONTEXT cert = NULL;
- DWORD encrypted_cert_len = 0;
- LPBYTE encrypted_cert = NULL;
-
- file = fopen (opt->ca_file, "rb");
- if (!file) {
- MONGOC_ERROR ("Couldn't open file '%s'", opt->ca_file);
- return false;
- }
+ DWORD encoded_cert_len = 0;
+ LPBYTE encoded_cert = NULL;
- fseek (file, 0, SEEK_END);
- length = ftell (file);
- fseek (file, 0, SEEK_SET);
- if (length < 1) {
- MONGOC_WARNING ("Couldn't determine file size of '%s'", opt->ca_file);
+ pem = read_file_and_null_terminate (opt->ca_file, NULL);
+ if (!pem) {
return false;
}
- pem_key = (const char *) bson_malloc0 (length);
- fread ((void *) pem_key, 1, length, file);
- fclose (file);
-
/* If we have private keys or other fuzz, seek to the good stuff */
- pem_key = strstr (pem_key, "-----BEGIN CERTIFICATE-----");
- /*printf ("%s\n", pem_key);*/
+ pem_key = strstr (pem, "-----BEGIN CERTIFICATE-----");
if (!pem_key) {
MONGOC_WARNING ("Couldn't find certificate in '%s'", opt->ca_file);
- return false;
- }
-
- if (!CryptStringToBinaryA (pem_key, 0, CRYPT_STRING_BASE64HEADER, NULL, &encrypted_cert_len, NULL, NULL)) {
- MONGOC_ERROR ("Failed to convert BASE64 public key. Error 0x%.8X", (unsigned int) GetLastError ());
- return false;
+ goto fail;
}
- encrypted_cert = (LPBYTE) LocalAlloc (0, encrypted_cert_len);
- if (!CryptStringToBinaryA (pem_key, 0, CRYPT_STRING_BASE64HEADER, encrypted_cert, &encrypted_cert_len, NULL, NULL)) {
- MONGOC_ERROR ("Failed to convert BASE64 public key. Error 0x%.8X", (unsigned int) GetLastError ());
- return false;
+ encoded_cert = decode_pem_base64 (pem_key, &encoded_cert_len, "public key", opt->ca_file);
+ if (!encoded_cert) {
+ goto fail;
}
- cert = CertCreateCertificateContext (X509_ASN_ENCODING, encrypted_cert, encrypted_cert_len);
+ cert = CertCreateCertificateContext (X509_ASN_ENCODING, encoded_cert, encoded_cert_len);
if (!cert) {
- MONGOC_WARNING ("Could not convert certificate");
- return false;
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_WARNING ("Could not convert certificate: %s", msg);
+ bson_free (msg);
+ goto fail;
}
cert_store = CertOpenStore (CERT_STORE_PROV_SYSTEM, /* provider */
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, /* certificate encoding */
0, /* unused */
CERT_SYSTEM_STORE_LOCAL_MACHINE, /* dwFlags */
L"Root"); /* system store name. "My" or "Root" */
if (cert_store == NULL) {
- MONGOC_ERROR ("Error opening certificate store");
- return false;
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_ERROR ("Error opening certificate store: %s", msg);
+ bson_free (msg);
+ goto fail;
}
- if (CertAddCertificateContextToStore (cert_store, cert, CERT_STORE_ADD_USE_EXISTING, NULL)) {
- TRACE ("%s", "Added the certificate !");
- CertCloseStore (cert_store, 0);
- return true;
+ if (!CertAddCertificateContextToStore (cert_store, cert, CERT_STORE_ADD_USE_EXISTING, NULL)) {
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_WARNING ("Failed adding the cert: %s", msg);
+ bson_free (msg);
+ goto fail;
}
- MONGOC_WARNING ("Failed adding the cert");
- CertCloseStore (cert_store, 0);
- return false;
+ TRACE ("%s", "Added the certificate !");
+ ok = true;
+fail:
+ CertCloseStore (cert_store, 0);
+ bson_free (encoded_cert);
+ CertFreeCertificateContext (cert);
+ bson_free (pem);
+ return ok;
}
-bool
-mongoc_secure_channel_setup_crl (mongoc_stream_tls_secure_channel_t *secure_channel, mongoc_ssl_opt_t *opt)
+PCCRL_CONTEXT
+mongoc_secure_channel_load_crl (const char *crl_file)
{
- HCERTSTORE cert_store = NULL;
- PCCERT_CONTEXT cert = NULL;
- LPWSTR str;
- int chars;
+ PCCRL_CONTEXT crl = NULL;
+ bool ok = false;
+ DWORD encoded_crl_len = 0;
+ LPBYTE encoded_crl = NULL;
- chars = MultiByteToWideChar (CP_ACP, 0, opt->crl_file, -1, NULL, 0);
- if (chars < 1) {
- MONGOC_WARNING ("Can't determine opt->crl_file length");
- return false;
+ char *pem = read_file_and_null_terminate (crl_file, NULL);
+ if (!pem) {
+ goto fail;
}
- str = (LPWSTR) bson_malloc0 (chars * sizeof (*str));
- MultiByteToWideChar (CP_ACP, 0, opt->crl_file, -1, str, chars);
+ const char *pem_begin = strstr (pem, "-----BEGIN X509 CRL-----");
+ if (!pem_begin) {
+ MONGOC_WARNING ("Couldn't find CRL in '%s'", crl_file);
+ goto fail;
+ }
- /* https://msdn.microsoft.com/en-us/library/windows/desktop/aa380264%28v=vs.85%29.aspx
- */
- CryptQueryObject (CERT_QUERY_OBJECT_FILE, /* dwObjectType, blob or file */
- str, /* pvObject, Unicode filename */
- CERT_QUERY_CONTENT_FLAG_CRL, /* dwExpectedContentTypeFlags */
- CERT_QUERY_FORMAT_FLAG_ALL, /* dwExpectedFormatTypeFlags */
- 0, /* dwFlags, reserved for "future use" */
- NULL, /* pdwMsgAndCertEncodingType, OUT, unused */
- NULL, /* pdwContentType (dwExpectedContentTypeFlags), OUT, unused */
- NULL, /* pdwFormatType (dwExpectedFormatTypeFlags,), OUT, unused */
- NULL, /* phCertStore, OUT, HCERTSTORE.., unused, for now */
- NULL, /* phMsg, OUT, HCRYPTMSG, only for PKC7, unused */
- (const void **) &cert /* ppvContext, OUT, the Certificate Context */
- );
- bson_free (str);
+ encoded_crl = decode_pem_base64 (pem_begin, &encoded_crl_len, "CRL", crl_file);
+ if (!encoded_crl) {
+ goto fail;
+ }
- if (!cert) {
- MONGOC_WARNING ("Can't extract CRL from '%s'", opt->crl_file);
- return false;
+ crl = CertCreateCRLContext (X509_ASN_ENCODING, encoded_crl, encoded_crl_len);
+
+ if (!crl) {
+ MONGOC_WARNING ("Can't extract CRL from '%s'", crl_file);
+ goto fail;
}
+ ok = true;
+fail:
+ bson_free (encoded_crl);
+ bson_free (pem);
+ if (!ok) {
+ CertFreeCRLContext (crl);
+ crl = NULL;
+ }
+ return crl;
+}
+
+bool
+mongoc_secure_channel_setup_crl (mongoc_ssl_opt_t *opt)
+{
+ HCERTSTORE cert_store = NULL;
+ bool ok = false;
+
+ PCCRL_CONTEXT crl = mongoc_secure_channel_load_crl (opt->crl_file);
+ if (!crl) {
+ goto fail;
+ }
cert_store = CertOpenStore (CERT_STORE_PROV_SYSTEM, /* provider */
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, /* certificate encoding */
0, /* unused */
CERT_SYSTEM_STORE_LOCAL_MACHINE, /* dwFlags */
L"Root"); /* system store name. "My" or "Root" */
if (cert_store == NULL) {
- MONGOC_ERROR ("Error opening certificate store");
- CertFreeCertificateContext (cert);
- return false;
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_ERROR ("Error opening certificate store: %s", msg);
+ bson_free (msg);
+ goto fail;
}
- if (CertAddCertificateContextToStore (cert_store, cert, CERT_STORE_ADD_USE_EXISTING, NULL)) {
- TRACE ("%s", "Added the certificate !");
- CertFreeCertificateContext (cert);
- CertCloseStore (cert_store, 0);
- return true;
+ if (!CertAddCRLContextToStore (cert_store, crl, CERT_STORE_ADD_USE_EXISTING, NULL)) {
+ char *msg = mongoc_winerr_to_string (GetLastError ());
+ MONGOC_WARNING ("Failed adding the CRL: %s", msg);
+ bson_free (msg);
+ goto fail;
}
- MONGOC_WARNING ("Failed adding the cert");
- CertFreeCertificateContext (cert);
- CertCloseStore (cert_store, 0);
+ TRACE ("%s", "Added the CRL!");
+ ok = true;
- return false;
+fail:
+ CertCloseStore (cert_store, 0);
+ CertFreeCRLContext (crl);
+ return ok;
}
ssize_t
mongoc_secure_channel_read (mongoc_stream_tls_t *tls, void *data, size_t data_length)
{
BSON_ASSERT_PARAM (tls);
if (BSON_UNLIKELY (!mcommon_in_range_signed (int32_t, tls->timeout_msec))) {
// CDRIVER-4589
MONGOC_ERROR ("timeout_msec value %" PRId64 " exceeds supported 32-bit range", tls->timeout_msec);
return -1;
}
errno = 0;
TRACE ("Wanting to read: %zu, timeout is %" PRId64, data_length, tls->timeout_msec);
/* 4th argument is minimum bytes, while the data_length is the
* size of the buffer. We are totally fine with just one TLS record (few
*bytes)
**/
const ssize_t length = mongoc_stream_read (tls->base_stream, data, data_length, 0, (int32_t) tls->timeout_msec);
TRACE ("Got %zd", length);
if (length > 0) {
return length;
}
return 0;
}
ssize_t
mongoc_secure_channel_write (mongoc_stream_tls_t *tls, const void *data, size_t data_length)
{
BSON_ASSERT_PARAM (tls);
if (BSON_UNLIKELY (!mcommon_in_range_signed (int32_t, tls->timeout_msec))) {
// CDRIVER-4589
MONGOC_ERROR ("timeout_msec value %" PRId64 " exceeds supported 32-bit range", tls->timeout_msec);
return -1;
}
errno = 0;
TRACE ("Wanting to write: %zu", data_length);
const ssize_t length =
mongoc_stream_write (tls->base_stream, (void *) data, data_length, (int32_t) tls->timeout_msec);
TRACE ("Wrote: %zd", length);
return length;
}
void
mongoc_secure_channel_realloc_buf (size_t *size, uint8_t **buf, size_t new_size)
{
*size = bson_next_power_of_two (new_size);
*buf = bson_realloc (*buf, *size);
}
/**
* The follow functions comes from one of my favorite project, cURL!
* Thank you so much for having gone through the Secure Channel pain for me.
*
*
* Copyright (C) 2012 - 2015, Marc Hoersken, <info@marc-hoersken.de>
* Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
* Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
/*
* Based upon the PolarSSL implementation in polarssl.c and polarssl.h:
* Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
*
* Based upon the CyaSSL implementation in cyassl.c and cyassl.h:
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* Thanks for code and inspiration!
*/
void
_mongoc_secure_channel_init_sec_buffer (SecBuffer *buffer,
unsigned long buf_type,
void *buf_data_ptr,
unsigned long buf_byte_size)
{
buffer->cbBuffer = buf_byte_size;
buffer->BufferType = buf_type;
buffer->pvBuffer = buf_data_ptr;
}
void
_mongoc_secure_channel_init_sec_buffer_desc (SecBufferDesc *desc, SecBuffer *buffer_array, unsigned long buffer_count)
{
desc->ulVersion = SECBUFFER_VERSION;
desc->pBuffers = buffer_array;
desc->cBuffers = buffer_count;
}
#define MONGOC_LOG_AND_SET_ERROR(ERROR, DOMAIN, CODE, ...) \
do { \
MONGOC_ERROR (__VA_ARGS__); \
bson_set_error (ERROR, DOMAIN, CODE, __VA_ARGS__); \
} while (0)
bool
mongoc_secure_channel_handshake_step_1 (mongoc_stream_tls_t *tls, char *hostname, bson_error_t *error)
{
SecBuffer outbuf;
ssize_t written = -1;
SecBufferDesc outbuf_desc;
SECURITY_STATUS sspi_status = SEC_E_OK;
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
TRACE ("SSL/TLS connection with '%s' (step 1/3)", hostname);
/* setup output buffer */
_mongoc_secure_channel_init_sec_buffer (&outbuf, SECBUFFER_EMPTY, NULL, 0);
_mongoc_secure_channel_init_sec_buffer_desc (&outbuf_desc, &outbuf, 1);
/* setup request flags */
secure_channel->req_flags = ISC_REQ_SEQUENCE_DETECT | ISC_REQ_REPLAY_DETECT | ISC_REQ_CONFIDENTIALITY |
ISC_REQ_ALLOCATE_MEMORY | ISC_REQ_STREAM;
/* allocate memory for the security context handle */
secure_channel->ctxt = (mongoc_secure_channel_ctxt *) bson_malloc0 (sizeof (mongoc_secure_channel_ctxt));
/* https://msdn.microsoft.com/en-us/library/windows/desktop/aa375924.aspx */
sspi_status = InitializeSecurityContext (&secure_channel->cred->cred_handle, /* phCredential */
NULL, /* phContext */
hostname, /* pszTargetName */
secure_channel->req_flags, /* fContextReq */
0, /* Reserved1, must be 0 */
0, /* TargetDataRep, unused */
NULL, /* pInput */
0, /* Reserved2, must be 0 */
&secure_channel->ctxt->ctxt_handle, /* phNewContext OUT param */
&outbuf_desc, /* pOutput OUT param */
&secure_channel->ret_flags, /* pfContextAttr OUT param */
&secure_channel->ctxt->time_stamp /* ptsExpiry OUT param */
);
-
if (sspi_status != SEC_I_CONTINUE_NEEDED) {
- MONGOC_LOG_AND_SET_ERROR (error,
- MONGOC_ERROR_STREAM,
- MONGOC_ERROR_STREAM_SOCKET,
- "initial InitializeSecurityContext failed: %ld",
- sspi_status);
+ // Cast signed SECURITY_STATUS to unsigned DWORD. FormatMessage expects DWORD.
+ char *msg = mongoc_winerr_to_string ((DWORD) sspi_status);
+ MONGOC_LOG_AND_SET_ERROR (
+ error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_SOCKET, "initial InitializeSecurityContext failed: %s", msg);
+ bson_free (msg);
return false;
}
TRACE ("sending initial handshake data: sending %lu bytes...", outbuf.cbBuffer);
/* send initial handshake data which is now stored in output buffer */
written = mongoc_secure_channel_write (tls, outbuf.pvBuffer, outbuf.cbBuffer);
FreeContextBuffer (outbuf.pvBuffer);
if (outbuf.cbBuffer != (size_t) written) {
MONGOC_LOG_AND_SET_ERROR (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"failed to send initial handshake data: "
"sent %zd of %lu bytes",
written,
outbuf.cbBuffer);
return false;
}
TRACE ("sent initial handshake data: sent %zd bytes", written);
secure_channel->recv_unrecoverable_err = 0;
secure_channel->recv_sspi_close_notify = false;
secure_channel->recv_connection_closed = false;
/* continue to second handshake step */
secure_channel->connecting_state = ssl_connect_2;
return true;
}
bool
mongoc_secure_channel_handshake_step_2 (mongoc_stream_tls_t *tls, char *hostname, bson_error_t *error)
{
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
SECURITY_STATUS sspi_status = SEC_E_OK;
ssize_t nread = -1, written = -1;
SecBufferDesc outbuf_desc;
SecBufferDesc inbuf_desc;
SecBuffer outbuf[3];
SecBuffer inbuf[2];
bool doread;
int i;
doread = (secure_channel->connecting_state != ssl_connect_2_writing) ? true : false;
TRACE ("%s", "SSL/TLS connection with endpoint (step 2/3)");
if (!secure_channel->cred || !secure_channel->ctxt) {
MONGOC_LOG_AND_SET_ERROR (
error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_SOCKET, "required TLS credentials or context not provided");
return false;
}
/* grow the buffer if necessary */
if (secure_channel->encdata_length == secure_channel->encdata_offset) {
mongoc_secure_channel_realloc_buf (
&secure_channel->encdata_length, &secure_channel->encdata_buffer, secure_channel->encdata_length + 1);
}
for (;;) {
if (doread) {
/* read encrypted handshake data from socket */
nread = mongoc_secure_channel_read (tls,
(char *) (secure_channel->encdata_buffer + secure_channel->encdata_offset),
secure_channel->encdata_length - secure_channel->encdata_offset);
if (!nread) {
if (MONGOC_ERRNO_IS_AGAIN (errno)) {
if (secure_channel->connecting_state != ssl_connect_2_writing) {
secure_channel->connecting_state = ssl_connect_2_reading;
}
TRACE ("%s", "failed to receive handshake, need more data");
return true;
}
MONGOC_LOG_AND_SET_ERROR (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"failed to receive handshake, SSL/TLS connection failed");
return false;
}
/* increase encrypted data buffer offset */
secure_channel->encdata_offset += nread;
}
TRACE ("encrypted data buffer: offset %d length %d",
(int) secure_channel->encdata_offset,
(int) secure_channel->encdata_length);
/* setup input buffers */
_mongoc_secure_channel_init_sec_buffer (&inbuf[0],
SECBUFFER_TOKEN,
bson_malloc (secure_channel->encdata_offset),
(unsigned long) (secure_channel->encdata_offset & (size_t) 0xFFFFFFFFUL));
_mongoc_secure_channel_init_sec_buffer (&inbuf[1], SECBUFFER_EMPTY, NULL, 0);
_mongoc_secure_channel_init_sec_buffer_desc (&inbuf_desc, inbuf, 2);
/* setup output buffers */
_mongoc_secure_channel_init_sec_buffer (&outbuf[0], SECBUFFER_TOKEN, NULL, 0);
_mongoc_secure_channel_init_sec_buffer (&outbuf[1], SECBUFFER_ALERT, NULL, 0);
_mongoc_secure_channel_init_sec_buffer (&outbuf[2], SECBUFFER_EMPTY, NULL, 0);
_mongoc_secure_channel_init_sec_buffer_desc (&outbuf_desc, outbuf, 3);
if (inbuf[0].pvBuffer == NULL) {
MONGOC_LOG_AND_SET_ERROR (error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_SOCKET, "unable to allocate memory");
return false;
}
/* copy received handshake data into input buffer */
memcpy (inbuf[0].pvBuffer, secure_channel->encdata_buffer, secure_channel->encdata_offset);
/* https://msdn.microsoft.com/en-us/library/windows/desktop/aa375924.aspx
*/
sspi_status = InitializeSecurityContext (&secure_channel->cred->cred_handle,
&secure_channel->ctxt->ctxt_handle,
hostname,
secure_channel->req_flags,
0,
0,
&inbuf_desc,
0,
NULL,
&outbuf_desc,
&secure_channel->ret_flags,
&secure_channel->ctxt->time_stamp);
/* free buffer for received handshake data */
bson_free (inbuf[0].pvBuffer);
/* check if the handshake was incomplete */
if (sspi_status == SEC_E_INCOMPLETE_MESSAGE) {
secure_channel->connecting_state = ssl_connect_2_reading;
TRACE ("%s", "received incomplete message, need more data");
return true;
}
/* If the server has requested a client certificate, attempt to continue
* the handshake without one. This will allow connections to servers which
* request a client certificate but do not require it. */
if (sspi_status == SEC_I_INCOMPLETE_CREDENTIALS && !(secure_channel->req_flags & ISC_REQ_USE_SUPPLIED_CREDS)) {
secure_channel->req_flags |= ISC_REQ_USE_SUPPLIED_CREDS;
secure_channel->connecting_state = ssl_connect_2_writing;
TRACE ("%s", "A client certificate has been requested");
return true;
}
/* check if the handshake needs to be continued */
if (sspi_status == SEC_I_CONTINUE_NEEDED || sspi_status == SEC_E_OK) {
for (i = 0; i < 3; i++) {
/* search for handshake tokens that need to be send */
if (outbuf[i].BufferType == SECBUFFER_TOKEN && outbuf[i].cbBuffer > 0) {
TRACE ("sending next handshake data: sending %lu bytes...", outbuf[i].cbBuffer);
/* send handshake token to server */
written = mongoc_secure_channel_write (tls, outbuf[i].pvBuffer, outbuf[i].cbBuffer);
if (outbuf[i].cbBuffer != (size_t) written) {
MONGOC_LOG_AND_SET_ERROR (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"failed to send next handshake data: "
"sent %zd of %lu bytes",
written,
outbuf[i].cbBuffer);
return false;
}
}
/* free obsolete buffer */
if (outbuf[i].pvBuffer != NULL) {
FreeContextBuffer (outbuf[i].pvBuffer);
}
}
} else {
switch (sspi_status) {
case SEC_E_WRONG_PRINCIPAL:
MONGOC_LOG_AND_SET_ERROR (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"SSL Certification verification failed: hostname "
"doesn't match certificate");
break;
case SEC_E_UNTRUSTED_ROOT:
MONGOC_LOG_AND_SET_ERROR (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"SSL Certification verification failed: Untrusted "
"root certificate");
break;
case SEC_E_CERT_EXPIRED:
MONGOC_LOG_AND_SET_ERROR (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"SSL Certification verification failed: certificate "
"has expired");
break;
case CRYPT_E_NO_REVOCATION_CHECK:
MONGOC_LOG_AND_SET_ERROR (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"SSL Certification verification failed: certificate "
"does not include revocation check.");
break;
case SEC_E_INSUFFICIENT_MEMORY:
case SEC_E_INTERNAL_ERROR:
case SEC_E_INVALID_HANDLE:
case SEC_E_INVALID_TOKEN:
case SEC_E_LOGON_DENIED:
case SEC_E_NO_AUTHENTICATING_AUTHORITY:
case SEC_E_NO_CREDENTIALS:
case SEC_E_TARGET_UNKNOWN:
case SEC_E_UNSUPPORTED_FUNCTION:
#ifdef SEC_E_APPLICATION_PROTOCOL_MISMATCH
/* Not available in VS2010 */
case SEC_E_APPLICATION_PROTOCOL_MISMATCH:
#endif
default: {
- LPTSTR msg = NULL;
-
- FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,
- NULL,
- GetLastError (),
- LANG_NEUTRAL,
- (LPTSTR) &msg,
- 0,
- NULL);
+ // Cast signed SECURITY_STATUS to unsigned DWORD. FormatMessage expects DWORD.
+ char *msg = mongoc_winerr_to_string ((DWORD) sspi_status);
MONGOC_LOG_AND_SET_ERROR (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
- "Failed to initialize security context, error code: "
- "0x%04X%04X: %s",
- (unsigned int) (sspi_status >> 16) & 0xffff,
- (unsigned int) sspi_status & 0xffff,
+ "Failed to initialize security context: %s",
msg);
- LocalFree (msg);
+ bson_free (msg);
}
}
return false;
}
/* check if there was additional remaining encrypted data */
if (inbuf[1].BufferType == SECBUFFER_EXTRA && inbuf[1].cbBuffer > 0) {
TRACE ("encrypted data length: %lu", inbuf[1].cbBuffer);
/*
* There are two cases where we could be getting extra data here:
* 1) If we're renegotiating a connection and the handshake is already
* complete (from the server perspective), it can encrypted app data
* (not handshake data) in an extra buffer at this point.
* 2) (sspi_status == SEC_I_CONTINUE_NEEDED) We are negotiating a
* connection and this extra data is part of the handshake.
* We should process the data immediately; waiting for the socket to
* be ready may fail since the server is done sending handshake data.
*/
/* check if the remaining data is less than the total amount
* and therefore begins after the already processed data */
if (secure_channel->encdata_offset > inbuf[1].cbBuffer) {
memmove (secure_channel->encdata_buffer,
(secure_channel->encdata_buffer + secure_channel->encdata_offset) - inbuf[1].cbBuffer,
inbuf[1].cbBuffer);
secure_channel->encdata_offset = inbuf[1].cbBuffer;
if (sspi_status == SEC_I_CONTINUE_NEEDED) {
doread = FALSE;
continue;
}
}
} else {
secure_channel->encdata_offset = 0;
}
break;
}
/* check if the handshake needs to be continued */
if (sspi_status == SEC_I_CONTINUE_NEEDED) {
secure_channel->connecting_state = ssl_connect_2_reading;
return true;
}
/* check if the handshake is complete */
if (sspi_status == SEC_E_OK) {
secure_channel->connecting_state = ssl_connect_3;
TRACE ("%s", "SSL/TLS handshake complete");
}
return true;
}
bool
mongoc_secure_channel_handshake_step_3 (mongoc_stream_tls_t *tls, char *hostname, bson_error_t *error)
{
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
BSON_ASSERT (ssl_connect_3 == secure_channel->connecting_state);
TRACE ("SSL/TLS connection with %s (step 3/3)", hostname);
if (!secure_channel->cred) {
MONGOC_LOG_AND_SET_ERROR (
error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_SOCKET, "required TLS credentials not provided");
return false;
}
/* check if the required context attributes are met */
if (secure_channel->ret_flags != secure_channel->req_flags) {
MONGOC_LOG_AND_SET_ERROR (error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_SOCKET, "Failed handshake");
return false;
}
secure_channel->connecting_state = ssl_connect_done;
return true;
}
#endif
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-transport-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-transport-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-transport-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-transport-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-transport.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-transport.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-transport.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-transport.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-monitor-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-monitor-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-monitor-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-monitor-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-monitor.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-monitor.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-monitor.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-monitor.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-stream-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-stream-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-stream-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-stream-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-stream.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-stream.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-stream.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-stream.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-set-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-set-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-set-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-set-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-set.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-set.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-set.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-set.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-shared-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-shared-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-shared-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-shared-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-shared.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-shared.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-shared.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-shared.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sleep.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sleep.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sleep.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sleep.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi.c
similarity index 97%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi.c
index a4088868..76c1ceb9 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi.c
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi.c
@@ -1,466 +1,460 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* This file originates from https://github.com/mongodb-labs/winkerberos
*/
#include <mongoc/mongoc-config.h>
#ifdef MONGOC_ENABLE_SASL_SSPI
/* mingw doesn't define this */
#ifndef CRYPT_STRING_NOCRLF
#define CRYPT_STRING_NOCRLF 0x40000000
#endif
+#include <mongoc/mongoc-error-private.h>
#include <mongoc/mongoc-util-private.h>
#include <mongoc/mongoc-sspi-private.h>
void
_mongoc_sspi_destroy_sspi_client_state (mongoc_sspi_client_state_t *state)
{
if (state->haveCtx) {
DeleteSecurityContext (&state->ctx);
state->haveCtx = 0;
}
if (state->haveCred) {
FreeCredentialsHandle (&state->cred);
state->haveCred = 0;
}
if (state->spn != NULL) {
bson_free (state->spn);
state->spn = NULL;
}
if (state->response != NULL) {
bson_free (state->response);
state->response = NULL;
}
if (state->username != NULL) {
bson_free (state->username);
state->username = NULL;
}
}
void
_mongoc_sspi_set_gsserror (DWORD errCode, const SEC_CHAR *msg)
{
- SEC_CHAR *err;
- DWORD status;
- DWORD flags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS;
- status = FormatMessageA (flags, NULL, errCode, MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &err, 0, NULL);
- if (status) {
- MONGOC_ERROR ("SSPI: %s: %s", msg, err);
- LocalFree (err);
- } else {
- MONGOC_ERROR ("SSPI: %s", msg);
- }
+ char *err = mongoc_winerr_to_string (errCode);
+ MONGOC_ERROR ("SSPI: %s: %s", msg, err);
+ bson_free (err);
}
static SEC_CHAR *
_mongoc_sspi_base64_encode (const SEC_CHAR *value, DWORD vlen)
{
SEC_CHAR *out = NULL;
DWORD len;
/* Get the correct size for the out buffer. */
if (CryptBinaryToStringA ((BYTE *) value, vlen, CRYPT_STRING_BASE64 | CRYPT_STRING_NOCRLF, NULL, &len)) {
out = (SEC_CHAR *) bson_malloc (sizeof (SEC_CHAR) * len);
if (out) {
/* Encode to the out buffer. */
if (CryptBinaryToStringA ((BYTE *) value, vlen, CRYPT_STRING_BASE64 | CRYPT_STRING_NOCRLF, out, &len)) {
return out;
} else {
bson_free (out);
}
}
}
MONGOC_ERROR ("%s", "CryptBinaryToString failed.");
return NULL;
}
static SEC_CHAR *
_mongoc_sspi_base64_decode (const SEC_CHAR *value, DWORD *rlen)
{
SEC_CHAR *out = NULL;
/* Get the correct size for the out buffer. */
if (CryptStringToBinaryA (value, 0, CRYPT_STRING_BASE64, NULL, rlen, NULL, NULL)) {
out = (SEC_CHAR *) bson_malloc (sizeof (SEC_CHAR) * *rlen);
if (out) {
/* Decode to the out buffer. */
if (CryptStringToBinaryA (value, 0, CRYPT_STRING_BASE64, (BYTE *) out, rlen, NULL, NULL)) {
return out;
} else {
bson_free (out);
}
}
}
MONGOC_ERROR ("%s", "CryptStringToBinary failed.");
return NULL;
}
static CHAR *
_mongoc_sspi_wide_to_utf8 (WCHAR *value)
{
CHAR *out;
int len = WideCharToMultiByte (CP_UTF8, 0, value, -1, NULL, 0, NULL, NULL);
if (len) {
out = (CHAR *) bson_malloc (sizeof (CHAR) * len);
if (WideCharToMultiByte (CP_UTF8, 0, value, -1, out, len, NULL, NULL)) {
return out;
} else {
bson_free (out);
}
}
_mongoc_sspi_set_gsserror (GetLastError (), "WideCharToMultiByte");
return NULL;
}
int
_mongoc_sspi_auth_sspi_client_init (WCHAR *service,
ULONG flags,
WCHAR *user,
ULONG ulen,
WCHAR *domain,
ULONG dlen,
WCHAR *password,
ULONG plen,
mongoc_sspi_client_state_t *state)
{
SECURITY_STATUS status;
SEC_WINNT_AUTH_IDENTITY_W authIdentity;
TimeStamp ignored;
state->response = NULL;
state->username = NULL;
state->qop = SECQOP_WRAP_NO_ENCRYPT;
state->flags = flags;
state->haveCred = 0;
state->haveCtx = 0;
state->spn = _wcsdup (service);
if (state->spn == NULL) {
return MONGOC_SSPI_AUTH_GSS_ERROR;
}
/* Convert RFC-2078 format to SPN */
if (!wcschr (state->spn, L'/')) {
WCHAR *ptr = wcschr (state->spn, L'@');
if (ptr) {
*ptr = L'/';
}
}
if (user) {
authIdentity.User = user;
authIdentity.UserLength = ulen;
authIdentity.Domain = domain;
authIdentity.DomainLength = dlen;
authIdentity.Password = password;
authIdentity.PasswordLength = plen;
authIdentity.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;
}
/* Note that the first parameter, pszPrincipal, appears to be
* completely ignored in the Kerberos SSP. For more details see
* https://github.com/mongodb-labs/winkerberos/issues/11.
* */
status = AcquireCredentialsHandleW (/* Principal */
NULL,
/* Security package name */
L"kerberos",
/* Credentials Use */
SECPKG_CRED_OUTBOUND,
/* LogonID (We don't use this) */
NULL,
/* AuthData */
password ? &authIdentity : NULL,
/* Always NULL */
NULL,
/* Always NULL */
NULL,
/* CredHandle */
&state->cred,
/* Expiry (Required but unused by us) */
&ignored);
if (status != SEC_E_OK) {
_mongoc_sspi_set_gsserror (status, "AcquireCredentialsHandle");
return MONGOC_SSPI_AUTH_GSS_ERROR;
}
state->haveCred = 1;
return MONGOC_SSPI_AUTH_GSS_COMPLETE;
}
int
_mongoc_sspi_auth_sspi_client_step (mongoc_sspi_client_state_t *state, SEC_CHAR *challenge)
{
SecBufferDesc inbuf;
SecBuffer inBufs[1];
SecBufferDesc outbuf;
SecBuffer outBufs[1];
ULONG ignored;
SECURITY_STATUS status = MONGOC_SSPI_AUTH_GSS_CONTINUE;
DWORD len;
if (state->response != NULL) {
bson_free (state->response);
state->response = NULL;
}
inbuf.ulVersion = SECBUFFER_VERSION;
inbuf.cBuffers = 1;
inbuf.pBuffers = inBufs;
inBufs[0].pvBuffer = NULL;
inBufs[0].cbBuffer = 0;
inBufs[0].BufferType = SECBUFFER_TOKEN;
if (state->haveCtx) {
inBufs[0].pvBuffer = _mongoc_sspi_base64_decode (challenge, &len);
if (!inBufs[0].pvBuffer) {
return MONGOC_SSPI_AUTH_GSS_ERROR;
}
inBufs[0].cbBuffer = len;
}
outbuf.ulVersion = SECBUFFER_VERSION;
outbuf.cBuffers = 1;
outbuf.pBuffers = outBufs;
outBufs[0].pvBuffer = NULL;
outBufs[0].cbBuffer = 0;
outBufs[0].BufferType = SECBUFFER_TOKEN;
status = InitializeSecurityContextW (/* CredHandle */
&state->cred,
/* CtxtHandle (NULL on first call) */
state->haveCtx ? &state->ctx : NULL,
/* Service Principal Name */
state->spn,
/* Flags */
ISC_REQ_ALLOCATE_MEMORY | state->flags,
/* Always 0 */
0,
/* Target data representation */
SECURITY_NETWORK_DREP,
/* Challenge (NULL on first call) */
state->haveCtx ? &inbuf : NULL,
/* Always 0 */
0,
/* CtxtHandle (Set on first call) */
&state->ctx,
/* Output */
&outbuf,
/* Context attributes */
&ignored,
/* Expiry (We don't use this) */
NULL);
if (status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED) {
_mongoc_sspi_set_gsserror (status, "InitializeSecurityContext");
status = MONGOC_SSPI_AUTH_GSS_ERROR;
goto done;
}
state->haveCtx = 1;
if (outBufs[0].cbBuffer) {
state->response = _mongoc_sspi_base64_encode (outBufs[0].pvBuffer, outBufs[0].cbBuffer);
if (!state->response) {
status = MONGOC_SSPI_AUTH_GSS_ERROR;
goto done;
}
}
if (status == SEC_E_OK) {
/* Get authenticated username. */
SecPkgContext_NamesW names;
status = QueryContextAttributesW (&state->ctx, SECPKG_ATTR_NAMES, &names);
if (status != SEC_E_OK) {
_mongoc_sspi_set_gsserror (status, "QueryContextAttributesW");
status = MONGOC_SSPI_AUTH_GSS_ERROR;
goto done;
}
state->username = _mongoc_sspi_wide_to_utf8 (names.sUserName);
if (state->username == NULL) {
FreeContextBuffer (names.sUserName);
status = MONGOC_SSPI_AUTH_GSS_ERROR;
goto done;
}
FreeContextBuffer (names.sUserName);
status = MONGOC_SSPI_AUTH_GSS_COMPLETE;
} else {
status = MONGOC_SSPI_AUTH_GSS_CONTINUE;
}
done:
if (inBufs[0].pvBuffer) {
bson_free (inBufs[0].pvBuffer);
}
if (outBufs[0].pvBuffer) {
FreeContextBuffer (outBufs[0].pvBuffer);
}
return status;
}
int
_mongoc_sspi_auth_sspi_client_unwrap (mongoc_sspi_client_state_t *state, SEC_CHAR *challenge)
{
SECURITY_STATUS status;
DWORD len;
SecBuffer wrapBufs[2];
SecBufferDesc wrapBufDesc;
wrapBufDesc.ulVersion = SECBUFFER_VERSION;
wrapBufDesc.cBuffers = 2;
wrapBufDesc.pBuffers = wrapBufs;
if (state->response != NULL) {
bson_free (state->response);
state->response = NULL;
state->qop = SECQOP_WRAP_NO_ENCRYPT;
}
if (!state->haveCtx) {
return MONGOC_SSPI_AUTH_GSS_ERROR;
}
wrapBufs[0].pvBuffer = _mongoc_sspi_base64_decode (challenge, &len);
if (!wrapBufs[0].pvBuffer) {
return MONGOC_SSPI_AUTH_GSS_ERROR;
}
wrapBufs[0].cbBuffer = len;
wrapBufs[0].BufferType = SECBUFFER_STREAM;
wrapBufs[1].pvBuffer = NULL;
wrapBufs[1].cbBuffer = 0;
wrapBufs[1].BufferType = SECBUFFER_DATA;
status = DecryptMessage (&state->ctx, &wrapBufDesc, 0, &state->qop);
if (status == SEC_E_OK) {
status = MONGOC_SSPI_AUTH_GSS_COMPLETE;
} else {
_mongoc_sspi_set_gsserror (status, "DecryptMessage");
status = MONGOC_SSPI_AUTH_GSS_ERROR;
goto done;
}
if (wrapBufs[1].cbBuffer) {
state->response = _mongoc_sspi_base64_encode (wrapBufs[1].pvBuffer, wrapBufs[1].cbBuffer);
if (!state->response) {
status = MONGOC_SSPI_AUTH_GSS_ERROR;
}
}
done:
if (wrapBufs[0].pvBuffer) {
bson_free (wrapBufs[0].pvBuffer);
}
return status;
}
int
_mongoc_sspi_auth_sspi_client_wrap (
mongoc_sspi_client_state_t *state, SEC_CHAR *data, SEC_CHAR *user, ULONG ulen, int protect)
{
SECURITY_STATUS status;
SecPkgContext_Sizes sizes;
SecBuffer wrapBufs[3];
SecBufferDesc wrapBufDesc;
SEC_CHAR *decodedData = NULL;
SEC_CHAR *inbuf;
SIZE_T inbufSize;
SEC_CHAR *outbuf;
DWORD outbufSize;
SEC_CHAR *plaintextMessage;
ULONG plaintextMessageSize;
if (state->response != NULL) {
bson_free (state->response);
state->response = NULL;
}
if (!state->haveCtx) {
return MONGOC_SSPI_AUTH_GSS_ERROR;
}
status = QueryContextAttributes (&state->ctx, SECPKG_ATTR_SIZES, &sizes);
if (status != SEC_E_OK) {
_mongoc_sspi_set_gsserror (status, "QueryContextAttributes");
return MONGOC_SSPI_AUTH_GSS_ERROR;
}
if (user) {
/* Length of user + 4 bytes for security layer (see below). */
plaintextMessageSize = ulen + 4;
} else {
decodedData = _mongoc_sspi_base64_decode (data, &plaintextMessageSize);
if (!decodedData) {
return MONGOC_SSPI_AUTH_GSS_ERROR;
}
}
inbufSize = sizes.cbSecurityTrailer + plaintextMessageSize + sizes.cbBlockSize;
inbuf = (SEC_CHAR *) bson_malloc (inbufSize);
if (inbuf == NULL) {
bson_free (decodedData);
return MONGOC_SSPI_AUTH_GSS_ERROR;
}
plaintextMessage = inbuf + sizes.cbSecurityTrailer;
if (user) {
/* Authenticate the provided user. Unlike pykerberos, we don't
* need any information from "data" to do that.
* */
plaintextMessage[0] = 1; /* No security layer */
plaintextMessage[1] = 0;
plaintextMessage[2] = 0;
plaintextMessage[3] = 0;
memcpy_s (plaintextMessage + 4, inbufSize - sizes.cbSecurityTrailer - 4, user, strlen (user));
} else {
/* No user provided. Just rewrap data. */
memcpy_s (plaintextMessage, inbufSize - sizes.cbSecurityTrailer, decodedData, plaintextMessageSize);
bson_free (decodedData);
}
wrapBufDesc.cBuffers = 3;
wrapBufDesc.pBuffers = wrapBufs;
wrapBufDesc.ulVersion = SECBUFFER_VERSION;
wrapBufs[0].cbBuffer = sizes.cbSecurityTrailer;
wrapBufs[0].BufferType = SECBUFFER_TOKEN;
wrapBufs[0].pvBuffer = inbuf;
wrapBufs[1].cbBuffer = (ULONG) plaintextMessageSize;
wrapBufs[1].BufferType = SECBUFFER_DATA;
wrapBufs[1].pvBuffer = inbuf + sizes.cbSecurityTrailer;
wrapBufs[2].cbBuffer = sizes.cbBlockSize;
wrapBufs[2].BufferType = SECBUFFER_PADDING;
wrapBufs[2].pvBuffer = inbuf + (sizes.cbSecurityTrailer + plaintextMessageSize);
status = EncryptMessage (&state->ctx, protect ? 0 : SECQOP_WRAP_NO_ENCRYPT, &wrapBufDesc, 0);
if (status != SEC_E_OK) {
bson_free (inbuf);
_mongoc_sspi_set_gsserror (status, "EncryptMessage");
return MONGOC_SSPI_AUTH_GSS_ERROR;
}
outbufSize = wrapBufs[0].cbBuffer + wrapBufs[1].cbBuffer + wrapBufs[2].cbBuffer;
outbuf = (SEC_CHAR *) bson_malloc (sizeof (SEC_CHAR) * outbufSize);
memcpy_s (outbuf, outbufSize, wrapBufs[0].pvBuffer, wrapBufs[0].cbBuffer);
memcpy_s (
outbuf + wrapBufs[0].cbBuffer, outbufSize - wrapBufs[0].cbBuffer, wrapBufs[1].pvBuffer, wrapBufs[1].cbBuffer);
memcpy_s (outbuf + wrapBufs[0].cbBuffer + wrapBufs[1].cbBuffer,
outbufSize - wrapBufs[0].cbBuffer - wrapBufs[1].cbBuffer,
wrapBufs[2].pvBuffer,
wrapBufs[2].cbBuffer);
state->response = _mongoc_sspi_base64_encode (outbuf, outbufSize);
if (!state->response) {
status = MONGOC_SSPI_AUTH_GSS_ERROR;
} else {
status = MONGOC_SSPI_AUTH_GSS_COMPLETE;
}
bson_free (inbuf);
bson_free (outbuf);
return status;
}
#endif
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-buffered.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-buffered.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-buffered.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-buffered.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-buffered.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-buffered.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-buffered.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-buffered.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-file.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-file.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-file.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-file.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-file.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-file.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-file.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-file.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-download-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-download-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-download-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-download-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-download.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-download.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-download.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-download.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-upload-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-upload-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-upload-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-upload-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-upload.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-upload.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-upload.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-upload.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-socket.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-socket.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-socket.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-socket.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-socket.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-socket.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-socket.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-socket.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-bio-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-bio-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-bio-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-bio-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-bio.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-bio.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-bio.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-bio.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.c
similarity index 98%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.c
index 66eecb52..f71995bd 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.c
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.c
@@ -1,912 +1,897 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <mongoc/mongoc-config.h>
#ifdef MONGOC_ENABLE_SSL_OPENSSL
#include <bson/bson.h>
#include <errno.h>
#include <string.h>
#include <openssl/bio.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
#include <openssl/x509v3.h>
#include <mongoc/mongoc-counters-private.h>
#include <mongoc/mongoc-errno-private.h>
#include <mongoc/mongoc-ssl.h>
#include <mongoc/mongoc-ssl-private.h>
#include <mongoc/mongoc-stream-tls.h>
#include <mongoc/mongoc-stream-private.h>
#include <mongoc/mongoc-stream-tls-private.h>
#include <mongoc/mongoc-stream-tls-openssl-bio-private.h>
#include <mongoc/mongoc-stream-tls-openssl-private.h>
#include <mongoc/mongoc-openssl-private.h>
#include <mongoc/mongoc-trace-private.h>
#include <mongoc/mongoc-log.h>
#include <mongoc/mongoc-error.h>
#include <common-macros-private.h>
#include <common-cmp-private.h>
#include <inttypes.h>
#undef MONGOC_LOG_DOMAIN
#define MONGOC_LOG_DOMAIN "stream-tls-openssl"
#define MONGOC_STREAM_TLS_OPENSSL_BUFFER_SIZE 4096
#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20700000L)
static void
BIO_meth_free (BIO_METHOD *meth)
{
/* Nothing to free pre OpenSSL 1.1.0 */
}
#endif
/*
*--------------------------------------------------------------------------
*
* _mongoc_stream_tls_openssl_destroy --
*
* Cleanup after usage of a mongoc_stream_tls_openssl_t. Free all
*allocated
* resources and ensure connections are closed.
*
* Returns:
* None.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
static void
_mongoc_stream_tls_openssl_destroy (mongoc_stream_t *stream)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_openssl_t *openssl = (mongoc_stream_tls_openssl_t *) tls->ctx;
BSON_ASSERT (tls);
BIO_free_all (openssl->bio);
openssl->bio = NULL;
BIO_meth_free (openssl->meth);
openssl->meth = NULL;
mongoc_stream_destroy (tls->base_stream);
tls->base_stream = NULL;
SSL_CTX_free (openssl->ctx);
openssl->ctx = NULL;
mongoc_openssl_ocsp_opt_destroy (openssl->ocsp_opts);
openssl->ocsp_opts = NULL;
bson_free (openssl);
bson_free (stream);
mongoc_counter_streams_active_dec ();
mongoc_counter_streams_disposed_inc ();
}
/*
*--------------------------------------------------------------------------
*
* _mongoc_stream_tls_openssl_failed --
*
* Called on stream failure. Same as _mongoc_stream_tls_openssl_destroy()
*
* Returns:
* None.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
static void
_mongoc_stream_tls_openssl_failed (mongoc_stream_t *stream)
{
_mongoc_stream_tls_openssl_destroy (stream);
}
/*
*--------------------------------------------------------------------------
*
* _mongoc_stream_tls_openssl_close --
*
* Close the underlying socket.
*
* Linus dictates that you should not check the result of close()
* since there is a race condition with EAGAIN and a new file
* descriptor being opened.
*
* Returns:
* 0 on success; otherwise -1.
*
* Side effects:
* The BIO fd is closed.
*
*--------------------------------------------------------------------------
*/
static int
_mongoc_stream_tls_openssl_close (mongoc_stream_t *stream)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
int ret = 0;
ENTRY;
BSON_ASSERT (tls);
ret = mongoc_stream_close (tls->base_stream);
RETURN (ret);
}
/*
*--------------------------------------------------------------------------
*
* _mongoc_stream_tls_openssl_flush --
*
* Flush the underlying stream.
*
* Returns:
* 0 if successful; otherwise -1.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
static int
_mongoc_stream_tls_openssl_flush (mongoc_stream_t *stream)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_openssl_t *openssl = (mongoc_stream_tls_openssl_t *) tls->ctx;
BSON_ASSERT (openssl);
return BIO_flush (openssl->bio);
}
static ssize_t
_mongoc_stream_tls_openssl_write (mongoc_stream_tls_t *tls, char *buf, size_t buf_len)
{
mongoc_stream_tls_openssl_t *openssl = (mongoc_stream_tls_openssl_t *) tls->ctx;
ssize_t ret;
int64_t now;
int64_t expire = 0;
ENTRY;
BSON_ASSERT (tls);
BSON_ASSERT (buf);
BSON_ASSERT (buf_len);
if (tls->timeout_msec >= 0) {
expire = bson_get_monotonic_time () + (tls->timeout_msec * 1000);
}
BSON_ASSERT (mcommon_in_range_unsigned (int, buf_len));
ret = BIO_write (openssl->bio, buf, (int) buf_len);
if (ret <= 0) {
return ret;
}
if (expire) {
now = bson_get_monotonic_time ();
if ((expire - now) < 0) {
if (mcommon_cmp_less_su (ret, buf_len)) {
mongoc_counter_streams_timeout_inc ();
}
tls->timeout_msec = 0;
} else {
tls->timeout_msec = (expire - now) / 1000;
}
}
RETURN (ret);
}
/*
*--------------------------------------------------------------------------
*
* _mongoc_stream_tls_openssl_writev --
*
* Write the iovec to the stream. This function will try to write
* all of the bytes or fail. If the number of bytes is not equal
* to the number requested, a failure or EOF has occurred.
*
* Returns:
* -1 on failure, otherwise the number of bytes written.
*
* Side effects:
* None.
*
* This function is copied as _mongoc_stream_tls_secure_transport_writev
*--------------------------------------------------------------------------
*/
static ssize_t
_mongoc_stream_tls_openssl_writev (mongoc_stream_t *stream, mongoc_iovec_t *iov, size_t iovcnt, int32_t timeout_msec)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
char buf[MONGOC_STREAM_TLS_OPENSSL_BUFFER_SIZE];
ssize_t ret = 0;
ssize_t child_ret;
size_t i;
size_t iov_pos = 0;
/* There's a bit of a dance to coalesce vectorized writes into
* MONGOC_STREAM_TLS_OPENSSL_BUFFER_SIZE'd writes to avoid lots of small tls
* packets.
*
* The basic idea is that we want to combine writes in the buffer if they're
* smaller than the buffer, flushing as it gets full. For larger writes, or
* the last write in the iovec array, we want to ignore the buffer and just
* write immediately. We take care of doing buffer writes by re-invoking
* ourself with a single iovec_t, pointing at our stack buffer.
*/
char *buf_head = buf;
char *buf_tail = buf;
char *buf_end = buf + MONGOC_STREAM_TLS_OPENSSL_BUFFER_SIZE;
size_t bytes;
char *to_write = NULL;
size_t to_write_len = 0u;
BSON_ASSERT (tls);
BSON_ASSERT (iov);
BSON_ASSERT (iovcnt);
ENTRY;
tls->timeout_msec = timeout_msec;
for (i = 0; i < iovcnt; i++) {
iov_pos = 0;
while (iov_pos < iov[i].iov_len) {
BSON_ASSERT (buf_end >= buf_tail);
const size_t buf_remaining = (size_t) (buf_end - buf_tail);
if (buf_head != buf_tail || ((i + 1 < iovcnt) && (buf_remaining > (iov[i].iov_len - iov_pos)))) {
/* If we have either of:
* - buffered bytes already
* - another iovec to send after this one and we don't have more
* bytes to send than the size of the buffer.
*
* copy into the buffer */
bytes = BSON_MIN (iov[i].iov_len - iov_pos, buf_remaining);
memcpy (buf_tail, (char *) iov[i].iov_base + iov_pos, bytes);
buf_tail += bytes;
iov_pos += bytes;
if (buf_tail == buf_end) {
/* If we're full, request send */
to_write = buf_head;
to_write_len = (size_t) (buf_tail - buf_head);
buf_tail = buf_head = buf;
}
} else {
/* Didn't buffer, so just write it through */
to_write = (char *) iov[i].iov_base + iov_pos;
to_write_len = iov[i].iov_len - iov_pos;
iov_pos += to_write_len;
}
if (to_write) {
/* We get here if we buffered some bytes and filled the buffer, or
* if we didn't buffer and have to send out of the iovec */
child_ret = _mongoc_stream_tls_openssl_write (tls, to_write, to_write_len);
if (mcommon_cmp_not_equal_su (child_ret, to_write_len)) {
TRACE ("Got child_ret: %zd while to_write_len is: %zu", child_ret, to_write_len);
}
if (child_ret < 0) {
TRACE ("Returning what I had (%zd) as apposed to the error "
"(%zd, errno:%d)",
ret,
child_ret,
errno);
RETURN (ret);
}
ret += child_ret;
if (mcommon_cmp_less_su (child_ret, to_write_len)) {
/* we timed out, so send back what we could send */
RETURN (ret);
}
to_write = NULL;
}
}
}
if (buf_head != buf_tail) {
/* If we have any bytes buffered, send */
child_ret = _mongoc_stream_tls_openssl_write (tls, buf_head, buf_tail - buf_head);
if (child_ret < 0) {
RETURN (child_ret);
}
ret += child_ret;
}
if (ret >= 0) {
mongoc_counter_streams_egress_add (ret);
}
RETURN (ret);
}
/*
*--------------------------------------------------------------------------
*
* _mongoc_stream_tls_openssl_readv --
*
* Read from the stream into iov. This function will try to read
* all of the bytes or fail. If the number of bytes is not equal
* to the number requested, a failure or EOF has occurred.
*
* Returns:
* -1 on failure, 0 on EOF, otherwise the number of bytes read.
*
* Side effects:
* iov buffers will be written to.
*
* This function is copied as _mongoc_stream_tls_secure_transport_readv
*
*--------------------------------------------------------------------------
*/
static ssize_t
_mongoc_stream_tls_openssl_readv (
mongoc_stream_t *stream, mongoc_iovec_t *iov, size_t iovcnt, size_t min_bytes, int32_t timeout_msec)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_openssl_t *openssl = (mongoc_stream_tls_openssl_t *) tls->ctx;
ssize_t ret = 0;
size_t i;
int read_ret;
size_t iov_pos = 0;
int64_t now;
int64_t expire = 0;
ENTRY;
BSON_ASSERT (tls);
BSON_ASSERT (iov);
BSON_ASSERT (iovcnt);
tls->timeout_msec = timeout_msec;
if (timeout_msec >= 0) {
expire = bson_get_monotonic_time () + (timeout_msec * 1000UL);
}
for (i = 0; i < iovcnt; i++) {
iov_pos = 0;
while (iov_pos < iov[i].iov_len) {
read_ret = BIO_read (openssl->bio, (char *) iov[i].iov_base + iov_pos, (int) (iov[i].iov_len - iov_pos));
/* https://www.openssl.org/docs/crypto/BIO_should_retry.html:
*
* If BIO_should_retry() returns false then the precise "error
* condition" depends on the BIO type that caused it and the return
* code of the BIO operation. For example if a call to BIO_read() on a
* socket BIO returns 0 and BIO_should_retry() is false then the cause
* will be that the connection closed.
*/
if (read_ret < 0 || (read_ret == 0 && !BIO_should_retry (openssl->bio))) {
return -1;
}
if (expire) {
now = bson_get_monotonic_time ();
if ((expire - now) < 0) {
if (read_ret == 0) {
mongoc_counter_streams_timeout_inc ();
#ifdef _WIN32
errno = WSAETIMEDOUT;
#else
errno = ETIMEDOUT;
#endif
RETURN (-1);
}
tls->timeout_msec = 0;
} else {
tls->timeout_msec = (expire - now) / 1000L;
}
}
ret += read_ret;
if ((size_t) ret >= min_bytes) {
mongoc_counter_streams_ingress_add (ret);
RETURN (ret);
}
iov_pos += read_ret;
}
}
if (ret >= 0) {
mongoc_counter_streams_ingress_add (ret);
}
RETURN (ret);
}
/*
*--------------------------------------------------------------------------
*
* _mongoc_stream_tls_openssl_setsockopt --
*
* Perform a setsockopt on the underlying stream.
*
* Returns:
* -1 on failure, otherwise opt specific value.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
static int
_mongoc_stream_tls_openssl_setsockopt (
mongoc_stream_t *stream, int level, int optname, void *optval, mongoc_socklen_t optlen)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
BSON_ASSERT (tls);
return mongoc_stream_setsockopt (tls->base_stream, level, optname, optval, optlen);
}
static mongoc_stream_t *
_mongoc_stream_tls_openssl_get_base_stream (mongoc_stream_t *stream)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
return tls->base_stream;
}
static bool
_mongoc_stream_tls_openssl_check_closed (mongoc_stream_t *stream) /* IN */
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
BSON_ASSERT (stream);
return mongoc_stream_check_closed (tls->base_stream);
}
static bool
_mongoc_stream_tls_openssl_set_verify_cert_error (SSL *ssl, bson_error_t *error)
{
long verify_result;
BSON_ASSERT_PARAM (ssl);
BSON_ASSERT_PARAM (error);
verify_result = SSL_get_verify_result (ssl);
if (verify_result == X509_V_OK) {
return false;
}
bson_set_error (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"TLS handshake failed: certificate verify failed (%ld): %s",
verify_result,
X509_verify_cert_error_string (verify_result));
return true;
}
/**
* mongoc_stream_tls_openssl_handshake:
*/
static bool
_mongoc_stream_tls_openssl_handshake (mongoc_stream_t *stream, const char *host, int *events, bson_error_t *error)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_openssl_t *openssl = (mongoc_stream_tls_openssl_t *) tls->ctx;
SSL *ssl;
BSON_ASSERT (tls);
BSON_ASSERT (host);
ENTRY;
BIO_get_ssl (openssl->bio, &ssl);
if (BIO_do_handshake (openssl->bio) == 1) {
*events = 0;
#ifdef MONGOC_ENABLE_OCSP_OPENSSL
/* Validate OCSP */
if (openssl->ocsp_opts && 1 != _mongoc_ocsp_tlsext_status (ssl, openssl->ocsp_opts)) {
bson_set_error (
error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_SOCKET, "TLS handshake failed: Failed OCSP verification");
RETURN (false);
}
#endif
if (_mongoc_openssl_check_peer_hostname (ssl, host, tls->ssl_opts.allow_invalid_hostname)) {
RETURN (true);
}
/* Try to relay certificate failure reason from OpenSSL library if any. */
if (_mongoc_stream_tls_openssl_set_verify_cert_error (ssl, error)) {
RETURN (false);
}
/* Otherwise, use simple error message. */
bson_set_error (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"TLS handshake failed: Failed certificate verification");
RETURN (false);
}
if (BIO_should_retry (openssl->bio)) {
*events = BIO_should_read (openssl->bio) ? POLLIN : POLLOUT;
RETURN (false);
}
if (!errno) {
#ifdef _WIN32
errno = WSAETIMEDOUT;
#else
errno = ETIMEDOUT;
#endif
}
*events = 0;
/* Try to relay certificate failure reason from OpenSSL library if any. */
if (_mongoc_stream_tls_openssl_set_verify_cert_error (ssl, error)) {
RETURN (false);
}
/* Otherwise, try to relay error info from OpenSSL. */
if (ERR_peek_error () != 0) {
bson_set_error (error,
MONGOC_ERROR_STREAM,
MONGOC_ERROR_STREAM_SOCKET,
"TLS handshake failed: %s",
ERR_error_string (ERR_get_error (), NULL));
RETURN (false);
}
/* Otherwise, use simple error info. */
{
-#ifdef _WIN32
- LPTSTR msg = NULL;
- FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,
- NULL,
- errno, /* WSAETIMEDOUT */
- LANG_NEUTRAL,
- (LPTSTR) &msg,
- 0,
- NULL);
-#else
- const char *msg = strerror (errno); /* ETIMEDOUT */
-#endif
-
+ char errmsg_buf[BSON_ERROR_BUFFER_SIZE];
+ char *msg = bson_strerror_r (errno, errmsg_buf, sizeof errmsg_buf);
bson_set_error (error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_SOCKET, "TLS handshake failed: %s", msg);
-
-#ifdef _WIN32
- LocalFree (msg);
-#endif
}
RETURN (false);
}
/* Callback to get the client provided SNI, if any
* It is only called in SSL "server mode" (e.g. when using the Mock Server),
* and we don't actually use the hostname for anything, just debug print it
*/
static int
_mongoc_stream_tls_openssl_sni (SSL *ssl, int *ad, void *arg)
{
const char *hostname;
BSON_UNUSED (ad);
BSON_UNUSED (arg);
if (ssl == NULL) {
TRACE ("%s", "No SNI hostname provided");
return SSL_TLSEXT_ERR_NOACK;
}
hostname = SSL_get_servername (ssl, TLSEXT_NAMETYPE_host_name);
/* This is intentionally debug since its only used by the mock test server */
MONGOC_DEBUG ("Got SNI: '%s'", hostname);
return SSL_TLSEXT_ERR_OK;
}
static bool
_mongoc_stream_tls_openssl_timed_out (mongoc_stream_t *stream)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
ENTRY;
RETURN (mongoc_stream_timed_out (tls->base_stream));
}
static bool
_mongoc_stream_tls_openssl_should_retry (mongoc_stream_t *stream)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_openssl_t *openssl = (mongoc_stream_tls_openssl_t *) tls->ctx;
ENTRY;
if (BIO_should_retry (openssl->bio)) {
RETURN (true);
}
RETURN (mongoc_stream_should_retry (tls->base_stream));
}
/* Creates a new mongoc_stream_tls_openssl_t with ssl_ctx. */
static mongoc_stream_t *
create_stream_with_ctx (
mongoc_stream_t *base_stream, const char *host, mongoc_ssl_opt_t *opt, int client, SSL_CTX *ssl_ctx)
{
mongoc_stream_tls_t *tls;
mongoc_stream_tls_openssl_t *openssl;
mongoc_openssl_ocsp_opt_t *ocsp_opts = NULL;
BIO *bio_ssl = NULL;
BIO *bio_mongoc_shim = NULL;
BIO_METHOD *meth;
SSL *ssl;
BSON_ASSERT (base_stream);
BSON_ASSERT (opt);
ENTRY;
if (!ssl_ctx) {
RETURN (NULL);
}
bio_ssl = BIO_new_ssl (ssl_ctx, client);
if (!bio_ssl) {
SSL_CTX_free (ssl_ctx);
RETURN (NULL);
}
BIO_get_ssl (bio_ssl, &ssl);
#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(LIBRESSL_VERSION_NUMBER)
if (!opt->allow_invalid_hostname) {
struct in_addr addr;
struct in6_addr addr6;
X509_VERIFY_PARAM *param = X509_VERIFY_PARAM_new ();
X509_VERIFY_PARAM_set_hostflags (param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);
if (inet_pton (AF_INET, host, &addr) || inet_pton (AF_INET6, host, &addr6)) {
X509_VERIFY_PARAM_set1_ip_asc (param, host);
} else {
X509_VERIFY_PARAM_set1_host (param, host, 0);
}
SSL_set1_param (ssl, param);
X509_VERIFY_PARAM_free (param);
}
#endif
meth = mongoc_stream_tls_openssl_bio_meth_new ();
bio_mongoc_shim = BIO_new (meth);
if (!bio_mongoc_shim) {
BIO_free_all (bio_ssl);
BIO_meth_free (meth);
SSL_CTX_free (ssl_ctx);
RETURN (NULL);
}
/* Added in OpenSSL 0.9.8f, as a build time option */
#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
if (client) {
/* Set the SNI hostname we are expecting certificate for */
SSL_set_tlsext_host_name (ssl, host);
#endif
}
BIO_push (bio_ssl, bio_mongoc_shim);
#ifdef MONGOC_ENABLE_OCSP_OPENSSL
if (client && !opt->weak_cert_validation && !_mongoc_ssl_opts_disable_certificate_revocation_check (opt)) {
/* Set the status_request extension on the SSL object.
* Do not use SSL_CTX_set_tlsext_status_type, since that requires OpenSSL
* 1.1.0.
*/
if (!SSL_set_tlsext_status_type (ssl, TLSEXT_STATUSTYPE_ocsp)) {
MONGOC_ERROR ("cannot enable OCSP status request extension");
mongoc_openssl_ocsp_opt_destroy (ocsp_opts);
BIO_free_all (bio_ssl);
BIO_meth_free (meth);
SSL_CTX_free (ssl_ctx);
RETURN (NULL);
}
ocsp_opts = bson_malloc0 (sizeof (mongoc_openssl_ocsp_opt_t));
ocsp_opts->allow_invalid_hostname = opt->allow_invalid_hostname;
ocsp_opts->weak_cert_validation = opt->weak_cert_validation;
ocsp_opts->disable_endpoint_check = _mongoc_ssl_opts_disable_ocsp_endpoint_check (opt);
ocsp_opts->host = bson_strdup (host);
_mongoc_ssl_opts_copy_to (opt, &ocsp_opts->ssl_opts, true);
}
#endif /* MONGOC_ENABLE_OCSP_OPENSSL */
openssl = (mongoc_stream_tls_openssl_t *) bson_malloc0 (sizeof *openssl);
openssl->bio = bio_ssl;
openssl->meth = meth;
openssl->ctx = ssl_ctx;
openssl->ocsp_opts = ocsp_opts;
tls = (mongoc_stream_tls_t *) bson_malloc0 (sizeof *tls);
tls->parent.type = MONGOC_STREAM_TLS;
tls->parent.destroy = _mongoc_stream_tls_openssl_destroy;
tls->parent.failed = _mongoc_stream_tls_openssl_failed;
tls->parent.close = _mongoc_stream_tls_openssl_close;
tls->parent.flush = _mongoc_stream_tls_openssl_flush;
tls->parent.writev = _mongoc_stream_tls_openssl_writev;
tls->parent.readv = _mongoc_stream_tls_openssl_readv;
tls->parent.setsockopt = _mongoc_stream_tls_openssl_setsockopt;
tls->parent.get_base_stream = _mongoc_stream_tls_openssl_get_base_stream;
tls->parent.check_closed = _mongoc_stream_tls_openssl_check_closed;
tls->parent.timed_out = _mongoc_stream_tls_openssl_timed_out;
tls->parent.should_retry = _mongoc_stream_tls_openssl_should_retry;
memcpy (&tls->ssl_opts, opt, sizeof tls->ssl_opts);
tls->handshake = _mongoc_stream_tls_openssl_handshake;
tls->ctx = (void *) openssl;
tls->timeout_msec = -1;
tls->base_stream = base_stream;
mongoc_stream_tls_openssl_bio_set_data (bio_mongoc_shim, tls);
mongoc_counter_streams_active_inc ();
RETURN ((mongoc_stream_t *) tls);
}
/*
*--------------------------------------------------------------------------
*
* mongoc_stream_tls_openssl_new --
*
* Creates a new mongoc_stream_tls_openssl_t to communicate with a remote
* server using a TLS stream.
*
* @base_stream should be a stream that will become owned by the
* resulting tls stream. It will be used for raw I/O.
*
* Returns:
* NULL on failure, otherwise a mongoc_stream_t.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
mongoc_stream_t *
mongoc_stream_tls_openssl_new (mongoc_stream_t *base_stream, const char *host, mongoc_ssl_opt_t *opt, int client)
{
SSL_CTX *ssl_ctx = _mongoc_openssl_ctx_new (opt);
if (!ssl_ctx) {
RETURN (NULL);
}
if (!client) {
/* Only used by the Mock Server.
* Set a callback to get the SNI, if provided */
SSL_CTX_set_tlsext_servername_callback (ssl_ctx, _mongoc_stream_tls_openssl_sni);
}
return create_stream_with_ctx (base_stream, host, opt, client, ssl_ctx);
}
#if OPENSSL_VERSION_NUMBER >= 0x10100000L
/*
*--------------------------------------------------------------------------
*
* mongoc_stream_tls_openssl_new_with_context --
*
* Creates a new mongoc_stream_tls_openssl_t to communicate with a remote
* server using a TLS stream, using an existing OpenSSL context.
*
* Only called by mongoc_stream_tls_new_with_hostname_and_openssl_context.
*
* @ssl_ctx is the shared OpenSSL context for the mongoc_client_t
* associated with this function call.
*
* Returns:
* NULL on failure, otherwise a mongoc_stream_t.
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
mongoc_stream_t *
mongoc_stream_tls_openssl_new_with_context (
mongoc_stream_t *base_stream, const char *host, mongoc_ssl_opt_t *opt, int client, SSL_CTX *ssl_ctx)
{
// `ssl_ctx` may be NULL if creating the context failed. Return NULL to signal failure.
if (!ssl_ctx) {
return NULL;
}
SSL_CTX_up_ref (ssl_ctx);
return create_stream_with_ctx (base_stream, host, opt, client, ssl_ctx);
}
#endif
void
mongoc_openssl_ocsp_opt_destroy (void *ocsp_opt)
{
mongoc_openssl_ocsp_opt_t *casted;
if (!ocsp_opt) {
return;
}
casted = (mongoc_openssl_ocsp_opt_t *) ocsp_opt;
bson_free (casted->host);
_mongoc_ssl_opts_cleanup (&casted->ssl_opts, true);
bson_free (ocsp_opt);
}
#endif /* MONGOC_ENABLE_SSL_OPENSSL */
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel-private.h
similarity index 97%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel-private.h
index 45d3cb1c..730c842a 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel-private.h
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel-private.h
@@ -1,78 +1,79 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <mongoc/mongoc-prelude.h>
#ifndef MONGOC_STREAM_TLS_SECURE_CHANNEL_PRIVATE_H
#define MONGOC_STREAM_TLS_SECURE_CHANNEL_PRIVATE_H
#ifdef MONGOC_ENABLE_SSL_SECURE_CHANNEL
#include <bson/bson.h>
/* Its mandatory to indicate to Windows who is compiling the code */
#define SECURITY_WIN32
#include <security.h>
BSON_BEGIN_DECLS
/* enum for the nonblocking SSL connection state machine */
typedef enum {
ssl_connect_1,
ssl_connect_2,
ssl_connect_2_reading,
ssl_connect_2_writing,
ssl_connect_3,
ssl_connect_done
} ssl_connect_state;
/* Structs to store Schannel handles */
typedef struct {
CredHandle cred_handle;
TimeStamp time_stamp;
+ PCCERT_CONTEXT cert; /* Owning. Optional client cert. */
} mongoc_secure_channel_cred;
typedef struct {
CtxtHandle ctxt_handle;
TimeStamp time_stamp;
} mongoc_secure_channel_ctxt;
/**
* mongoc_stream_tls_secure_channel_t:
*
* Private storage for Secure Channel Streams
*/
typedef struct {
ssl_connect_state connecting_state;
mongoc_secure_channel_cred *cred;
mongoc_secure_channel_ctxt *ctxt;
SecPkgContext_StreamSizes stream_sizes;
size_t encdata_length, decdata_length;
size_t encdata_offset, decdata_offset;
unsigned char *encdata_buffer, *decdata_buffer;
unsigned long req_flags, ret_flags;
int recv_unrecoverable_err; /* _mongoc_stream_tls_secure_channel_read had an
unrecoverable err */
bool recv_sspi_close_notify; /* true if connection closed by close_notify */
bool recv_connection_closed; /* true if connection closed, regardless how */
} mongoc_stream_tls_secure_channel_t;
BSON_END_DECLS
#endif /* MONGOC_ENABLE_SSL_SECURE_CHANNEL */
#endif /* MONGOC_STREAM_TLS_SECURE_CHANNEL_PRIVATE_H */
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.c
similarity index 97%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.c
index 6ef750f5..92919915 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.c
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.c
@@ -1,981 +1,978 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Significant portion of this file, such as
* _mongoc_stream_tls_secure_channel_write &
*_mongoc_stream_tls_secure_channel_read
* comes straight from one of my favorite projects, cURL!
* Thank you so much for having gone through the Secure Channel pain for me.
*
*
* Copyright (C) 2012 - 2015, Marc Hoersken, <info@marc-hoersken.de>
* Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
* Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
/*
* Based upon the PolarSSL implementation in polarssl.c and polarssl.h:
* Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
*
* Based upon the CyaSSL implementation in cyassl.c and cyassl.h:
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* Thanks for code and inspiration!
*/
#include <mongoc/mongoc-config.h>
#ifdef MONGOC_ENABLE_SSL_SECURE_CHANNEL
#include <bson/bson.h>
#include <mongoc/mongoc-trace-private.h>
#include <mongoc/mongoc-log.h>
#include <mongoc/mongoc-stream-tls.h>
#include <mongoc/mongoc-stream-tls-private.h>
#include <mongoc/mongoc-stream-private.h>
#include <mongoc/mongoc-stream-tls-secure-channel-private.h>
#include <mongoc/mongoc-secure-channel-private.h>
#include <mongoc/mongoc-ssl.h>
#include <mongoc/mongoc-ssl-private.h>
#include <mongoc/mongoc-error.h>
+#include <mongoc/mongoc-error-private.h>
#include <mongoc/mongoc-counters-private.h>
#include <mongoc/mongoc-errno-private.h>
#undef MONGOC_LOG_DOMAIN
#define MONGOC_LOG_DOMAIN "stream-tls-secure-channel"
#define SECURITY_WIN32
#include <security.h>
#include <schnlsp.h>
#include <schannel.h>
/* mingw doesn't define these */
#ifndef SP_PROT_TLS1_1_CLIENT
#define SP_PROT_TLS1_1_CLIENT 0x00000200
#endif
#ifndef SP_PROT_TLS1_2_CLIENT
#define SP_PROT_TLS1_2_CLIENT 0x00000800
#endif
static void
_mongoc_stream_tls_secure_channel_destroy (mongoc_stream_t *stream)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
ENTRY;
BSON_ASSERT (secure_channel);
/* See https://msdn.microsoft.com/en-us/library/windows/desktop/aa380138.aspx
* Shutting Down an Schannel Connection
*/
TRACE ("%s", "shutting down SSL/TLS connection");
if (secure_channel->cred && secure_channel->ctxt) {
SecBufferDesc BuffDesc;
SecBuffer Buffer;
SECURITY_STATUS sspi_status;
SecBuffer outbuf;
SecBufferDesc outbuf_desc;
DWORD dwshut = SCHANNEL_SHUTDOWN;
_mongoc_secure_channel_init_sec_buffer (&Buffer, SECBUFFER_TOKEN, &dwshut, sizeof (dwshut));
_mongoc_secure_channel_init_sec_buffer_desc (&BuffDesc, &Buffer, 1);
sspi_status = ApplyControlToken (&secure_channel->ctxt->ctxt_handle, &BuffDesc);
if (sspi_status != SEC_E_OK) {
MONGOC_ERROR ("ApplyControlToken failure: %ld", sspi_status);
}
/* setup output buffer */
_mongoc_secure_channel_init_sec_buffer (&outbuf, SECBUFFER_EMPTY, NULL, 0);
_mongoc_secure_channel_init_sec_buffer_desc (&outbuf_desc, &outbuf, 1);
sspi_status = InitializeSecurityContext (&secure_channel->cred->cred_handle,
&secure_channel->ctxt->ctxt_handle,
/*tls->hostname*/ NULL,
secure_channel->req_flags,
0,
0,
NULL,
0,
&secure_channel->ctxt->ctxt_handle,
&outbuf_desc,
&secure_channel->ret_flags,
&secure_channel->ctxt->time_stamp);
if ((sspi_status == SEC_E_OK) || (sspi_status == SEC_I_CONTEXT_EXPIRED)) {
/* send close message which is in output buffer */
ssize_t written = mongoc_secure_channel_write (tls, outbuf.pvBuffer, outbuf.cbBuffer);
FreeContextBuffer (outbuf.pvBuffer);
if (outbuf.cbBuffer != (size_t) written) {
TRACE ("failed to send close msg (wrote %zd out of %lu)", written, outbuf.cbBuffer);
}
}
}
/* free SSPI Schannel API security context handle */
if (secure_channel->ctxt) {
TRACE ("%s", "clear security context handle");
DeleteSecurityContext (&secure_channel->ctxt->ctxt_handle);
bson_free (secure_channel->ctxt);
}
/* free SSPI Schannel API credential handle */
if (secure_channel->cred) {
/* decrement the reference counter of the credential/session handle */
/* if the handle was not cached and the refcount is zero */
TRACE ("%s", "clear credential handle");
FreeCredentialsHandle (&secure_channel->cred->cred_handle);
+ CertFreeCertificateContext (secure_channel->cred->cert);
bson_free (secure_channel->cred);
}
/* free internal buffer for received encrypted data */
if (secure_channel->encdata_buffer != NULL) {
bson_free (secure_channel->encdata_buffer);
secure_channel->encdata_length = 0;
secure_channel->encdata_offset = 0;
}
/* free internal buffer for received decrypted data */
if (secure_channel->decdata_buffer != NULL) {
bson_free (secure_channel->decdata_buffer);
secure_channel->decdata_length = 0;
secure_channel->decdata_offset = 0;
}
mongoc_stream_destroy (tls->base_stream);
bson_free (secure_channel);
bson_free (stream);
mongoc_counter_streams_active_dec ();
mongoc_counter_streams_disposed_inc ();
EXIT;
}
static void
_mongoc_stream_tls_secure_channel_failed (mongoc_stream_t *stream)
{
ENTRY;
_mongoc_stream_tls_secure_channel_destroy (stream);
EXIT;
}
static int
_mongoc_stream_tls_secure_channel_close (mongoc_stream_t *stream)
{
int ret = 0;
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
ENTRY;
BSON_ASSERT (secure_channel);
ret = mongoc_stream_close (tls->base_stream);
RETURN (ret);
}
static int
_mongoc_stream_tls_secure_channel_flush (mongoc_stream_t *stream)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
ENTRY;
BSON_ASSERT (secure_channel);
RETURN (0);
}
static ssize_t
_mongoc_stream_tls_secure_channel_write (mongoc_stream_t *stream, char *buf, size_t buf_len)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
ssize_t written = -1;
size_t data_len = 0;
unsigned char *data = NULL;
SecBuffer outbuf[4];
SecBufferDesc outbuf_desc;
SECURITY_STATUS sspi_status = SEC_E_OK;
ENTRY;
BSON_ASSERT (secure_channel);
TRACE ("The entire buffer is: %zu", buf_len);
/* check if the maximum stream sizes were queried */
if (secure_channel->stream_sizes.cbMaximumMessage == 0) {
sspi_status = QueryContextAttributes (
&secure_channel->ctxt->ctxt_handle, SECPKG_ATTR_STREAM_SIZES, &secure_channel->stream_sizes);
if (sspi_status != SEC_E_OK) {
TRACE ("failing here: %d", (int) (__LINE__));
return -1;
}
}
/* check if the buffer is longer than the maximum message length */
if (buf_len > secure_channel->stream_sizes.cbMaximumMessage) {
TRACE ("SHRINKING buf_len from %zu to %lu", buf_len, secure_channel->stream_sizes.cbMaximumMessage);
buf_len = secure_channel->stream_sizes.cbMaximumMessage;
}
/* calculate the complete message length and allocate a buffer for it */
data_len = secure_channel->stream_sizes.cbHeader + buf_len + secure_channel->stream_sizes.cbTrailer;
data = (unsigned char *) bson_malloc (data_len);
/* setup output buffers (header, data, trailer, empty) */
_mongoc_secure_channel_init_sec_buffer (
&outbuf[0], SECBUFFER_STREAM_HEADER, data, secure_channel->stream_sizes.cbHeader);
_mongoc_secure_channel_init_sec_buffer (&outbuf[1],
SECBUFFER_DATA,
data + secure_channel->stream_sizes.cbHeader,
(unsigned long) (buf_len & (size_t) 0xFFFFFFFFUL));
_mongoc_secure_channel_init_sec_buffer (&outbuf[2],
SECBUFFER_STREAM_TRAILER,
data + secure_channel->stream_sizes.cbHeader + buf_len,
secure_channel->stream_sizes.cbTrailer);
_mongoc_secure_channel_init_sec_buffer (&outbuf[3], SECBUFFER_EMPTY, NULL, 0);
_mongoc_secure_channel_init_sec_buffer_desc (&outbuf_desc, outbuf, 4);
/* copy data into output buffer */
memcpy (outbuf[1].pvBuffer, buf, buf_len);
/* https://msdn.microsoft.com/en-us/library/windows/desktop/aa375390.aspx */
sspi_status = EncryptMessage (&secure_channel->ctxt->ctxt_handle, 0, &outbuf_desc, 0);
/* check if the message was encrypted */
if (sspi_status == SEC_E_OK) {
written = 0;
/* send the encrypted message including header, data and trailer */
buf_len = outbuf[0].cbBuffer + outbuf[1].cbBuffer + outbuf[2].cbBuffer;
written = mongoc_secure_channel_write (tls, data, buf_len);
} else {
written = -1;
}
bson_free (data);
if (buf_len == (size_t) written) {
/* Encrypted message including header, data and trailer entirely sent.
* The return value is the number of unencrypted bytes that were sent. */
written = outbuf[1].cbBuffer;
}
return written;
}
/* This is copypasta from _mongoc_stream_tls_openssl_writev */
#define MONGOC_STREAM_TLS_BUFFER_SIZE 4096
static ssize_t
_mongoc_stream_tls_secure_channel_writev (mongoc_stream_t *stream,
mongoc_iovec_t *iov,
size_t iovcnt,
int32_t timeout_msec)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
char buf[MONGOC_STREAM_TLS_BUFFER_SIZE];
ssize_t ret = 0;
ssize_t child_ret;
size_t i;
size_t iov_pos = 0;
/* There's a bit of a dance to coalesce vectorized writes into
* MONGOC_STREAM_TLS_BUFFER_SIZE'd writes to avoid lots of small tls
* packets.
*
* The basic idea is that we want to combine writes in the buffer if they're
* smaller than the buffer, flushing as it gets full. For larger writes, or
* the last write in the iovec array, we want to ignore the buffer and just
* write immediately. We take care of doing buffer writes by re-invoking
* ourself with a single iovec_t, pointing at our stack buffer.
*/
char *buf_head = buf;
char *buf_tail = buf;
char *buf_end = buf + MONGOC_STREAM_TLS_BUFFER_SIZE;
size_t bytes;
char *to_write = NULL;
size_t to_write_len;
BSON_ASSERT (iov);
BSON_ASSERT (iovcnt);
BSON_ASSERT (secure_channel);
ENTRY;
TRACE ("%s", "Trying to write to the server");
tls->timeout_msec = timeout_msec;
TRACE ("count: %zu, 0th: %zu", iovcnt, iov[0].iov_len);
for (i = 0; i < iovcnt; i++) {
iov_pos = 0;
TRACE ("iov %zu size: %zu", i, iov[i].iov_len);
while (iov_pos < iov[i].iov_len) {
BSON_ASSERT (buf_end >= buf_tail);
const size_t buf_remaining = (size_t) (buf_end - buf_tail);
if (buf_head != buf_tail || ((i + 1u < iovcnt) && (buf_remaining > (iov[i].iov_len - iov_pos)))) {
/* If we have either of:
* - buffered bytes already
* - another iovec to send after this one and we don't have more
* bytes to send than the size of the buffer.
*
* copy into the buffer */
bytes = BSON_MIN (iov[i].iov_len - iov_pos, buf_remaining);
memcpy (buf_tail, (char *) iov[i].iov_base + iov_pos, bytes);
buf_tail += bytes;
iov_pos += bytes;
if (buf_tail == buf_end) {
/* If we're full, request send */
to_write = buf_head;
to_write_len = buf_tail - buf_head;
buf_tail = buf_head = buf;
}
} else {
/* Didn't buffer, so just write it through */
to_write = (char *) iov[i].iov_base + iov_pos;
to_write_len = iov[i].iov_len - iov_pos;
iov_pos += to_write_len;
}
if (to_write) {
/* We get here if we buffered some bytes and filled the buffer, or
* if we didn't buffer and have to send out of the iovec */
child_ret = _mongoc_stream_tls_secure_channel_write (stream, to_write, to_write_len);
TRACE ("Child0wrote: %zd, was supposed to write: %zu", child_ret, to_write_len);
if (child_ret < 0) {
RETURN (ret);
}
ret += child_ret;
iov_pos -= to_write_len - child_ret;
to_write = NULL;
}
}
}
if (buf_head != buf_tail) {
/* If we have any bytes buffered, send */
child_ret = _mongoc_stream_tls_secure_channel_write (stream, buf_head, buf_tail - buf_head);
TRACE ("Child1wrote: %zd, was supposed to write: %td", child_ret, buf_tail - buf_head);
if (child_ret < 0) {
RETURN (child_ret);
}
ret += child_ret;
}
if (ret >= 0) {
mongoc_counter_streams_egress_add (ret);
}
TRACE ("Returning %d", (int) ret);
RETURN (ret);
}
/* move up to "len" decrypted bytes to buf, return number of bytes */
static ssize_t
_mongoc_stream_tls_secure_channel_debuf (mongoc_stream_tls_secure_channel_t *secure_channel, char *buf, size_t size)
{
size_t s = BSON_MIN (size, secure_channel->decdata_offset);
memcpy (buf, secure_channel->decdata_buffer, s);
memmove (secure_channel->decdata_buffer, secure_channel->decdata_buffer + s, secure_channel->decdata_offset - s);
secure_channel->decdata_offset -= s;
TRACE ("decrypted data returned %d", (int) s);
TRACE ("decrypted data buffer: offset %d length %d",
(int) secure_channel->decdata_offset,
(int) secure_channel->decdata_length);
return (ssize_t) s;
}
/* decrypt as many received bytes as possible to secure_channel.decdata_buf */
static void
_mongoc_stream_tls_secure_channel_decrypt (mongoc_stream_tls_secure_channel_t *secure_channel)
{
size_t size = 0;
size_t remaining;
SecBuffer inbuf[4];
SecBufferDesc inbuf_desc;
SECURITY_STATUS sspi_status = SEC_E_OK;
TRACE ("encrypted data buffer: offset %d length %d",
(int) secure_channel->encdata_offset,
(int) secure_channel->encdata_length);
/* decrypt loop */
while (secure_channel->encdata_offset > 0 && sspi_status == SEC_E_OK) {
/* prepare data buffer for DecryptMessage call */
_mongoc_secure_channel_init_sec_buffer (&inbuf[0],
SECBUFFER_DATA,
secure_channel->encdata_buffer,
(unsigned long) (secure_channel->encdata_offset & (size_t) 0xFFFFFFFFUL));
/* we need 3 more empty input buffers for possible output */
_mongoc_secure_channel_init_sec_buffer (&inbuf[1], SECBUFFER_EMPTY, NULL, 0);
_mongoc_secure_channel_init_sec_buffer (&inbuf[2], SECBUFFER_EMPTY, NULL, 0);
_mongoc_secure_channel_init_sec_buffer (&inbuf[3], SECBUFFER_EMPTY, NULL, 0);
_mongoc_secure_channel_init_sec_buffer_desc (&inbuf_desc, inbuf, 4);
/* https://msdn.microsoft.com/en-us/library/windows/desktop/aa375348.aspx
*/
sspi_status = DecryptMessage (&secure_channel->ctxt->ctxt_handle, &inbuf_desc, 0, NULL);
/* check if everything went fine (server may want to renegotiate
* or shutdown the connection context) */
if (sspi_status == SEC_E_OK || sspi_status == SEC_I_RENEGOTIATE || sspi_status == SEC_I_CONTEXT_EXPIRED) {
/* check for successfully decrypted data, even before actual
* renegotiation or shutdown of the connection context */
if (inbuf[1].BufferType == SECBUFFER_DATA) {
TRACE ("decrypted data length: %lu", inbuf[1].cbBuffer);
size = inbuf[1].cbBuffer;
remaining = secure_channel->decdata_length - secure_channel->decdata_offset;
if (remaining < size) {
mongoc_secure_channel_realloc_buf (
&secure_channel->decdata_length, &secure_channel->decdata_buffer, size);
}
/* copy decrypted data to internal buffer */
if (size) {
memcpy (secure_channel->decdata_buffer + secure_channel->decdata_offset, inbuf[1].pvBuffer, size);
secure_channel->decdata_offset += size;
}
TRACE ("decrypted data added: %d", (int) size);
TRACE ("decrypted data cached: offset %d length %d",
(int) secure_channel->decdata_offset,
(int) secure_channel->decdata_length);
}
/* check for remaining encrypted data */
if (inbuf[3].BufferType == SECBUFFER_EXTRA && inbuf[3].cbBuffer > 0) {
TRACE ("encrypted data length: %lu", inbuf[3].cbBuffer);
/* check if the remaining data is less than the total amount
* and therefore begins after the already processed data
*/
if (secure_channel->encdata_offset > inbuf[3].cbBuffer) {
/* move remaining encrypted data forward to the beginning of
* buffer */
memmove (secure_channel->encdata_buffer,
(secure_channel->encdata_buffer + secure_channel->encdata_offset) - inbuf[3].cbBuffer,
inbuf[3].cbBuffer);
secure_channel->encdata_offset = inbuf[3].cbBuffer;
}
TRACE ("encrypted data cached: offset %d length %d",
(int) secure_channel->encdata_offset,
(int) secure_channel->encdata_length);
} else {
/* reset encrypted buffer offset, because there is no data remaining
*/
secure_channel->encdata_offset = 0;
}
/* check if server wants to renegotiate the connection context */
if (sspi_status == SEC_I_RENEGOTIATE) {
TRACE ("%s", "remote party requests renegotiation");
}
/* check if the server closed the connection */
else if (sspi_status == SEC_I_CONTEXT_EXPIRED) {
/* In Windows 2000 SEC_I_CONTEXT_EXPIRED (close_notify) is not
* returned so we have to work around that in cleanup. */
secure_channel->recv_sspi_close_notify = true;
if (!secure_channel->recv_connection_closed) {
secure_channel->recv_connection_closed = true;
TRACE ("%s", "server closed the connection");
}
}
} else if (sspi_status == SEC_E_INCOMPLETE_MESSAGE) {
TRACE ("%s", "failed to decrypt data, need more data");
} else {
TRACE ("failed to read data from server: %ld", sspi_status);
secure_channel->recv_unrecoverable_err = true;
}
}
TRACE ("encrypted data buffer: offset %d length %d",
(int) secure_channel->encdata_offset,
(int) secure_channel->encdata_length);
TRACE ("decrypted data buffer: offset %d length %d",
(int) secure_channel->decdata_offset,
(int) secure_channel->decdata_length);
}
static ssize_t
_mongoc_stream_tls_secure_channel_read (mongoc_stream_t *stream, char *buf, size_t len)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
ssize_t size = 0;
ssize_t nread;
TRACE ("client wants to read %d bytes", (int) len);
BSON_ASSERT (len > 0);
/*
* Our priority is to always return as much decrypted data to the caller as
* possible, even if an error occurs. The state of the decrypted buffer must
* always be valid.
*/
if (secure_channel->decdata_offset) {
TRACE ("%s", "decrypted data is already available");
return _mongoc_stream_tls_secure_channel_debuf (secure_channel, buf, len);
}
/* is a complete encrypted block left from last network read? */
if (secure_channel->encdata_offset) {
_mongoc_stream_tls_secure_channel_decrypt (secure_channel);
if (secure_channel->decdata_offset) {
return _mongoc_stream_tls_secure_channel_debuf (secure_channel, buf, len);
}
}
/* keep these checks separated, for more detailed tracing */
if (secure_channel->recv_unrecoverable_err) {
TRACE ("%s", "an unrecoverable error occurred in a prior call");
return -1;
}
if (secure_channel->recv_sspi_close_notify) {
TRACE ("%s", "server indicated shutdown in a prior call");
return -1;
}
if (secure_channel->recv_connection_closed) {
TRACE ("%s", "connection closed");
return -1;
}
size = secure_channel->encdata_length - secure_channel->encdata_offset;
/* read encrypted data from socket. returns 0 on shutdown or error */
nread = mongoc_secure_channel_read (
tls, (char *) (secure_channel->encdata_buffer + secure_channel->encdata_offset), (size_t) size);
if (!nread) {
if (MONGOC_ERRNO_IS_AGAIN (errno)) {
TRACE ("%s", "Try again");
return 0;
} else {
secure_channel->recv_connection_closed = true;
TRACE ("reading failed: %d", errno);
return -1;
}
}
secure_channel->encdata_offset += (size_t) nread;
TRACE ("encrypted data got %zd", nread);
_mongoc_stream_tls_secure_channel_decrypt (secure_channel);
return _mongoc_stream_tls_secure_channel_debuf (secure_channel, buf, len);
}
/* This function is copypasta of _mongoc_stream_tls_openssl_readv */
static ssize_t
_mongoc_stream_tls_secure_channel_readv (
mongoc_stream_t *stream, mongoc_iovec_t *iov, size_t iovcnt, size_t min_bytes, int32_t timeout_msec)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
ssize_t ret = 0;
size_t i;
size_t iov_pos = 0;
int64_t now;
int64_t expire = 0;
BSON_ASSERT (iov);
BSON_ASSERT (iovcnt);
BSON_ASSERT (secure_channel);
ENTRY;
tls->timeout_msec = timeout_msec;
if (timeout_msec >= 0) {
expire = bson_get_monotonic_time () + (timeout_msec * 1000UL);
}
for (i = 0; i < iovcnt; i++) {
iov_pos = 0;
while (iov_pos < iov[i].iov_len) {
ssize_t read_ret = _mongoc_stream_tls_secure_channel_read (
stream, (char *) iov[i].iov_base + iov_pos, (int) (iov[i].iov_len - iov_pos));
if (read_ret < 0) {
RETURN (-1);
}
if (expire) {
now = bson_get_monotonic_time ();
if ((expire - now) < 0) {
if (read_ret == 0) {
mongoc_counter_streams_timeout_inc ();
errno = ETIMEDOUT;
RETURN (-1);
}
tls->timeout_msec = 0;
} else {
tls->timeout_msec = (expire - now) / 1000L;
}
}
ret += read_ret;
if ((size_t) ret >= min_bytes) {
mongoc_counter_streams_ingress_add (ret);
RETURN (ret);
}
iov_pos += read_ret;
}
}
if (ret >= 0) {
mongoc_counter_streams_ingress_add (ret);
}
RETURN (ret);
}
static int
_mongoc_stream_tls_secure_channel_setsockopt (
mongoc_stream_t *stream, int level, int optname, void *optval, mongoc_socklen_t optlen)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
ENTRY;
BSON_ASSERT (secure_channel);
RETURN (mongoc_stream_setsockopt (tls->base_stream, level, optname, optval, optlen));
}
static mongoc_stream_t *
_mongoc_stream_tls_secure_channel_get_base_stream (mongoc_stream_t *stream)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
ENTRY;
BSON_ASSERT (secure_channel);
RETURN (tls->base_stream);
}
static bool
_mongoc_stream_tls_secure_channel_check_closed (mongoc_stream_t *stream) /* IN */
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
ENTRY;
BSON_ASSERT (secure_channel);
RETURN (mongoc_stream_check_closed (tls->base_stream));
}
bool
mongoc_stream_tls_secure_channel_handshake (mongoc_stream_t *stream, const char *host, int *events, bson_error_t *error)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
mongoc_stream_tls_secure_channel_t *secure_channel = (mongoc_stream_tls_secure_channel_t *) tls->ctx;
ENTRY;
BSON_ASSERT (secure_channel);
if (error) {
error->code = 0;
}
TRACE ("Getting ready for state: %d, timeout is %" PRId64,
(int) secure_channel->connecting_state + 1,
tls->timeout_msec);
switch (secure_channel->connecting_state) {
case ssl_connect_1:
if (mongoc_secure_channel_handshake_step_1 (tls, (char *) host, error)) {
TRACE ("%s", "Step#1 Worked!\n\n");
*events = POLLIN;
RETURN (false);
} else {
TRACE ("%s", "Step#1 FAILED!");
}
break;
case ssl_connect_2:
case ssl_connect_2_reading:
case ssl_connect_2_writing:
if (mongoc_secure_channel_handshake_step_2 (tls, (char *) host, error)) {
if (secure_channel->connecting_state == ssl_connect_2_reading) {
*events = POLLIN;
} else {
*events = POLLOUT;
}
RETURN (false);
} else {
TRACE ("%s", "Step#2 FAILED!");
}
break;
case ssl_connect_3:
if (mongoc_secure_channel_handshake_step_3 (tls, (char *) host, error)) {
TRACE ("%s", "Step#3 Worked!\n\n");
*events = POLLIN | POLLOUT;
RETURN (false);
} else {
TRACE ("%s", "Step#3 FAILED!");
}
break;
case ssl_connect_done:
TRACE ("%s", "Connect DONE!");
/* reset our connection state machine */
secure_channel->connecting_state = ssl_connect_1;
RETURN (true);
break;
default: /* do nothing */
break;
}
*events = 0;
if (error && !error->code) {
bson_set_error (error, MONGOC_ERROR_STREAM, MONGOC_ERROR_STREAM_SOCKET, "TLS handshake failed");
}
RETURN (false);
}
static bool
_mongoc_stream_tls_secure_channel_timed_out (mongoc_stream_t *stream)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
ENTRY;
RETURN (mongoc_stream_timed_out (tls->base_stream));
}
static bool
_mongoc_stream_tls_secure_channel_should_retry (mongoc_stream_t *stream)
{
mongoc_stream_tls_t *tls = (mongoc_stream_tls_t *) stream;
ENTRY;
RETURN (mongoc_stream_should_retry (tls->base_stream));
}
mongoc_stream_t *
mongoc_stream_tls_secure_channel_new (mongoc_stream_t *base_stream, const char *host, mongoc_ssl_opt_t *opt, int client)
{
SECURITY_STATUS sspi_status = SEC_E_OK;
SCHANNEL_CRED schannel_cred;
mongoc_stream_tls_t *tls;
mongoc_stream_tls_secure_channel_t *secure_channel;
PCCERT_CONTEXT cert = NULL;
ENTRY;
BSON_ASSERT (base_stream);
BSON_ASSERT (opt);
secure_channel = (mongoc_stream_tls_secure_channel_t *) bson_malloc0 (sizeof *secure_channel);
secure_channel->decdata_buffer = bson_malloc (MONGOC_SCHANNEL_BUFFER_INIT_SIZE);
secure_channel->decdata_length = MONGOC_SCHANNEL_BUFFER_INIT_SIZE;
secure_channel->encdata_buffer = bson_malloc (MONGOC_SCHANNEL_BUFFER_INIT_SIZE);
secure_channel->encdata_length = MONGOC_SCHANNEL_BUFFER_INIT_SIZE;
tls = (mongoc_stream_tls_t *) bson_malloc0 (sizeof *tls);
tls->parent.type = MONGOC_STREAM_TLS;
tls->parent.destroy = _mongoc_stream_tls_secure_channel_destroy;
tls->parent.failed = _mongoc_stream_tls_secure_channel_failed;
tls->parent.close = _mongoc_stream_tls_secure_channel_close;
tls->parent.flush = _mongoc_stream_tls_secure_channel_flush;
tls->parent.writev = _mongoc_stream_tls_secure_channel_writev;
tls->parent.readv = _mongoc_stream_tls_secure_channel_readv;
tls->parent.setsockopt = _mongoc_stream_tls_secure_channel_setsockopt;
tls->parent.get_base_stream = _mongoc_stream_tls_secure_channel_get_base_stream;
tls->parent.check_closed = _mongoc_stream_tls_secure_channel_check_closed;
tls->parent.timed_out = _mongoc_stream_tls_secure_channel_timed_out;
tls->parent.should_retry = _mongoc_stream_tls_secure_channel_should_retry;
memcpy (&tls->ssl_opts, opt, sizeof tls->ssl_opts);
tls->handshake = mongoc_stream_tls_secure_channel_handshake;
tls->ctx = (void *) secure_channel;
tls->timeout_msec = -1;
tls->base_stream = base_stream;
TRACE ("%s", "SSL/TLS connection with endpoint AcquireCredentialsHandle");
/* setup Schannel API options */
memset (&schannel_cred, 0, sizeof (schannel_cred));
schannel_cred.dwVersion = SCHANNEL_CRED_VERSION;
/* SCHANNEL_CRED:
* SCH_USE_STRONG_CRYPTO is not available in VS2010
* https://msdn.microsoft.com/en-us/library/windows/desktop/aa379810.aspx */
#ifdef SCH_USE_STRONG_CRYPTO
schannel_cred.dwFlags = SCH_USE_STRONG_CRYPTO;
#endif
/* By default, enable soft failing.
* A certificate with no revocation check is a soft failure. */
schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK;
/* An offline OCSP responder / CRL distribution list is a soft failure. */
schannel_cred.dwFlags |= SCH_CRED_IGNORE_REVOCATION_OFFLINE;
if (opt->weak_cert_validation) {
schannel_cred.dwFlags |= SCH_CRED_MANUAL_CRED_VALIDATION;
TRACE ("%s", "disabled server certificate checks");
} else {
schannel_cred.dwFlags |= SCH_CRED_AUTO_CRED_VALIDATION;
if (!_mongoc_ssl_opts_disable_certificate_revocation_check (opt)) {
schannel_cred.dwFlags |= SCH_CRED_REVOCATION_CHECK_CHAIN;
TRACE ("%s", "enabled server certificate revocation checks");
}
TRACE ("%s", "enabled server certificate checks");
}
if (opt->allow_invalid_hostname) {
schannel_cred.dwFlags |= SCH_CRED_NO_SERVERNAME_CHECK;
}
if (opt->ca_file) {
- mongoc_secure_channel_setup_ca (secure_channel, opt);
+ mongoc_secure_channel_setup_ca (opt);
}
if (opt->crl_file) {
- mongoc_secure_channel_setup_crl (secure_channel, opt);
+ mongoc_secure_channel_setup_crl (opt);
}
if (opt->pem_file) {
- cert = mongoc_secure_channel_setup_certificate (secure_channel, opt);
+ cert = mongoc_secure_channel_setup_certificate (opt);
if (cert) {
schannel_cred.cCreds = 1;
schannel_cred.paCred = &cert;
}
}
schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_1_CLIENT | SP_PROT_TLS1_2_CLIENT;
secure_channel->cred = (mongoc_secure_channel_cred *) bson_malloc0 (sizeof (mongoc_secure_channel_cred));
+ if (cert) {
+ // Store client cert to free later.
+ secure_channel->cred->cert = cert;
+ }
/* Example:
* https://msdn.microsoft.com/en-us/library/windows/desktop/aa375454%28v=vs.85%29.aspx
* AcquireCredentialsHandle:
* https://msdn.microsoft.com/en-us/library/windows/desktop/aa374716.aspx
*/
sspi_status = AcquireCredentialsHandle (NULL, /* principal */
UNISP_NAME, /* security package */
SECPKG_CRED_OUTBOUND, /* we are preparing outbound connection */
NULL, /* Optional logon */
&schannel_cred, /* TLS "configuration", "auth data" */
NULL, /* unused */
NULL, /* unused */
&secure_channel->cred->cred_handle, /* credential OUT param */
&secure_channel->cred->time_stamp); /* certificate expiration time */
if (sspi_status != SEC_E_OK) {
- LPTSTR msg = NULL;
- FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,
- NULL,
- GetLastError (),
- LANG_NEUTRAL,
- (LPTSTR) &msg,
- 0,
- NULL);
- MONGOC_ERROR ("Failed to initialize security context, error code: 0x%04X%04X: '%s'",
- (unsigned int) (sspi_status >> 16) & 0xffff,
- (unsigned int) sspi_status & 0xffff,
- msg);
- LocalFree (msg);
+ // Cast signed SECURITY_STATUS to unsigned DWORD. FormatMessage expects DWORD.
+ char *msg = mongoc_winerr_to_string ((DWORD) sspi_status);
+ MONGOC_ERROR ("Failed to initialize security context: %s", msg);
+ bson_free (msg);
RETURN (NULL);
}
if (opt->ca_dir) {
MONGOC_ERROR ("Setting mongoc_ssl_opt_t.ca_dir has no effect when built "
"against Secure Channel");
}
if (_mongoc_ssl_opts_disable_ocsp_endpoint_check (opt)) {
MONGOC_ERROR ("Setting tlsDisableOCSPEndpointCheck has no effect when "
"built against Secure Channel");
}
mongoc_counter_streams_active_inc ();
RETURN ((mongoc_stream_t *) tls);
}
#endif /* MONGOC_ENABLE_SSL_SECURE_CHANNEL */
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-thread-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-thread-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-thread-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-thread-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-timeout-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-timeout-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-timeout-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-timeout-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-timeout.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-timeout.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-timeout.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-timeout.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-background-monitoring-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-background-monitoring-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-background-monitoring-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-background-monitoring-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-background-monitoring.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-background-monitoring.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-background-monitoring.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-background-monitoring.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-apm-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-apm-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-apm-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-apm-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-apm.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-apm.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-apm.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-apm.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-scanner-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-scanner-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-scanner-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-scanner-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-scanner.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-scanner.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-scanner.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-scanner.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-trace-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-trace-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-trace-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-trace-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ts-pool-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ts-pool-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ts-pool-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ts-pool-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ts-pool.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ts-pool.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ts-pool.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-ts-pool.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-util-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-util-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-util-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-util-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-util.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-util.c
similarity index 97%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-util.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-util.c
index a83d8c51..37306c4c 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-util.c
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-util.c
@@ -1,1022 +1,1027 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifdef _WIN32
#define _CRT_RAND_S
#endif
#include <string.h>
#include <bson/bson.h>
#include <common-md5-private.h>
#include <common-thread-private.h>
#include <mongoc/mongoc-rand-private.h>
#include <mongoc/mongoc-util-private.h>
#include <mongoc/mongoc-client.h>
#include <mongoc/mongoc-client-private.h> // WIRE_VERSION_* macros.
#include <mongoc/mongoc-client-session-private.h>
#include <mongoc/mongoc-trace-private.h>
#include <mongoc/mongoc-sleep.h>
#include <common-cmp-private.h>
-const bson_validate_flags_t _mongoc_default_insert_vflags =
- BSON_VALIDATE_UTF8 | BSON_VALIDATE_UTF8_ALLOW_NULL | BSON_VALIDATE_EMPTY_KEYS;
-
-const bson_validate_flags_t _mongoc_default_replace_vflags =
- BSON_VALIDATE_UTF8 | BSON_VALIDATE_UTF8_ALLOW_NULL | BSON_VALIDATE_EMPTY_KEYS;
-
-const bson_validate_flags_t _mongoc_default_update_vflags =
- BSON_VALIDATE_UTF8 | BSON_VALIDATE_UTF8_ALLOW_NULL | BSON_VALIDATE_EMPTY_KEYS;
+/**
+ * ! NOTE
+ *
+ * In earlier releases, these flags had `BSON_VALIDATE_UTF8` and `BSON_VALIDATE_UTF8_ALLOW_NULL`.
+ * Due to a bug, the CRUD APIs did not actually do UTF-8 validation. This issue has been fixed, but
+ * we want to maintain backward compatibility, so the UTF-8 validation was removed from these flag
+ * values.
+ *
+ * A future API may add the UTF-8 validation back, but it would be a breaking change.
+ */
+const bson_validate_flags_t _mongoc_default_insert_vflags = BSON_VALIDATE_EMPTY_KEYS;
+const bson_validate_flags_t _mongoc_default_replace_vflags = BSON_VALIDATE_EMPTY_KEYS;
+const bson_validate_flags_t _mongoc_default_update_vflags = BSON_VALIDATE_EMPTY_KEYS;
int
_mongoc_rand_simple (unsigned int *seed)
{
#ifdef _WIN32
/* ignore the seed */
unsigned int ret = 0;
errno_t err;
err = rand_s (&ret);
if (0 != err) {
MONGOC_ERROR ("rand_s failed: %s", strerror (err));
}
return (int) ret;
#else
return rand_r (seed);
#endif
}
char *
_mongoc_hex_md5 (const char *input)
{
uint8_t digest[16];
bson_md5_t md5;
char digest_str[33];
int i;
mcommon_md5_init (&md5);
mcommon_md5_append (&md5, (const uint8_t *) input, (uint32_t) strlen (input));
mcommon_md5_finish (&md5, digest);
for (i = 0; i < sizeof digest; i++) {
// Expect no truncation.
int req = bson_snprintf (&digest_str[i * 2], 3, "%02x", digest[i]);
BSON_ASSERT (req < 3);
}
digest_str[sizeof digest_str - 1] = '\0';
return bson_strdup (digest_str);
}
void
mongoc_client_set_usleep_impl (mongoc_client_t *client, mongoc_usleep_func_t usleep_func, void *user_data)
{
client->topology->usleep_fn = usleep_func;
client->topology->usleep_data = user_data;
}
void
mongoc_usleep_default_impl (int64_t usec, void *user_data)
{
BSON_UNUSED (user_data);
#ifdef _WIN32
LARGE_INTEGER ft;
HANDLE timer;
BSON_ASSERT (usec >= 0);
ft.QuadPart = -(10 * usec);
timer = CreateWaitableTimer (NULL, true, NULL);
SetWaitableTimer (timer, &ft, 0, NULL, NULL, 0);
WaitForSingleObject (timer, INFINITE);
CloseHandle (timer);
#else
BSON_ASSERT (usec >= 0);
usleep ((useconds_t) usec);
#endif
}
void
_mongoc_usleep (int64_t usec)
{
mongoc_usleep_default_impl (usec, NULL);
}
int64_t
_mongoc_get_real_time_ms (void)
{
struct timeval tv;
const bool rc = bson_gettimeofday (&tv);
if (rc != 0) {
return -1;
}
return tv.tv_sec * (int64_t) 1000 + tv.tv_usec / (int64_t) 1000;
}
const char *
_mongoc_get_command_name (const bson_t *command)
{
bson_iter_t iter;
const char *name;
bson_iter_t child;
const char *wrapper_name = NULL;
BSON_ASSERT (command);
if (!bson_iter_init (&iter, command) || !bson_iter_next (&iter)) {
return NULL;
}
name = bson_iter_key (&iter);
/* wrapped in "$query" or "query"?
*
* {$query: {count: "collection"}, $readPreference: {...}}
*/
if (name[0] == '$') {
wrapper_name = "$query";
} else if (!strcmp (name, "query")) {
wrapper_name = "query";
}
if (wrapper_name && bson_iter_init_find (&iter, command, wrapper_name) && BSON_ITER_HOLDS_DOCUMENT (&iter) &&
bson_iter_recurse (&iter, &child) && bson_iter_next (&child)) {
name = bson_iter_key (&child);
}
return name;
}
bool
_mongoc_lookup_bool (const bson_t *bson, const char *key, bool default_value)
{
bson_iter_t iter;
bson_iter_t child;
if (!bson) {
return default_value;
}
BSON_ASSERT (bson_iter_init (&iter, bson));
if (!bson_iter_find_descendant (&iter, key, &child)) {
return default_value;
}
return bson_iter_as_bool (&child);
}
char *
_mongoc_get_db_name (const char *ns)
{
size_t dblen;
const char *dot;
BSON_ASSERT (ns);
dot = strstr (ns, ".");
if (dot) {
dblen = dot - ns;
return bson_strndup (ns, dblen);
} else {
return bson_strdup (ns);
}
}
void
_mongoc_bson_init_if_set (bson_t *bson)
{
if (bson) {
bson_init (bson);
}
}
const char *
_mongoc_bson_type_to_str (bson_type_t t)
{
switch (t) {
case BSON_TYPE_EOD:
return "EOD";
case BSON_TYPE_DOUBLE:
return "DOUBLE";
case BSON_TYPE_UTF8:
return "UTF8";
case BSON_TYPE_DOCUMENT:
return "DOCUMENT";
case BSON_TYPE_ARRAY:
return "ARRAY";
case BSON_TYPE_BINARY:
return "BINARY";
case BSON_TYPE_UNDEFINED:
return "UNDEFINED";
case BSON_TYPE_OID:
return "OID";
case BSON_TYPE_BOOL:
return "BOOL";
case BSON_TYPE_DATE_TIME:
return "DATE_TIME";
case BSON_TYPE_NULL:
return "NULL";
case BSON_TYPE_REGEX:
return "REGEX";
case BSON_TYPE_DBPOINTER:
return "DBPOINTER";
case BSON_TYPE_CODE:
return "CODE";
case BSON_TYPE_SYMBOL:
return "SYMBOL";
case BSON_TYPE_CODEWSCOPE:
return "CODEWSCOPE";
case BSON_TYPE_INT32:
return "INT32";
case BSON_TYPE_TIMESTAMP:
return "TIMESTAMP";
case BSON_TYPE_INT64:
return "INT64";
case BSON_TYPE_MAXKEY:
return "MAXKEY";
case BSON_TYPE_MINKEY:
return "MINKEY";
case BSON_TYPE_DECIMAL128:
return "DECIMAL128";
default:
return "Unknown";
}
}
/* Refer to:
* https://github.com/mongodb/specifications/blob/master/source/wireversion-featurelist/wireversion-featurelist.md
* and:
* https://github.com/mongodb/mongo/blob/master/src/mongo/db/wire_version.h#L57
*/
const char *
_mongoc_wire_version_to_server_version (int32_t version)
{
switch (version) {
case 1:
case 2:
return "2.6";
case 3:
return "3.0";
case 4:
return "3.2";
case 5:
return "3.4";
case 6:
return "3.6";
case WIRE_VERSION_4_0:
return "4.0";
case WIRE_VERSION_4_2:
return "4.2";
case WIRE_VERSION_4_4:
return "4.4";
case 10:
return "4.7";
case 11:
return "4.8";
case WIRE_VERSION_4_9:
return "4.9";
case WIRE_VERSION_5_0:
return "5.0";
case WIRE_VERSION_5_1:
return "5.1";
case 15:
return "5.2";
case 16:
return "5.3";
case WIRE_VERSION_6_0:
return "6.0";
case WIRE_VERSION_7_0:
return "7.0";
case WIRE_VERSION_8_0:
return "8.0";
default:
return "Unknown";
}
}
/* Get "serverId" from opts. Sets *server_id to the serverId from "opts" or 0
* if absent. On error, fills out *error with domain and code and return false.
*/
bool
_mongoc_get_server_id_from_opts (
const bson_t *opts, mongoc_error_domain_t domain, mongoc_error_code_t code, uint32_t *server_id, bson_error_t *error)
{
bson_iter_t iter;
ENTRY;
BSON_ASSERT (server_id);
*server_id = 0;
if (!opts || !bson_iter_init_find (&iter, opts, "serverId")) {
RETURN (true);
}
if (!BSON_ITER_HOLDS_INT (&iter)) {
bson_set_error (error, domain, code, "The serverId option must be an integer");
RETURN (false);
}
if (bson_iter_as_int64 (&iter) <= 0) {
bson_set_error (error, domain, code, "The serverId option must be >= 1");
RETURN (false);
}
*server_id = (uint32_t) bson_iter_as_int64 (&iter);
RETURN (true);
}
bool
_mongoc_validate_new_document (const bson_t *doc, bson_validate_flags_t vflags, bson_error_t *error)
{
bson_error_t validate_err;
if (vflags == BSON_VALIDATE_NONE) {
return true;
}
if (!bson_validate_with_error (doc, vflags, &validate_err)) {
bson_set_error (error,
MONGOC_ERROR_COMMAND,
MONGOC_ERROR_COMMAND_INVALID_ARG,
"invalid document for insert: %s",
validate_err.message);
return false;
}
return true;
}
bool
_mongoc_validate_replace (const bson_t *doc, bson_validate_flags_t vflags, bson_error_t *error)
{
bson_error_t validate_err;
bson_iter_t iter;
const char *key;
if (vflags == BSON_VALIDATE_NONE) {
return true;
}
if (!bson_validate_with_error (doc, vflags, &validate_err)) {
bson_set_error (error,
MONGOC_ERROR_COMMAND,
MONGOC_ERROR_COMMAND_INVALID_ARG,
"invalid argument for replace: %s",
validate_err.message);
return false;
}
if (!bson_iter_init (&iter, doc)) {
bson_set_error (error, MONGOC_ERROR_BSON, MONGOC_ERROR_BSON_INVALID, "replace document is corrupt");
return false;
}
while (bson_iter_next (&iter)) {
key = bson_iter_key (&iter);
if (key[0] == '$') {
bson_set_error (error,
MONGOC_ERROR_COMMAND,
MONGOC_ERROR_COMMAND_INVALID_ARG,
"Invalid key '%s': replace prohibits $ operators",
key);
return false;
}
}
return true;
}
bool
_mongoc_validate_update (const bson_t *update, bson_validate_flags_t vflags, bson_error_t *error)
{
bson_error_t validate_err;
bson_iter_t iter;
const char *key;
if (vflags == BSON_VALIDATE_NONE) {
return true;
}
if (!bson_validate_with_error (update, vflags, &validate_err)) {
bson_set_error (error,
MONGOC_ERROR_COMMAND,
MONGOC_ERROR_COMMAND_INVALID_ARG,
"invalid argument for update: %s",
validate_err.message);
return false;
}
if (_mongoc_document_is_pipeline (update)) {
return true;
}
if (!bson_iter_init (&iter, update)) {
bson_set_error (error, MONGOC_ERROR_BSON, MONGOC_ERROR_BSON_INVALID, "update document is corrupt");
return false;
}
while (bson_iter_next (&iter)) {
key = bson_iter_key (&iter);
if (key[0] != '$') {
bson_set_error (error,
MONGOC_ERROR_COMMAND,
MONGOC_ERROR_COMMAND_INVALID_ARG,
"Invalid key '%s': update only works with $ operators"
" and pipelines",
key);
return false;
}
}
return true;
}
static bool
should_include (const char *first_include, va_list args, const char *name)
{
bool ret = false;
const char *include = first_include;
va_list args_copy;
va_copy (args_copy, args);
do {
if (!strcmp (name, include)) {
ret = true;
break;
}
} while ((include = va_arg (args_copy, const char *)));
va_end (args_copy);
return ret;
}
void
bson_copy_to_including_noinit_va (const bson_t *src, bson_t *dst, const char *first_include, va_list args)
{
BSON_ASSERT_PARAM (src);
BSON_ASSERT_PARAM (dst);
BSON_ASSERT_PARAM (first_include);
bson_iter_t iter;
if (bson_iter_init (&iter, src)) {
while (bson_iter_next (&iter)) {
if (should_include (first_include, args, bson_iter_key (&iter))) {
if (!bson_append_iter (dst, NULL, 0, &iter)) {
/*
* This should not be able to happen since we are copying
* from within a valid bson_t.
*/
BSON_ASSERT (false);
return;
}
}
}
}
}
void
bson_copy_to_including_noinit (const bson_t *src, bson_t *dst, const char *first_include, ...)
{
BSON_ASSERT_PARAM (src);
BSON_ASSERT_PARAM (dst);
BSON_ASSERT_PARAM (first_include);
va_list args;
va_start (args, first_include);
bson_copy_to_including_noinit_va (src, dst, first_include, args);
va_end (args);
}
/*
*--------------------------------------------------------------------------
*
* mongoc_ends_with --
*
* Return true if str ends with suffix.
*
*--------------------------------------------------------------------------
*/
bool
mongoc_ends_with (const char *str, const char *suffix)
{
BSON_ASSERT_PARAM (str);
BSON_ASSERT_PARAM (suffix);
const size_t str_len = strlen (str);
const size_t suffix_len = strlen (suffix);
if (str_len < suffix_len) {
return false;
}
return strcmp (str + (str_len - suffix_len), suffix) == 0;
}
void
mongoc_lowercase (const char *src, char *buf /* OUT */)
{
for (; *src; ++src, ++buf) {
/* UTF8 non-ascii characters have a 1 at the leftmost bit. If this is the
* case, just copy */
if ((*src & (0x1 << 7)) == 0) {
*buf = (char) tolower (*src);
} else {
*buf = *src;
}
}
}
bool
mongoc_parse_port (uint16_t *port, const char *str)
{
unsigned long ul_port;
ul_port = strtoul (str, NULL, 10);
if (ul_port == 0 || ul_port > UINT16_MAX) {
/* Parse error or port number out of range. mongod prohibits port 0. */
return false;
}
*port = (uint16_t) ul_port;
return true;
}
/*--------------------------------------------------------------------------
*
* _mongoc_bson_array_add_label --
*
* Append an error label like "TransientTransactionError" to a BSON
* array iff the array does not already contain it.
*
* Side effects:
* Aborts if the array is invalid or contains non-string elements.
*
*--------------------------------------------------------------------------
*/
void
_mongoc_bson_array_add_label (bson_t *bson, const char *label)
{
bson_iter_t iter;
char buf[16];
uint32_t i = 0;
const char *key;
BSON_ASSERT (bson_iter_init (&iter, bson));
while (bson_iter_next (&iter)) {
if (!strcmp (bson_iter_utf8 (&iter, NULL), label)) {
/* already included once */
return;
}
i++;
}
bson_uint32_to_string (i, &key, buf, sizeof buf);
BSON_APPEND_UTF8 (bson, key, label);
}
/*--------------------------------------------------------------------------
*
* _mongoc_bson_array_copy_labels_to --
*
* Copy error labels like "TransientTransactionError" from a server
* reply to a BSON array iff the array does not already contain it.
*
* Side effects:
* Aborts if @dst is invalid or contains non-string elements.
*
*--------------------------------------------------------------------------
*/
void
_mongoc_bson_array_copy_labels_to (const bson_t *reply, bson_t *dst)
{
bson_iter_t iter;
bson_iter_t label;
if (bson_iter_init_find (&iter, reply, "errorLabels")) {
BSON_ASSERT (bson_iter_recurse (&iter, &label));
while (bson_iter_next (&label)) {
if (BSON_ITER_HOLDS_UTF8 (&label)) {
_mongoc_bson_array_add_label (dst, bson_iter_utf8 (&label, NULL));
}
}
}
}
/*--------------------------------------------------------------------------
*
* _mongoc_add_transient_txn_error --
*
* If @cs is not NULL and in a transaction, add errorLabels:
* ["TransientTransactionError"] to @reply.
*
* Transactions Spec: TransientTransactionError includes "server
* selection error encountered running any command besides
* commitTransaction in a transaction. ...in the case of network errors
* or server selection errors where the client receives no server reply,
* the client adds the label."
*
* Side effects:
* None.
*
*--------------------------------------------------------------------------
*/
void
_mongoc_add_transient_txn_error (const mongoc_client_session_t *cs, bson_t *reply)
{
if (!reply) {
return;
}
if (_mongoc_client_session_in_txn (cs)) {
bson_t labels = BSON_INITIALIZER;
_mongoc_bson_array_copy_labels_to (reply, &labels);
_mongoc_bson_array_add_label (&labels, TRANSIENT_TXN_ERR);
bson_t new_reply = BSON_INITIALIZER;
bson_copy_to_excluding_noinit (reply, &new_reply, "errorLabels", NULL);
BSON_APPEND_ARRAY (&new_reply, "errorLabels", &labels);
bson_reinit (reply);
bson_concat (reply, &new_reply);
bson_destroy (&labels);
bson_destroy (&new_reply);
}
}
bool
_mongoc_document_is_pipeline (const bson_t *document)
{
bson_iter_t iter;
bson_iter_t child;
const char *key;
int i = 0;
char *i_str;
if (!bson_iter_init (&iter, document)) {
return false;
}
while (bson_iter_next (&iter)) {
key = bson_iter_key (&iter);
i_str = bson_strdup_printf ("%d", i++);
if (strcmp (key, i_str)) {
bson_free (i_str);
return false;
}
bson_free (i_str);
if (BSON_ITER_HOLDS_DOCUMENT (&iter)) {
if (!bson_iter_recurse (&iter, &child)) {
return false;
}
if (!bson_iter_next (&child)) {
return false;
}
key = bson_iter_key (&child);
if (key[0] != '$') {
return false;
}
} else {
return false;
}
}
/* should return false when the document is empty */
return i != 0;
}
char *
_mongoc_getenv (const char *name)
{
#ifdef _MSC_VER
char buf[2048];
size_t buflen;
if ((0 == getenv_s (&buflen, buf, sizeof buf, name)) && buflen) {
return bson_strdup (buf);
} else {
return NULL;
}
#else
char *const var = getenv (name);
if (var && strlen (var)) {
return bson_strdup (var);
} else {
return NULL;
}
#endif
}
bool
_mongoc_setenv (const char *name, const char *value)
{
#ifdef _WIN32
return SetEnvironmentVariableA (name, value) != 0;
#else
if (0 != setenv (name, value, 1)) {
return false;
}
return true;
#endif
}
/* Nearly Divisionless (Algorithm 5): https://arxiv.org/abs/1805.10941 */
static uint32_t
_mongoc_rand_nduid32 (uint32_t s, uint32_t (*rand32) (void))
{
const uint64_t limit = UINT32_MAX; /* 2^L */
uint64_t x, m, l;
x = rand32 ();
m = x * s;
l = m % limit;
if (l < s) {
const uint64_t t = (limit - s) % s;
while (l < t) {
x = rand32 ();
m = x * s;
l = m % limit;
}
}
return (uint32_t) (m / limit);
}
/* Java Algorithm (Algorithm 4): https://arxiv.org/abs/1805.10941
* The 64-bit version of the nearly divisionless algorithm requires 128-bit
* integer arithmetic. Instead of trying to deal with cross-platform support for
* `__int128`, fallback to using the Java algorithm for 64-bit instead. */
static uint64_t
_mongoc_rand_java64 (uint64_t s, uint64_t (*rand64) (void))
{
const uint64_t limit = UINT64_MAX; /* 2^L */
uint64_t x, r;
x = rand64 ();
r = x % s;
while ((x - r) > (limit - s)) {
x = rand64 ();
r = x % s;
}
return r;
}
#if defined(MONGOC_ENABLE_CRYPTO)
uint32_t
_mongoc_crypto_rand_uint32_t (void)
{
uint32_t res;
(void) _mongoc_rand_bytes ((uint8_t *) &res, sizeof (res));
return res;
}
uint64_t
_mongoc_crypto_rand_uint64_t (void)
{
uint64_t res;
(void) _mongoc_rand_bytes ((uint8_t *) &res, sizeof (res));
return res;
}
size_t
_mongoc_crypto_rand_size_t (void)
{
size_t res;
(void) _mongoc_rand_bytes ((uint8_t *) &res, sizeof (res));
return res;
}
#endif /* defined(MONGOC_ENABLE_CRYPTO) */
static BSON_ONCE_FUN (_mongoc_simple_rand_init)
{
struct timeval tv;
unsigned int seed = 0;
bson_gettimeofday (&tv);
seed ^= (unsigned int) tv.tv_sec;
seed ^= (unsigned int) tv.tv_usec;
srand (seed);
BSON_ONCE_RETURN;
}
static bson_once_t _mongoc_simple_rand_init_once = BSON_ONCE_INIT;
uint32_t
_mongoc_simple_rand_uint32_t (void)
{
bson_once (&_mongoc_simple_rand_init_once, _mongoc_simple_rand_init);
/* Ensure *all* bits are random, as RAND_MAX is only required to be at least
* 32767 (2^15). */
return (((uint32_t) rand () & 0x7FFFu) << 0u) | (((uint32_t) rand () & 0x7FFFu) << 15u) |
(((uint32_t) rand () & 0x0003u) << 30u);
}
uint64_t
_mongoc_simple_rand_uint64_t (void)
{
bson_once (&_mongoc_simple_rand_init_once, _mongoc_simple_rand_init);
/* Ensure *all* bits are random, as RAND_MAX is only required to be at least
* 32767 (2^15). */
return (((uint64_t) rand () & 0x7FFFu) << 0u) | (((uint64_t) rand () & 0x7FFFu) << 15u) |
(((uint64_t) rand () & 0x7FFFu) << 30u) | (((uint64_t) rand () & 0x7FFFu) << 45u) |
(((uint64_t) rand () & 0x0003u) << 60u);
}
uint32_t
_mongoc_rand_uint32_t (uint32_t min, uint32_t max, uint32_t (*rand) (void))
{
BSON_ASSERT (min <= max);
BSON_ASSERT (min != 0u || max != UINT32_MAX);
return _mongoc_rand_nduid32 (max - min + 1u, rand) + min;
}
uint64_t
_mongoc_rand_uint64_t (uint64_t min, uint64_t max, uint64_t (*rand) (void))
{
BSON_ASSERT (min <= max);
BSON_ASSERT (min != 0u || max != UINT64_MAX);
return _mongoc_rand_java64 (max - min + 1u, rand) + min;
}
#if SIZE_MAX == UINT64_MAX
BSON_STATIC_ASSERT2 (_mongoc_simple_rand_size_t, sizeof (size_t) == sizeof (uint64_t));
size_t
_mongoc_simple_rand_size_t (void)
{
return (size_t) _mongoc_simple_rand_uint64_t ();
}
size_t
_mongoc_rand_size_t (size_t min, size_t max)
{
BSON_ASSERT (min <= max);
BSON_ASSERT (min != 0u || max != UINT64_MAX);
return _mongoc_rand_java64 (max - min + 1u, &_mongoc_simple_rand_uint64_t) + min;
}
#elif SIZE_MAX == UINT32_MAX
BSON_STATIC_ASSERT2 (_mongoc_simple_rand_size_t, sizeof (size_t) == sizeof (uint32_t));
size_t
_mongoc_simple_rand_size_t (void)
{
return (size_t) _mongoc_simple_rand_uint32_t ();
}
size_t
_mongoc_rand_size_t (size_t min, size_t max)
{
BSON_ASSERT (min <= max);
BSON_ASSERT (min != 0u || max != UINT32_MAX);
return _mongoc_rand_nduid32 (max - min + 1u, &_mongoc_simple_rand_uint32_t) + min;
}
#else
#error "Implementation of _mongoc_simple_rand_size_t() requires size_t be exactly 32-bit or 64-bit"
#endif
bool
_mongoc_iter_document_as_bson (const bson_iter_t *iter, bson_t *bson, bson_error_t *error)
{
uint32_t len;
const uint8_t *data;
if (!BSON_ITER_HOLDS_DOCUMENT (iter)) {
bson_set_error (error,
MONGOC_ERROR_COMMAND,
MONGOC_ERROR_COMMAND_INVALID_ARG,
"expected BSON document for field: %s",
bson_iter_key (iter));
return false;
}
bson_iter_document (iter, &len, &data);
if (!bson_init_static (bson, data, len)) {
bson_set_error (error,
MONGOC_ERROR_COMMAND,
MONGOC_ERROR_COMMAND_INVALID_ARG,
"unable to initialize BSON document from field: %s",
bson_iter_key (iter));
return false;
}
return true;
}
uint8_t *
hex_to_bin (const char *hex, uint32_t *len)
{
uint8_t *out;
const size_t hex_len = strlen (hex);
if (hex_len % 2u != 0u) {
return NULL;
}
BSON_ASSERT (mcommon_in_range_unsigned (uint32_t, hex_len / 2u));
*len = (uint32_t) (hex_len / 2u);
out = bson_malloc0 (*len);
for (uint32_t i = 0; i < hex_len; i += 2u) {
uint32_t hex_char;
if (1 != sscanf (hex + i, "%2x", &hex_char)) {
bson_free (out);
return NULL;
}
BSON_ASSERT (mcommon_in_range_unsigned (uint8_t, hex_char));
out[i / 2u] = (uint8_t) hex_char;
}
return out;
}
char *
bin_to_hex (const uint8_t *bin, uint32_t len)
{
char *out = bson_malloc0 (2u * len + 1u);
for (uint32_t i = 0u; i < len; i++) {
// Expect no truncation.
int req = bson_snprintf (out + (2u * i), 3, "%02x", bin[i]);
BSON_ASSERT (req < 3);
}
return out;
}
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version-functions.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version-functions.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version-functions.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version-functions.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version-functions.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version-functions.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version-functions.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version-functions.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h
similarity index 96%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h
index f5c2f4c2..cc310c71 100644
--- a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h
+++ b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h
@@ -1,103 +1,103 @@
/*
* Copyright 2009-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if !defined(MONGOC_INSIDE) && !defined(MONGOC_COMPILATION)
#error "Only <mongoc/mongoc.h> can be included directly."
#endif
// clang-format off
#ifndef MONGOC_VERSION_H
#define MONGOC_VERSION_H
/**
* MONGOC_MAJOR_VERSION:
*
* MONGOC major version component (e.g. 1 if %MONGOC_VERSION is 1.2.3)
*/
#define MONGOC_MAJOR_VERSION (1)
/**
* MONGOC_MINOR_VERSION:
*
* MONGOC minor version component (e.g. 2 if %MONGOC_VERSION is 1.2.3)
*/
#define MONGOC_MINOR_VERSION (30)
/**
* MONGOC_MICRO_VERSION:
*
* MONGOC micro version component (e.g. 3 if %MONGOC_VERSION is 1.2.3)
*/
-#define MONGOC_MICRO_VERSION (4)
+#define MONGOC_MICRO_VERSION (5)
/**
* MONGOC_PRERELEASE_VERSION:
*
* MONGOC prerelease version component (e.g. pre if %MONGOC_VERSION is 1.2.3-pre)
*/
#define MONGOC_PRERELEASE_VERSION ()
/**
* MONGOC_VERSION:
*
* MONGOC version.
*/
-#define MONGOC_VERSION (1.30.4)
+#define MONGOC_VERSION (1.30.5)
/**
* MONGOC_VERSION_S:
*
* MONGOC version, encoded as a string, useful for printing and
* concatenation.
*/
-#define MONGOC_VERSION_S "1.30.4"
+#define MONGOC_VERSION_S "1.30.5"
/**
* MONGOC_VERSION_HEX:
*
* MONGOC version, encoded as an hexadecimal number, useful for
* integer comparisons.
*/
#define MONGOC_VERSION_HEX (MONGOC_MAJOR_VERSION << 24 | \
MONGOC_MINOR_VERSION << 16 | \
MONGOC_MICRO_VERSION << 8)
/**
* MONGOC_CHECK_VERSION:
* @major: required major version
* @minor: required minor version
* @micro: required micro version
*
* Compile-time version checking. Evaluates to %TRUE if the version
* of MONGOC is greater than or equal to the required one.
*/
#define MONGOC_CHECK_VERSION(major,minor,micro) \
(MONGOC_MAJOR_VERSION > (major) || \
(MONGOC_MAJOR_VERSION == (major) && MONGOC_MINOR_VERSION > (minor)) || \
(MONGOC_MAJOR_VERSION == (major) && MONGOC_MINOR_VERSION == (minor) && \
MONGOC_MICRO_VERSION >= (micro)))
#endif /* MONGOC_VERSION_H */
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h.in b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h.in
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h.in
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h.in
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-command-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-command-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-command-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-command-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-command.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-command.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-command.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-command.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern-private.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern-private.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern-private.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/mongoc.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/mongoc.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/service-gcp.c b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/service-gcp.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/service-gcp.c
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/service-gcp.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/service-gcp.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/service-gcp.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/service-gcp.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/service-gcp.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/uthash.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/uthash.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/uthash.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/uthash.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/utlist.h b/mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/utlist.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/libmongoc/src/mongoc/utlist.h
rename to mongodb-2.1.1/src/libmongoc/src/libmongoc/src/mongoc/utlist.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/utf8proc-2.8.0/utf8proc.c b/mongodb-2.1.1/src/libmongoc/src/utf8proc-2.8.0/utf8proc.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/utf8proc-2.8.0/utf8proc.c
rename to mongodb-2.1.1/src/libmongoc/src/utf8proc-2.8.0/utf8proc.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/utf8proc-2.8.0/utf8proc.h b/mongodb-2.1.1/src/libmongoc/src/utf8proc-2.8.0/utf8proc.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/utf8proc-2.8.0/utf8proc.h
rename to mongodb-2.1.1/src/libmongoc/src/utf8proc-2.8.0/utf8proc.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/utf8proc-2.8.0/utf8proc_data.c b/mongodb-2.1.1/src/libmongoc/src/utf8proc-2.8.0/utf8proc_data.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/utf8proc-2.8.0/utf8proc_data.c
rename to mongodb-2.1.1/src/libmongoc/src/utf8proc-2.8.0/utf8proc_data.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/uthash/uthash-2.3.0/uthash.h b/mongodb-2.1.1/src/libmongoc/src/uthash/uthash-2.3.0/uthash.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/uthash/uthash-2.3.0/uthash.h
rename to mongodb-2.1.1/src/libmongoc/src/uthash/uthash-2.3.0/uthash.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/uthash/uthash-2.3.0/utlist.h b/mongodb-2.1.1/src/libmongoc/src/uthash/uthash-2.3.0/utlist.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/uthash/uthash-2.3.0/utlist.h
rename to mongodb-2.1.1/src/libmongoc/src/uthash/uthash-2.3.0/utlist.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/adler32.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/adler32.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/adler32.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/adler32.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/compress.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/compress.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/compress.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/compress.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/crc32.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/crc32.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/crc32.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/crc32.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/crc32.h b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/crc32.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/crc32.h
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/crc32.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/deflate.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/deflate.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/deflate.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/deflate.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/deflate.h b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/deflate.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/deflate.h
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/deflate.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/gzclose.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/gzclose.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/gzclose.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/gzclose.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/gzguts.h b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/gzguts.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/gzguts.h
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/gzguts.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/gzlib.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/gzlib.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/gzlib.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/gzlib.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/gzread.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/gzread.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/gzread.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/gzread.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/gzwrite.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/gzwrite.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/gzwrite.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/gzwrite.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/infback.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/infback.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/infback.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/infback.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inffast.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inffast.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inffast.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inffast.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inffast.h b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inffast.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inffast.h
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inffast.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inffixed.h b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inffixed.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inffixed.h
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inffixed.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inflate.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inflate.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inflate.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inflate.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inflate.h b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inflate.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inflate.h
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inflate.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inftrees.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inftrees.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inftrees.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inftrees.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inftrees.h b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inftrees.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/inftrees.h
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/inftrees.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/trees.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/trees.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/trees.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/trees.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/trees.h b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/trees.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/trees.h
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/trees.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/uncompr.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/uncompr.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/uncompr.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/uncompr.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/zconf.h b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/zconf.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/zconf.h
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/zconf.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/zconf.h.in b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/zconf.h.in
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/zconf.h.in
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/zconf.h.in
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/zlib.h b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/zlib.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/zlib.h
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/zlib.h
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/zutil.c b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/zutil.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/zutil.c
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/zutil.c
diff --git a/mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/zutil.h b/mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/zutil.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongoc/src/zlib-1.3.1/zutil.h
rename to mongodb-2.1.1/src/libmongoc/src/zlib-1.3.1/zutil.h
diff --git a/mongodb-2.1.0/src/libmongocrypt-compat/mongocrypt-export.h b/mongodb-2.1.1/src/libmongocrypt-compat/mongocrypt-export.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt-compat/mongocrypt-export.h
rename to mongodb-2.1.1/src/libmongocrypt-compat/mongocrypt-export.h
diff --git a/mongodb-2.1.0/src/libmongocrypt-compat/mongocrypt/mongocrypt.h b/mongodb-2.1.1/src/libmongocrypt-compat/mongocrypt/mongocrypt.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt-compat/mongocrypt/mongocrypt.h
rename to mongodb-2.1.1/src/libmongocrypt-compat/mongocrypt/mongocrypt.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/hexlify.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/hexlify.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/hexlify.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/hexlify.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/hexlify.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/hexlify.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/hexlify.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/hexlify.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_azure_request.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_azure_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_azure_request.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_azure_request.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_b64.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_b64.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_b64.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_b64.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_caller_identity_request.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_caller_identity_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_caller_identity_request.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_caller_identity_request.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_crypto.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_crypto.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_crypto.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_crypto.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_crypto_apple.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_crypto_apple.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_crypto_apple.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_crypto_apple.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_crypto_libcrypto.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_crypto_libcrypto.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_crypto_libcrypto.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_crypto_libcrypto.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_crypto_none.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_crypto_none.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_crypto_none.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_crypto_none.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_crypto_windows.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_crypto_windows.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_crypto_windows.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_crypto_windows.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_decrypt_request.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_decrypt_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_decrypt_request.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_decrypt_request.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_encrypt_request.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_encrypt_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_encrypt_request.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_encrypt_request.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_endian_private.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_endian_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_endian_private.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_endian_private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_gcp_request.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_gcp_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_gcp_request.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_gcp_request.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_item_type_private.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_item_type_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_item_type_private.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_item_type_private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_reader_writer.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_reader_writer.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_reader_writer.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_reader_writer.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_reader_writer_private.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_reader_writer_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_reader_writer_private.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_reader_writer_private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_request.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_request.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_request.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_response.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_response.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_response.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_response.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_response_parser.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_response_parser.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_response_parser.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_response_parser.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_response_parser_private.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_response_parser_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_response_parser_private.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_response_parser_private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_result_reason_private.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_result_reason_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_result_reason_private.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_result_reason_private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_result_status_private.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_result_status_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_result_status_private.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_result_status_private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_tag_type_private.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_tag_type_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kmip_tag_type_private.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kmip_tag_type_private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kv_list.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kv_list.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kv_list.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kv_list.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kv_list.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kv_list.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_kv_list.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_kv_list.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_azure_request.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_azure_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_azure_request.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_azure_request.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_b64.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_b64.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_b64.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_b64.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_caller_identity_request.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_caller_identity_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_caller_identity_request.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_caller_identity_request.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_decrypt_request.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_decrypt_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_decrypt_request.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_decrypt_request.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_encrypt_request.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_encrypt_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_encrypt_request.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_encrypt_request.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_gcp_request.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_gcp_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_gcp_request.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_gcp_request.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_kmip_request.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_kmip_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_kmip_request.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_kmip_request.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_kmip_response.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_kmip_response.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_kmip_response.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_kmip_response.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_kmip_response_parser.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_kmip_response_parser.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_kmip_response_parser.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_kmip_response_parser.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_message.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_message.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_message.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_message.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_message_defines.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_message_defines.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_message_defines.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_message_defines.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_request.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_request.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_request.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_request.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_request_opt.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_request_opt.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_request_opt.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_request_opt.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_response.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_response.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_response.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_response.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_response_parser.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_response_parser.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message/kms_response_parser.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message/kms_response_parser.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message_private.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_message_private.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_message_private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_port.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_port.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_port.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_port.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_port.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_port.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_port.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_port.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_request.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_request.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_request.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_request.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_request_opt.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_request_opt.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_request_opt.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_request_opt.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_request_opt_private.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_request_opt_private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_request_opt_private.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_request_opt_private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_request_str.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_request_str.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_request_str.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_request_str.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_request_str.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_request_str.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_request_str.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_request_str.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_response.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_response.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_response.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_response.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_response_parser.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_response_parser.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/kms_response_parser.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/kms_response_parser.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/sort.c b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/sort.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/sort.c
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/sort.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/kms-message/src/sort.h b/mongodb-2.1.1/src/libmongocrypt/kms-message/src/sort.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/kms-message/src/sort.h
rename to mongodb-2.1.1/src/libmongocrypt/kms-message/src/sort.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/crypto/cng.c b/mongodb-2.1.1/src/libmongocrypt/src/crypto/cng.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/crypto/cng.c
rename to mongodb-2.1.1/src/libmongocrypt/src/crypto/cng.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/crypto/commoncrypto.c b/mongodb-2.1.1/src/libmongocrypt/src/crypto/commoncrypto.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/crypto/commoncrypto.c
rename to mongodb-2.1.1/src/libmongocrypt/src/crypto/commoncrypto.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/crypto/libcrypto.c b/mongodb-2.1.1/src/libmongocrypt/src/crypto/libcrypto.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/crypto/libcrypto.c
rename to mongodb-2.1.1/src/libmongocrypt/src/crypto/libcrypto.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/crypto/none.c b/mongodb-2.1.1/src/libmongocrypt/src/crypto/none.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/crypto/none.c
rename to mongodb-2.1.1/src/libmongocrypt/src/crypto/none.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-array-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-array-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-array-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-array-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-array.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-array.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-array.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-array.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-check-conversions-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-check-conversions-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-check-conversions-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-check-conversions-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-cmp-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-cmp-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-cmp-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-cmp-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-dec128.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-dec128.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-dec128.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-dec128.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-efc-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-efc-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-efc-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-efc-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-efc.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-efc.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-efc.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-efc.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle-blob-subtype-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle-blob-subtype-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle-blob-subtype-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle-blob-subtype-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-encryption-placeholder-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-encryption-placeholder-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-encryption-placeholder-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-encryption-placeholder-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-encryption-placeholder.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-encryption-placeholder.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-encryption-placeholder.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-encryption-placeholder.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-equality-payload-private-v2.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-equality-payload-private-v2.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-equality-payload-private-v2.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-equality-payload-private-v2.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-equality-payload-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-equality-payload-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-equality-payload-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-equality-payload-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-equality-payload-v2.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-equality-payload-v2.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-equality-payload-v2.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-equality-payload-v2.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-equality-payload.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-equality-payload.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-equality-payload.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-equality-payload.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-range-payload-private-v2.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-range-payload-private-v2.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-range-payload-private-v2.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-range-payload-private-v2.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-range-payload-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-range-payload-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-range-payload-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-range-payload-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-range-payload-v2.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-range-payload-v2.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-range-payload-v2.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-range-payload-v2.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-range-payload.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-range-payload.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-find-range-payload.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-find-range-payload.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-insert-update-payload-private-v2.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-insert-update-payload-private-v2.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-insert-update-payload-private-v2.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-insert-update-payload-private-v2.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-insert-update-payload-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-insert-update-payload-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-insert-update-payload-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-insert-update-payload-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-insert-update-payload-v2.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-insert-update-payload-v2.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-insert-update-payload-v2.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-insert-update-payload-v2.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-insert-update-payload.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-insert-update-payload.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-insert-update-payload.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-insert-update-payload.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-iev-private-v2.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-iev-private-v2.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-iev-private-v2.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-iev-private-v2.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-iev-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-iev-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-iev-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-iev-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-iev-v2.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-iev-v2.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-iev-v2.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-iev-v2.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-iev.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-iev.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-iev.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-iev.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-uev-common-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-uev-common-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-uev-common-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-uev-common-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-uev-common.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-uev-common.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-uev-common.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-uev-common.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-uev-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-uev-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-uev-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-uev-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-uev-v2-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-uev-v2-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-uev-v2-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-uev-v2-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-uev-v2.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-uev-v2.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-uev-v2.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-uev-v2.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-uev.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-uev.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-payload-uev.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-payload-uev.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-range-operator-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-range-operator-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-range-operator-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-range-operator-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-rfds-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-rfds-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-rfds-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-rfds-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-rfds.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-rfds.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-rfds.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-rfds.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-optional-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-optional-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-optional-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-optional-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-range-edge-generation-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-range-edge-generation-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-range-edge-generation-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-range-edge-generation-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-range-edge-generation.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-range-edge-generation.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-range-edge-generation.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-range-edge-generation.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-range-encoding-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-range-encoding-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-range-encoding-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-range-encoding-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-range-encoding.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-range-encoding.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-range-encoding.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-range-encoding.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-range-mincover-generator.template.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-range-mincover-generator.template.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-range-mincover-generator.template.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-range-mincover-generator.template.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-range-mincover-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-range-mincover-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-range-mincover-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-range-mincover-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-range-mincover.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-range-mincover.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-range-mincover.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-range-mincover.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-rangeopts-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-rangeopts-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-rangeopts-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-rangeopts-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-rangeopts.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-rangeopts.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-rangeopts.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-rangeopts.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-reader-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-reader-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-reader-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-reader-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-reader.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-reader.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-reader.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-reader.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-tokens-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-tokens-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-tokens-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-tokens-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-tokens.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-tokens.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-tokens.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-tokens.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-writer-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mc-writer-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-writer-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-writer-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mc-writer.c b/mongodb-2.1.1/src/libmongocrypt/src/mc-writer.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mc-writer.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mc-writer.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mlib/endian.h b/mongodb-2.1.1/src/libmongocrypt/src/mlib/endian.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mlib/endian.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mlib/endian.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mlib/error.h b/mongodb-2.1.1/src/libmongocrypt/src/mlib/error.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mlib/error.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mlib/error.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mlib/int128.h b/mongodb-2.1.1/src/libmongocrypt/src/mlib/int128.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mlib/int128.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mlib/int128.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mlib/macros.h b/mongodb-2.1.1/src/libmongocrypt/src/mlib/macros.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mlib/macros.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mlib/macros.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mlib/path.h b/mongodb-2.1.1/src/libmongocrypt/src/mlib/path.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mlib/path.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mlib/path.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mlib/str.h b/mongodb-2.1.1/src/libmongocrypt/src/mlib/str.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mlib/str.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mlib/str.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mlib/thread.h b/mongodb-2.1.1/src/libmongocrypt/src/mlib/thread.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mlib/thread.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mlib/thread.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mlib/user-check.h b/mongodb-2.1.1/src/libmongocrypt/src/mlib/user-check.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mlib/user-check.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mlib/user-check.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mlib/windows-lean.h b/mongodb-2.1.1/src/libmongocrypt/src/mlib/windows-lean.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mlib/windows-lean.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mlib/windows-lean.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongo_crypt-v1.h b/mongodb-2.1.1/src/libmongocrypt/src/mongo_crypt-v1.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongo_crypt-v1.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongo_crypt-v1.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-binary-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-binary-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-binary-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-binary-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-binary.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-binary.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-binary.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-binary.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-buffer-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-buffer-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-buffer-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-buffer-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-buffer.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-buffer.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-buffer.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-buffer.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-collinfo-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-collinfo-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-collinfo-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-collinfo-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-collinfo.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-collinfo.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-collinfo.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-collinfo.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-key-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-key-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-key-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-key-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-key.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-key.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-key.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-key.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-oauth-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-oauth-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-oauth-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-oauth-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-oauth.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-oauth.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-oauth.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-oauth.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-cache.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-cache.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ciphertext-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ciphertext-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ciphertext-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ciphertext-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ciphertext.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ciphertext.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ciphertext.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ciphertext.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-compat.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-compat.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-compat.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-compat.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-config.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-config.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-config.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-config.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-config.h.in b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-config.h.in
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-config.h.in
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-config.h.in
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-crypto-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-crypto-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-crypto-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-crypto-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-crypto.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-crypto.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-crypto.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-crypto.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ctx-datakey.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ctx-datakey.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ctx-datakey.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ctx-datakey.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ctx-decrypt.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ctx-decrypt.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ctx-decrypt.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ctx-decrypt.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ctx-encrypt.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ctx-encrypt.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ctx-encrypt.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ctx-encrypt.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ctx-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ctx-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ctx-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ctx-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ctx-rewrap-many-datakey.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ctx-rewrap-many-datakey.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ctx-rewrap-many-datakey.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ctx-rewrap-many-datakey.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ctx.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ctx.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-ctx.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-ctx.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-dll-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-dll-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-dll-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-dll-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-endian-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-endian-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-endian-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-endian-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-endpoint-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-endpoint-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-endpoint-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-endpoint-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-endpoint.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-endpoint.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-endpoint.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-endpoint.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-kek-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-kek-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-kek-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-kek-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-kek.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-kek.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-kek.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-kek.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-key-broker-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-key-broker-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-key-broker-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-key-broker-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-key-broker.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-key-broker.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-key-broker.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-key-broker.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-key-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-key-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-key-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-key-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-key.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-key.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-key.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-key.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-kms-ctx-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-kms-ctx-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-kms-ctx-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-kms-ctx-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-kms-ctx.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-kms-ctx.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-kms-ctx.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-kms-ctx.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-log-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-log-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-log-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-log-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-log.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-log.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-log.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-log.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-marking-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-marking-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-marking-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-marking-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-marking.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-marking.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-marking.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-marking.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-mutex-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-mutex-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-mutex-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-mutex-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-opts-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-opts-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-opts-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-opts-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-opts.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-opts.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-opts.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-opts.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-status-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-status-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-status-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-status-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-status.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-status.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-status.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-status.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-traverse-util-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-traverse-util-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-traverse-util-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-traverse-util-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-traverse-util.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-traverse-util.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-traverse-util.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-traverse-util.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-util-private.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-util-private.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-util-private.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-util-private.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-util.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-util.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt-util.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt-util.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt.c b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt.c
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/mongocrypt.h b/mongodb-2.1.1/src/libmongocrypt/src/mongocrypt.h
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/mongocrypt.h
rename to mongodb-2.1.1/src/libmongocrypt/src/mongocrypt.h
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/os_posix/os_dll.c b/mongodb-2.1.1/src/libmongocrypt/src/os_posix/os_dll.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/os_posix/os_dll.c
rename to mongodb-2.1.1/src/libmongocrypt/src/os_posix/os_dll.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/os_posix/os_mutex.c b/mongodb-2.1.1/src/libmongocrypt/src/os_posix/os_mutex.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/os_posix/os_mutex.c
rename to mongodb-2.1.1/src/libmongocrypt/src/os_posix/os_mutex.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/os_win/os_dll.c b/mongodb-2.1.1/src/libmongocrypt/src/os_win/os_dll.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/os_win/os_dll.c
rename to mongodb-2.1.1/src/libmongocrypt/src/os_win/os_dll.c
diff --git a/mongodb-2.1.0/src/libmongocrypt/src/os_win/os_mutex.c b/mongodb-2.1.1/src/libmongocrypt/src/os_win/os_mutex.c
similarity index 100%
rename from mongodb-2.1.0/src/libmongocrypt/src/os_win/os_mutex.c
rename to mongodb-2.1.1/src/libmongocrypt/src/os_win/os_mutex.c
diff --git a/mongodb-2.1.0/src/phongo_apm.c b/mongodb-2.1.1/src/phongo_apm.c
similarity index 100%
rename from mongodb-2.1.0/src/phongo_apm.c
rename to mongodb-2.1.1/src/phongo_apm.c
diff --git a/mongodb-2.1.0/src/phongo_apm.h b/mongodb-2.1.1/src/phongo_apm.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_apm.h
rename to mongodb-2.1.1/src/phongo_apm.h
diff --git a/mongodb-2.1.0/src/phongo_atomic.c b/mongodb-2.1.1/src/phongo_atomic.c
similarity index 100%
rename from mongodb-2.1.0/src/phongo_atomic.c
rename to mongodb-2.1.1/src/phongo_atomic.c
diff --git a/mongodb-2.1.0/src/phongo_atomic.h b/mongodb-2.1.1/src/phongo_atomic.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_atomic.h
rename to mongodb-2.1.1/src/phongo_atomic.h
diff --git a/mongodb-2.1.0/src/phongo_bson.c b/mongodb-2.1.1/src/phongo_bson.c
similarity index 100%
rename from mongodb-2.1.0/src/phongo_bson.c
rename to mongodb-2.1.1/src/phongo_bson.c
diff --git a/mongodb-2.1.0/src/phongo_bson.h b/mongodb-2.1.1/src/phongo_bson.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_bson.h
rename to mongodb-2.1.1/src/phongo_bson.h
diff --git a/mongodb-2.1.0/src/phongo_bson_encode.c b/mongodb-2.1.1/src/phongo_bson_encode.c
similarity index 100%
rename from mongodb-2.1.0/src/phongo_bson_encode.c
rename to mongodb-2.1.1/src/phongo_bson_encode.c
diff --git a/mongodb-2.1.0/src/phongo_bson_encode.h b/mongodb-2.1.1/src/phongo_bson_encode.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_bson_encode.h
rename to mongodb-2.1.1/src/phongo_bson_encode.h
diff --git a/mongodb-2.1.0/src/phongo_classes.h b/mongodb-2.1.1/src/phongo_classes.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_classes.h
rename to mongodb-2.1.1/src/phongo_classes.h
diff --git a/mongodb-2.1.0/src/phongo_client.c b/mongodb-2.1.1/src/phongo_client.c
similarity index 100%
rename from mongodb-2.1.0/src/phongo_client.c
rename to mongodb-2.1.1/src/phongo_client.c
diff --git a/mongodb-2.1.0/src/phongo_client.h b/mongodb-2.1.1/src/phongo_client.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_client.h
rename to mongodb-2.1.1/src/phongo_client.h
diff --git a/mongodb-2.1.0/src/phongo_compat.c b/mongodb-2.1.1/src/phongo_compat.c
similarity index 100%
rename from mongodb-2.1.0/src/phongo_compat.c
rename to mongodb-2.1.1/src/phongo_compat.c
diff --git a/mongodb-2.1.0/src/phongo_compat.h b/mongodb-2.1.1/src/phongo_compat.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_compat.h
rename to mongodb-2.1.1/src/phongo_compat.h
diff --git a/mongodb-2.1.0/src/phongo_error.c b/mongodb-2.1.1/src/phongo_error.c
similarity index 100%
rename from mongodb-2.1.0/src/phongo_error.c
rename to mongodb-2.1.1/src/phongo_error.c
diff --git a/mongodb-2.1.0/src/phongo_error.h b/mongodb-2.1.1/src/phongo_error.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_error.h
rename to mongodb-2.1.1/src/phongo_error.h
diff --git a/mongodb-2.1.0/src/phongo_execute.c b/mongodb-2.1.1/src/phongo_execute.c
similarity index 100%
rename from mongodb-2.1.0/src/phongo_execute.c
rename to mongodb-2.1.1/src/phongo_execute.c
diff --git a/mongodb-2.1.0/src/phongo_execute.h b/mongodb-2.1.1/src/phongo_execute.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_execute.h
rename to mongodb-2.1.1/src/phongo_execute.h
diff --git a/mongodb-2.1.0/src/phongo_ini.c b/mongodb-2.1.1/src/phongo_ini.c
similarity index 100%
rename from mongodb-2.1.0/src/phongo_ini.c
rename to mongodb-2.1.1/src/phongo_ini.c
diff --git a/mongodb-2.1.0/src/phongo_ini.h b/mongodb-2.1.1/src/phongo_ini.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_ini.h
rename to mongodb-2.1.1/src/phongo_ini.h
diff --git a/mongodb-2.1.0/src/phongo_log.c b/mongodb-2.1.1/src/phongo_log.c
similarity index 100%
rename from mongodb-2.1.0/src/phongo_log.c
rename to mongodb-2.1.1/src/phongo_log.c
diff --git a/mongodb-2.1.0/src/phongo_log.h b/mongodb-2.1.1/src/phongo_log.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_log.h
rename to mongodb-2.1.1/src/phongo_log.h
diff --git a/mongodb-2.1.0/src/phongo_structs.h b/mongodb-2.1.1/src/phongo_structs.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_structs.h
rename to mongodb-2.1.1/src/phongo_structs.h
diff --git a/mongodb-2.1.0/src/phongo_util.c b/mongodb-2.1.1/src/phongo_util.c
similarity index 100%
rename from mongodb-2.1.0/src/phongo_util.c
rename to mongodb-2.1.1/src/phongo_util.c
diff --git a/mongodb-2.1.0/src/phongo_util.h b/mongodb-2.1.1/src/phongo_util.h
similarity index 100%
rename from mongodb-2.1.0/src/phongo_util.h
rename to mongodb-2.1.1/src/phongo_util.h
diff --git a/mongodb-2.1.0/tests/apm/bug0950-001.phpt b/mongodb-2.1.1/tests/apm/bug0950-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/bug0950-001.phpt
rename to mongodb-2.1.1/tests/apm/bug0950-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/bug0950-002.phpt b/mongodb-2.1.1/tests/apm/bug0950-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/bug0950-002.phpt
rename to mongodb-2.1.1/tests/apm/bug0950-002.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandFailedEvent-001.phpt b/mongodb-2.1.1/tests/apm/commandFailedEvent-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandFailedEvent-001.phpt
rename to mongodb-2.1.1/tests/apm/commandFailedEvent-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandFailedEvent-002.phpt b/mongodb-2.1.1/tests/apm/commandFailedEvent-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandFailedEvent-002.phpt
rename to mongodb-2.1.1/tests/apm/commandFailedEvent-002.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandFailedEvent-debug-001.phpt b/mongodb-2.1.1/tests/apm/commandFailedEvent-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandFailedEvent-debug-001.phpt
rename to mongodb-2.1.1/tests/apm/commandFailedEvent-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandFailedEvent-getReply-001.phpt b/mongodb-2.1.1/tests/apm/commandFailedEvent-getReply-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandFailedEvent-getReply-001.phpt
rename to mongodb-2.1.1/tests/apm/commandFailedEvent-getReply-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandFailedEvent-getServerConnectionId-001.phpt b/mongodb-2.1.1/tests/apm/commandFailedEvent-getServerConnectionId-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandFailedEvent-getServerConnectionId-001.phpt
rename to mongodb-2.1.1/tests/apm/commandFailedEvent-getServerConnectionId-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandFailedEvent-getServiceId-001.phpt b/mongodb-2.1.1/tests/apm/commandFailedEvent-getServiceId-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandFailedEvent-getServiceId-001.phpt
rename to mongodb-2.1.1/tests/apm/commandFailedEvent-getServiceId-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandFailedEvent-getServiceId-002.phpt b/mongodb-2.1.1/tests/apm/commandFailedEvent-getServiceId-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandFailedEvent-getServiceId-002.phpt
rename to mongodb-2.1.1/tests/apm/commandFailedEvent-getServiceId-002.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandStartedEvent-001.phpt b/mongodb-2.1.1/tests/apm/commandStartedEvent-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandStartedEvent-001.phpt
rename to mongodb-2.1.1/tests/apm/commandStartedEvent-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandStartedEvent-002.phpt b/mongodb-2.1.1/tests/apm/commandStartedEvent-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandStartedEvent-002.phpt
rename to mongodb-2.1.1/tests/apm/commandStartedEvent-002.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandStartedEvent-debug-001.phpt b/mongodb-2.1.1/tests/apm/commandStartedEvent-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandStartedEvent-debug-001.phpt
rename to mongodb-2.1.1/tests/apm/commandStartedEvent-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandStartedEvent-getServerConnectionId-001.phpt b/mongodb-2.1.1/tests/apm/commandStartedEvent-getServerConnectionId-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandStartedEvent-getServerConnectionId-001.phpt
rename to mongodb-2.1.1/tests/apm/commandStartedEvent-getServerConnectionId-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandStartedEvent-getServiceId-001.phpt b/mongodb-2.1.1/tests/apm/commandStartedEvent-getServiceId-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandStartedEvent-getServiceId-001.phpt
rename to mongodb-2.1.1/tests/apm/commandStartedEvent-getServiceId-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandStartedEvent-getServiceId-002.phpt b/mongodb-2.1.1/tests/apm/commandStartedEvent-getServiceId-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandStartedEvent-getServiceId-002.phpt
rename to mongodb-2.1.1/tests/apm/commandStartedEvent-getServiceId-002.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandSucceededEvent-001.phpt b/mongodb-2.1.1/tests/apm/commandSucceededEvent-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandSucceededEvent-001.phpt
rename to mongodb-2.1.1/tests/apm/commandSucceededEvent-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandSucceededEvent-002.phpt b/mongodb-2.1.1/tests/apm/commandSucceededEvent-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandSucceededEvent-002.phpt
rename to mongodb-2.1.1/tests/apm/commandSucceededEvent-002.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandSucceededEvent-debug-001.phpt b/mongodb-2.1.1/tests/apm/commandSucceededEvent-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandSucceededEvent-debug-001.phpt
rename to mongodb-2.1.1/tests/apm/commandSucceededEvent-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandSucceededEvent-getServerConnectionId-001.phpt b/mongodb-2.1.1/tests/apm/commandSucceededEvent-getServerConnectionId-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandSucceededEvent-getServerConnectionId-001.phpt
rename to mongodb-2.1.1/tests/apm/commandSucceededEvent-getServerConnectionId-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandSucceededEvent-getServiceId-001.phpt b/mongodb-2.1.1/tests/apm/commandSucceededEvent-getServiceId-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandSucceededEvent-getServiceId-001.phpt
rename to mongodb-2.1.1/tests/apm/commandSucceededEvent-getServiceId-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/commandSucceededEvent-getServiceId-002.phpt b/mongodb-2.1.1/tests/apm/commandSucceededEvent-getServiceId-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/commandSucceededEvent-getServiceId-002.phpt
rename to mongodb-2.1.1/tests/apm/commandSucceededEvent-getServiceId-002.phpt
diff --git a/mongodb-2.1.0/tests/apm/monitoring-addSubscriber-001.phpt b/mongodb-2.1.1/tests/apm/monitoring-addSubscriber-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/monitoring-addSubscriber-001.phpt
rename to mongodb-2.1.1/tests/apm/monitoring-addSubscriber-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/monitoring-addSubscriber-002.phpt b/mongodb-2.1.1/tests/apm/monitoring-addSubscriber-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/monitoring-addSubscriber-002.phpt
rename to mongodb-2.1.1/tests/apm/monitoring-addSubscriber-002.phpt
diff --git a/mongodb-2.1.0/tests/apm/monitoring-addSubscriber-003.phpt b/mongodb-2.1.1/tests/apm/monitoring-addSubscriber-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/monitoring-addSubscriber-003.phpt
rename to mongodb-2.1.1/tests/apm/monitoring-addSubscriber-003.phpt
diff --git a/mongodb-2.1.0/tests/apm/monitoring-addSubscriber-004.phpt b/mongodb-2.1.1/tests/apm/monitoring-addSubscriber-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/monitoring-addSubscriber-004.phpt
rename to mongodb-2.1.1/tests/apm/monitoring-addSubscriber-004.phpt
diff --git a/mongodb-2.1.0/tests/apm/monitoring-removeSubscriber-001.phpt b/mongodb-2.1.1/tests/apm/monitoring-removeSubscriber-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/monitoring-removeSubscriber-001.phpt
rename to mongodb-2.1.1/tests/apm/monitoring-removeSubscriber-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/monitoring-removeSubscriber-002.phpt b/mongodb-2.1.1/tests/apm/monitoring-removeSubscriber-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/monitoring-removeSubscriber-002.phpt
rename to mongodb-2.1.1/tests/apm/monitoring-removeSubscriber-002.phpt
diff --git a/mongodb-2.1.0/tests/apm/serverChangedEvent-001.phpt b/mongodb-2.1.1/tests/apm/serverChangedEvent-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/serverChangedEvent-001.phpt
rename to mongodb-2.1.1/tests/apm/serverChangedEvent-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/serverClosedEvent-001.phpt b/mongodb-2.1.1/tests/apm/serverClosedEvent-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/serverClosedEvent-001.phpt
rename to mongodb-2.1.1/tests/apm/serverClosedEvent-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/serverHeartbeatFailedEvent-001.phpt b/mongodb-2.1.1/tests/apm/serverHeartbeatFailedEvent-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/serverHeartbeatFailedEvent-001.phpt
rename to mongodb-2.1.1/tests/apm/serverHeartbeatFailedEvent-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/serverHeartbeatStartedEvent-001.phpt b/mongodb-2.1.1/tests/apm/serverHeartbeatStartedEvent-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/serverHeartbeatStartedEvent-001.phpt
rename to mongodb-2.1.1/tests/apm/serverHeartbeatStartedEvent-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/serverHeartbeatSucceededEvent-001.phpt b/mongodb-2.1.1/tests/apm/serverHeartbeatSucceededEvent-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/serverHeartbeatSucceededEvent-001.phpt
rename to mongodb-2.1.1/tests/apm/serverHeartbeatSucceededEvent-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/serverOpeningEvent-001.phpt b/mongodb-2.1.1/tests/apm/serverOpeningEvent-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/serverOpeningEvent-001.phpt
rename to mongodb-2.1.1/tests/apm/serverOpeningEvent-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/topologyChangedEvent-001.phpt b/mongodb-2.1.1/tests/apm/topologyChangedEvent-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/topologyChangedEvent-001.phpt
rename to mongodb-2.1.1/tests/apm/topologyChangedEvent-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/topologyClosedEvent-001.phpt b/mongodb-2.1.1/tests/apm/topologyClosedEvent-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/topologyClosedEvent-001.phpt
rename to mongodb-2.1.1/tests/apm/topologyClosedEvent-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/topologyOpeningEvent-001.phpt b/mongodb-2.1.1/tests/apm/topologyOpeningEvent-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/topologyOpeningEvent-001.phpt
rename to mongodb-2.1.1/tests/apm/topologyOpeningEvent-001.phpt
diff --git a/mongodb-2.1.0/tests/apm/topologyOpeningEvent-002.phpt b/mongodb-2.1.1/tests/apm/topologyOpeningEvent-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/apm/topologyOpeningEvent-002.phpt
rename to mongodb-2.1.1/tests/apm/topologyOpeningEvent-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/array-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/array-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/array-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/array-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/array-decodeError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/array-decodeError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/array-decodeError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/array-decodeError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/array-decodeError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/array-decodeError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/array-decodeError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/array-decodeError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/array-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/array-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/array-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/array-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/array-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/array-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/array-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/array-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/array-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/array-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/array-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/array-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/array-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/array-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/array-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/array-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/array-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/array-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/array-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/array-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-decodeError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-decodeError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-decodeError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-decodeError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-decodeError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-decodeError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-decodeError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-decodeError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-decodeError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-decodeError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-decodeError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-decodeError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-decodeError-005.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-decodeError-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-decodeError-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-decodeError-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-parseError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-parseError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-parseError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-parseError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-parseError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-parseError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-parseError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-parseError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-parseError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-parseError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-parseError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-parseError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-parseError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-parseError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-parseError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-parseError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-parseError-005.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-parseError-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-parseError-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-parseError-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-007.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-008.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-009.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-010.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-011.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-012.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-012.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-012.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-013.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-013.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-013.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-014.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-014.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-014.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-014.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-015.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-015.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-015.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-015.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-016.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-016.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-016.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-016.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-017.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-017.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-017.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-017.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-018.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-018.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-018.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-018.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-019.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-019.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-019.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-019.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/binary-valid-020.phpt b/mongodb-2.1.1/tests/bson-corpus/binary-valid-020.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/binary-valid-020.phpt
rename to mongodb-2.1.1/tests/bson-corpus/binary-valid-020.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/boolean-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/boolean-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/boolean-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/boolean-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/boolean-decodeError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/boolean-decodeError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/boolean-decodeError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/boolean-decodeError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/boolean-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/boolean-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/boolean-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/boolean-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/boolean-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/boolean-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/boolean-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/boolean-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/code-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-decodeError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/code-decodeError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-decodeError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-decodeError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-decodeError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/code-decodeError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-decodeError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-decodeError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-decodeError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/code-decodeError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-decodeError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-decodeError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-decodeError-005.phpt b/mongodb-2.1.1/tests/bson-corpus/code-decodeError-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-decodeError-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-decodeError-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-decodeError-006.phpt b/mongodb-2.1.1/tests/bson-corpus/code-decodeError-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-decodeError-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-decodeError-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-decodeError-007.phpt b/mongodb-2.1.1/tests/bson-corpus/code-decodeError-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-decodeError-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-decodeError-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/code-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/code-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/code-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/code-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/code-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/code-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-005.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-006.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-007.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-008.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-009.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-010.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-011.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-decodeError-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-decodeError-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/code_w_scope-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/code_w_scope-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/code_w_scope-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/code_w_scope-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/datetime-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/datetime-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/datetime-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/datetime-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/datetime-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/datetime-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/datetime-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/datetime-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/datetime-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/datetime-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/datetime-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/datetime-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/datetime-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/datetime-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/datetime-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/datetime-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/datetime-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/datetime-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/datetime-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/datetime-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/datetime-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/datetime-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/datetime-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/datetime-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbpointer-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/dbpointer-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbpointer-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbpointer-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbpointer-decodeError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/dbpointer-decodeError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbpointer-decodeError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbpointer-decodeError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbpointer-decodeError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/dbpointer-decodeError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbpointer-decodeError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbpointer-decodeError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbpointer-decodeError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/dbpointer-decodeError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbpointer-decodeError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbpointer-decodeError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbpointer-decodeError-005.phpt b/mongodb-2.1.1/tests/bson-corpus/dbpointer-decodeError-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbpointer-decodeError-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbpointer-decodeError-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbpointer-decodeError-006.phpt b/mongodb-2.1.1/tests/bson-corpus/dbpointer-decodeError-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbpointer-decodeError-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbpointer-decodeError-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbpointer-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/dbpointer-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbpointer-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbpointer-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbpointer-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/dbpointer-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbpointer-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbpointer-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbpointer-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/dbpointer-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbpointer-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbpointer-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbref-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/dbref-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbref-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbref-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbref-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/dbref-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbref-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbref-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbref-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/dbref-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbref-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbref-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbref-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/dbref-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbref-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbref-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbref-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/dbref-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbref-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbref-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbref-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/dbref-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbref-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbref-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbref-valid-007.phpt b/mongodb-2.1.1/tests/bson-corpus/dbref-valid-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbref-valid-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbref-valid-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbref-valid-008.phpt b/mongodb-2.1.1/tests/bson-corpus/dbref-valid-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbref-valid-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbref-valid-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/dbref-valid-009.phpt b/mongodb-2.1.1/tests/bson-corpus/dbref-valid-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/dbref-valid-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/dbref-valid-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-007.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-008.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-009.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-010.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-011.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-012.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-012.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-012.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-013.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-013.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-013.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-014.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-014.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-014.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-014.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-015.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-015.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-015.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-015.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-016.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-016.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-016.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-016.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-017.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-017.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-017.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-017.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-018.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-018.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-018.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-018.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-019.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-019.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-019.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-019.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-020.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-020.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-020.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-020.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-021.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-021.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-021.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-021.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-022.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-022.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-022.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-022.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-023.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-023.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-023.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-023.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-024.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-024.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-024.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-024.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-025.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-025.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-025.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-025.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-026.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-026.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-026.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-026.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-027.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-027.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-027.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-027.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-028.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-028.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-028.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-028.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-029.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-029.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-029.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-029.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-030.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-030.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-030.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-030.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-031.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-031.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-031.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-031.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-032.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-032.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-032.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-032.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-033.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-033.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-033.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-033.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-034.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-034.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-034.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-034.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-035.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-035.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-035.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-035.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-036.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-036.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-036.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-036.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-037.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-037.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-037.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-037.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-038.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-038.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-038.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-038.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-039.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-039.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-039.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-039.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-040.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-040.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-040.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-040.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-041.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-041.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-041.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-041.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-042.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-042.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-042.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-042.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-043.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-043.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-043.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-043.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-044.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-044.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-044.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-044.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-045.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-045.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-045.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-045.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-046.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-046.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-046.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-046.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-047.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-047.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-047.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-047.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-048.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-048.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-048.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-048.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-049.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-049.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-049.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-049.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-050.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-050.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-050.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-050.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-051.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-051.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-051.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-051.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-052.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-052.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-052.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-052.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-053.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-053.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-053.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-053.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-054.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-054.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-054.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-054.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-055.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-055.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-055.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-055.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-056.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-056.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-056.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-056.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-057.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-057.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-057.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-057.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-058.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-058.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-058.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-058.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-059.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-059.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-059.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-059.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-060.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-060.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-1-valid-060.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-1-valid-060.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-007.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-008.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-009.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-010.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-011.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-012.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-012.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-012.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-013.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-013.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-013.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-014.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-014.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-014.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-014.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-015.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-015.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-015.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-015.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-016.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-016.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-016.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-016.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-017.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-017.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-017.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-017.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-018.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-018.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-018.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-018.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-019.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-019.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-019.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-019.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-020.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-020.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-020.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-020.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-021.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-021.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-021.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-021.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-022.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-022.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-022.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-022.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-023.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-023.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-023.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-023.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-024.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-024.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-024.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-024.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-025.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-025.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-025.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-025.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-026.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-026.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-026.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-026.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-027.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-027.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-027.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-027.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-028.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-028.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-028.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-028.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-029.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-029.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-029.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-029.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-030.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-030.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-030.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-030.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-031.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-031.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-031.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-031.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-032.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-032.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-032.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-032.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-033.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-033.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-033.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-033.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-034.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-034.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-034.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-034.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-035.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-035.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-035.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-035.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-036.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-036.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-036.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-036.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-037.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-037.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-037.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-037.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-038.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-038.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-038.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-038.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-039.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-039.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-039.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-039.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-040.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-040.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-040.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-040.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-041.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-041.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-041.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-041.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-042.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-042.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-042.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-042.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-043.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-043.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-043.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-043.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-044.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-044.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-044.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-044.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-045.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-045.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-045.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-045.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-046.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-046.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-046.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-046.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-047.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-047.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-047.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-047.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-048.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-048.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-048.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-048.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-049.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-049.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-049.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-049.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-050.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-050.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-050.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-050.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-051.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-051.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-051.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-051.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-052.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-052.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-052.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-052.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-053.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-053.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-053.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-053.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-054.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-054.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-054.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-054.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-055.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-055.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-055.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-055.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-056.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-056.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-056.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-056.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-057.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-057.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-057.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-057.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-058.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-058.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-058.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-058.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-059.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-059.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-059.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-059.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-060.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-060.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-060.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-060.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-061.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-061.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-061.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-061.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-062.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-062.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-062.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-062.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-063.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-063.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-063.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-063.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-064.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-064.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-064.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-064.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-065.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-065.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-065.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-065.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-066.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-066.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-066.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-066.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-067.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-067.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-067.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-067.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-068.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-068.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-068.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-068.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-069.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-069.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-069.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-069.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-070.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-070.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-070.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-070.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-071.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-071.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-071.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-071.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-072.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-072.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-072.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-072.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-073.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-073.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-073.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-073.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-074.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-074.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-074.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-074.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-075.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-075.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-075.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-075.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-076.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-076.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-076.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-076.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-077.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-077.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-077.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-077.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-078.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-078.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-078.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-078.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-079.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-079.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-079.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-079.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-080.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-080.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-080.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-080.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-081.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-081.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-081.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-081.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-082.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-082.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-082.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-082.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-083.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-083.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-083.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-083.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-084.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-084.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-084.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-084.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-085.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-085.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-085.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-085.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-086.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-086.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-086.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-086.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-087.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-087.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-087.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-087.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-088.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-088.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-088.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-088.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-089.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-089.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-089.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-089.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-090.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-090.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-090.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-090.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-091.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-091.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-091.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-091.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-092.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-092.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-092.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-092.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-093.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-093.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-093.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-093.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-094.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-094.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-094.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-094.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-095.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-095.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-095.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-095.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-096.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-096.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-096.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-096.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-097.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-097.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-097.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-097.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-098.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-098.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-098.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-098.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-099.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-099.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-099.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-099.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-100.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-100.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-100.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-100.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-101.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-101.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-101.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-101.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-102.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-102.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-102.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-102.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-103.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-103.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-103.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-103.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-104.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-104.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-104.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-104.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-105.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-105.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-105.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-105.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-106.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-106.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-106.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-106.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-107.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-107.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-107.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-107.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-108.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-108.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-108.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-108.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-109.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-109.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-109.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-109.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-110.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-110.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-110.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-110.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-111.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-111.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-111.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-111.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-112.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-112.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-112.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-112.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-113.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-113.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-113.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-113.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-114.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-114.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-114.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-114.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-115.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-115.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-115.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-115.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-116.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-116.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-116.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-116.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-117.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-117.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-117.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-117.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-118.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-118.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-118.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-118.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-119.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-119.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-119.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-119.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-120.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-120.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-120.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-120.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-121.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-121.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-121.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-121.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-122.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-122.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-122.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-122.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-123.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-123.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-123.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-123.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-124.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-124.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-124.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-124.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-125.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-125.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-125.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-125.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-126.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-126.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-126.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-126.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-127.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-127.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-127.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-127.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-128.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-128.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-128.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-128.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-129.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-129.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-129.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-129.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-130.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-130.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-130.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-130.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-131.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-131.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-131.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-131.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-132.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-132.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-132.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-132.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-133.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-133.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-133.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-133.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-134.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-134.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-134.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-134.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-135.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-135.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-135.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-135.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-136.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-136.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-136.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-136.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-137.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-137.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-137.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-137.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-138.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-138.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-138.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-138.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-139.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-139.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-139.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-139.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-140.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-140.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-140.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-140.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-141.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-141.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-141.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-141.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-142.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-142.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-142.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-142.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-143.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-143.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-143.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-143.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-144.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-144.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-144.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-144.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-145.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-145.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-145.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-145.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-146.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-146.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-146.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-146.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-147.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-147.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-147.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-147.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-148.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-148.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-148.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-148.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-149.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-149.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-149.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-149.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-150.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-150.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-150.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-150.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-151.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-151.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-151.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-151.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-152.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-152.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-152.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-152.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-153.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-153.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-153.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-153.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-154.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-154.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-154.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-154.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-155.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-155.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-155.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-155.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-156.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-156.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-156.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-156.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-157.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-157.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-2-valid-157.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-2-valid-157.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-007.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-008.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-009.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-010.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-011.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-012.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-012.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-012.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-013.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-013.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-013.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-014.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-014.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-014.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-014.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-015.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-015.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-015.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-015.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-016.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-016.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-016.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-016.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-017.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-017.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-017.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-017.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-018.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-018.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-018.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-018.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-019.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-019.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-019.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-019.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-020.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-020.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-020.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-020.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-021.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-021.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-021.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-021.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-022.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-022.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-022.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-022.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-023.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-023.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-023.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-023.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-024.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-024.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-024.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-024.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-025.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-025.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-025.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-025.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-026.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-026.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-026.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-026.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-027.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-027.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-027.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-027.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-028.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-028.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-028.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-028.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-029.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-029.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-029.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-029.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-030.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-030.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-030.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-030.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-031.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-031.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-031.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-031.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-032.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-032.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-032.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-032.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-033.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-033.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-033.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-033.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-034.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-034.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-034.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-034.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-035.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-035.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-035.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-035.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-036.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-036.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-036.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-036.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-037.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-037.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-037.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-037.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-038.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-038.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-038.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-038.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-039.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-039.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-039.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-039.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-040.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-040.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-040.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-040.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-041.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-041.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-041.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-041.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-042.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-042.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-042.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-042.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-043.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-043.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-043.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-043.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-044.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-044.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-044.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-044.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-045.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-045.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-045.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-045.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-046.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-046.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-046.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-046.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-047.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-047.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-047.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-047.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-048.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-048.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-048.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-048.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-049.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-049.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-049.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-049.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-050.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-050.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-050.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-050.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-051.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-051.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-051.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-051.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-052.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-052.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-052.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-052.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-053.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-053.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-053.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-053.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-054.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-054.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-054.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-054.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-055.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-055.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-055.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-055.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-056.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-056.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-056.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-056.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-057.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-057.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-057.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-057.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-058.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-058.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-058.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-058.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-059.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-059.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-059.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-059.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-060.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-060.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-060.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-060.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-061.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-061.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-061.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-061.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-062.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-062.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-062.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-062.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-063.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-063.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-063.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-063.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-064.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-064.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-064.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-064.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-065.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-065.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-065.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-065.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-066.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-066.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-066.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-066.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-067.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-067.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-067.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-067.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-068.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-068.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-068.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-068.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-069.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-069.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-069.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-069.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-070.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-070.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-070.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-070.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-071.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-071.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-071.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-071.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-072.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-072.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-072.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-072.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-073.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-073.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-073.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-073.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-074.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-074.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-074.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-074.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-075.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-075.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-075.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-075.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-076.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-076.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-076.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-076.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-077.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-077.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-077.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-077.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-078.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-078.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-078.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-078.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-079.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-079.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-079.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-079.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-080.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-080.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-080.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-080.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-081.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-081.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-081.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-081.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-082.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-082.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-082.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-082.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-083.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-083.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-083.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-083.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-084.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-084.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-084.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-084.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-085.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-085.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-085.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-085.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-086.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-086.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-086.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-086.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-087.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-087.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-087.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-087.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-088.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-088.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-088.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-088.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-089.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-089.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-089.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-089.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-090.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-090.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-090.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-090.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-091.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-091.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-091.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-091.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-092.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-092.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-092.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-092.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-093.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-093.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-093.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-093.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-094.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-094.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-094.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-094.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-095.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-095.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-095.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-095.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-096.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-096.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-096.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-096.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-097.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-097.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-097.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-097.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-098.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-098.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-098.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-098.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-099.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-099.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-099.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-099.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-100.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-100.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-100.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-100.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-101.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-101.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-101.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-101.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-102.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-102.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-102.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-102.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-103.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-103.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-103.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-103.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-104.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-104.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-104.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-104.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-105.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-105.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-105.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-105.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-106.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-106.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-106.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-106.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-107.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-107.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-107.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-107.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-108.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-108.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-108.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-108.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-109.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-109.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-109.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-109.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-110.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-110.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-110.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-110.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-111.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-111.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-111.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-111.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-112.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-112.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-112.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-112.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-113.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-113.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-113.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-113.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-114.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-114.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-114.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-114.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-115.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-115.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-115.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-115.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-116.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-116.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-116.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-116.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-117.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-117.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-117.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-117.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-118.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-118.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-118.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-118.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-119.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-119.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-119.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-119.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-120.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-120.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-120.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-120.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-121.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-121.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-121.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-121.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-122.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-122.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-122.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-122.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-123.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-123.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-123.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-123.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-124.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-124.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-124.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-124.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-125.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-125.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-125.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-125.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-126.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-126.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-126.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-126.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-127.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-127.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-127.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-127.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-128.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-128.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-128.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-128.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-129.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-129.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-129.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-129.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-130.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-130.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-130.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-130.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-131.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-131.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-131.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-131.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-132.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-132.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-132.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-132.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-133.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-133.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-133.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-133.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-134.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-134.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-134.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-134.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-135.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-135.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-135.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-135.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-136.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-136.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-136.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-136.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-137.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-137.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-137.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-137.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-138.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-138.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-138.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-138.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-139.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-139.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-139.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-139.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-140.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-140.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-140.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-140.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-141.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-141.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-141.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-141.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-142.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-142.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-142.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-142.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-143.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-143.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-143.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-143.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-144.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-144.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-144.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-144.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-145.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-145.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-145.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-145.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-146.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-146.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-146.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-146.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-147.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-147.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-147.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-147.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-148.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-148.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-148.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-148.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-149.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-149.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-149.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-149.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-150.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-150.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-150.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-150.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-151.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-151.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-151.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-151.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-152.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-152.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-152.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-152.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-153.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-153.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-153.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-153.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-154.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-154.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-154.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-154.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-155.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-155.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-155.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-155.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-156.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-156.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-156.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-156.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-157.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-157.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-157.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-157.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-158.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-158.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-158.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-158.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-159.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-159.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-159.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-159.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-160.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-160.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-160.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-160.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-161.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-161.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-161.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-161.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-162.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-162.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-162.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-162.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-163.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-163.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-163.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-163.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-164.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-164.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-164.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-164.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-165.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-165.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-165.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-165.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-166.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-166.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-166.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-166.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-167.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-167.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-167.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-167.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-168.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-168.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-168.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-168.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-169.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-169.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-169.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-169.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-170.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-170.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-170.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-170.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-171.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-171.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-171.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-171.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-172.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-172.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-172.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-172.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-173.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-173.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-173.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-173.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-174.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-174.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-174.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-174.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-175.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-175.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-175.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-175.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-176.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-176.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-176.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-176.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-177.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-177.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-177.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-177.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-178.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-178.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-178.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-178.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-179.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-179.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-179.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-179.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-180.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-180.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-180.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-180.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-181.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-181.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-181.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-181.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-182.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-182.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-182.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-182.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-183.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-183.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-183.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-183.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-184.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-184.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-184.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-184.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-185.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-185.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-185.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-185.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-186.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-186.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-186.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-186.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-187.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-187.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-187.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-187.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-188.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-188.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-188.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-188.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-189.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-189.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-189.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-189.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-190.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-190.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-190.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-190.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-191.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-191.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-191.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-191.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-192.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-192.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-192.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-192.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-193.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-193.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-193.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-193.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-194.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-194.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-194.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-194.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-195.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-195.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-195.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-195.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-196.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-196.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-196.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-196.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-197.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-197.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-197.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-197.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-198.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-198.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-198.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-198.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-199.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-199.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-199.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-199.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-200.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-200.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-200.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-200.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-201.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-201.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-201.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-201.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-202.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-202.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-202.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-202.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-203.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-203.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-203.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-203.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-204.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-204.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-204.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-204.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-205.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-205.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-205.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-205.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-206.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-206.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-206.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-206.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-207.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-207.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-207.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-207.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-208.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-208.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-208.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-208.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-209.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-209.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-209.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-209.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-210.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-210.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-210.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-210.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-211.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-211.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-211.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-211.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-212.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-212.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-212.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-212.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-213.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-213.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-213.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-213.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-214.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-214.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-214.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-214.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-215.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-215.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-215.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-215.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-216.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-216.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-216.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-216.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-217.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-217.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-217.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-217.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-218.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-218.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-218.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-218.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-219.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-219.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-219.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-219.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-220.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-220.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-220.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-220.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-221.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-221.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-221.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-221.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-222.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-222.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-222.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-222.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-223.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-223.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-223.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-223.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-224.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-224.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-224.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-224.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-225.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-225.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-225.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-225.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-226.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-226.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-226.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-226.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-227.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-227.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-227.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-227.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-228.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-228.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-228.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-228.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-229.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-229.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-229.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-229.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-230.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-230.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-230.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-230.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-231.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-231.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-231.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-231.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-232.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-232.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-232.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-232.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-233.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-233.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-233.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-233.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-234.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-234.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-234.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-234.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-235.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-235.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-235.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-235.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-236.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-236.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-236.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-236.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-237.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-237.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-237.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-237.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-238.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-238.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-238.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-238.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-239.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-239.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-239.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-239.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-240.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-240.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-240.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-240.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-241.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-241.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-241.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-241.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-242.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-242.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-242.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-242.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-243.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-243.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-243.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-243.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-244.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-244.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-244.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-244.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-245.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-245.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-245.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-245.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-246.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-246.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-246.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-246.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-247.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-247.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-247.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-247.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-248.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-248.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-248.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-248.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-249.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-249.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-249.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-249.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-250.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-250.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-250.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-250.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-251.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-251.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-251.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-251.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-252.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-252.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-252.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-252.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-253.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-253.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-253.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-253.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-254.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-254.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-254.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-254.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-255.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-255.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-255.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-255.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-256.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-256.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-256.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-256.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-257.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-257.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-257.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-257.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-258.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-258.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-258.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-258.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-259.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-259.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-259.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-259.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-260.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-260.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-260.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-260.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-261.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-261.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-261.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-261.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-262.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-262.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-262.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-262.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-263.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-263.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-263.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-263.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-264.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-264.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-264.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-264.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-265.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-265.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-265.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-265.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-266.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-266.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-266.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-266.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-267.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-267.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-267.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-267.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-268.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-268.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-268.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-268.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-269.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-269.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-269.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-269.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-270.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-270.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-270.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-270.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-271.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-271.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-271.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-271.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-272.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-272.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-272.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-272.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-273.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-273.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-273.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-273.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-274.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-274.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-274.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-274.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-275.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-275.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-275.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-275.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-276.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-276.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-276.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-276.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-277.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-277.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-277.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-277.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-278.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-278.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-278.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-278.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-279.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-279.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-279.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-279.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-280.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-280.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-280.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-280.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-281.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-281.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-281.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-281.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-282.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-282.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-282.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-282.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-283.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-283.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-283.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-283.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-284.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-284.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-284.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-284.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-285.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-285.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-285.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-285.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-286.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-286.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-286.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-286.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-287.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-287.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-287.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-287.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-288.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-288.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-288.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-288.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-289.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-289.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-289.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-289.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-290.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-290.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-290.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-290.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-291.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-291.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-291.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-291.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-292.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-292.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-292.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-292.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-293.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-293.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-293.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-293.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-294.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-294.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-294.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-294.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-295.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-295.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-295.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-295.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-296.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-296.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-296.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-296.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-297.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-297.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-297.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-297.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-298.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-298.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-298.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-298.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-299.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-299.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-299.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-299.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-300.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-300.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-300.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-300.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-301.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-301.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-301.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-301.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-302.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-302.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-302.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-302.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-303.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-303.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-303.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-303.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-304.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-304.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-304.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-304.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-305.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-305.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-305.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-305.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-306.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-306.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-306.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-306.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-307.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-307.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-307.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-307.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-308.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-308.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-3-valid-308.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-3-valid-308.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-005.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-006.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-007.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-008.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-009.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-010.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-011.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-012.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-012.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-012.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-013.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-013.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-013.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-014.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-014.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-014.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-014.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-015.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-015.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-015.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-015.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-016.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-016.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-016.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-016.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-017.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-017.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-017.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-017.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-018.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-018.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-018.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-018.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-019.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-019.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-019.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-019.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-020.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-020.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-parseError-020.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-parseError-020.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-007.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-008.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-009.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-010.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-011.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-012.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-012.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-012.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-013.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-4-valid-013.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-4-valid-013.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-007.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-008.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-009.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-010.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-011.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-012.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-012.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-012.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-013.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-013.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-013.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-014.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-014.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-014.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-014.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-015.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-015.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-015.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-015.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-016.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-016.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-016.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-016.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-017.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-017.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-017.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-017.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-018.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-018.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-018.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-018.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-019.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-019.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-019.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-019.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-020.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-020.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-020.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-020.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-021.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-021.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-021.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-021.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-022.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-022.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-022.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-022.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-023.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-023.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-023.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-023.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-024.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-024.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-024.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-024.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-025.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-025.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-025.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-025.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-026.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-026.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-026.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-026.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-027.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-027.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-027.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-027.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-028.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-028.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-028.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-028.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-029.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-029.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-029.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-029.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-030.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-030.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-030.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-030.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-031.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-031.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-031.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-031.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-032.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-032.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-032.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-032.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-033.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-033.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-033.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-033.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-034.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-034.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-034.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-034.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-035.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-035.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-035.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-035.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-036.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-036.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-036.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-036.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-037.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-037.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-037.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-037.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-038.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-038.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-038.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-038.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-039.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-039.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-039.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-039.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-040.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-040.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-040.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-040.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-041.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-041.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-041.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-041.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-042.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-042.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-042.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-042.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-043.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-043.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-043.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-043.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-044.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-044.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-044.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-044.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-045.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-045.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-045.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-045.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-046.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-046.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-046.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-046.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-047.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-047.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-047.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-047.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-048.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-048.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-048.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-048.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-049.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-049.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-049.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-049.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-050.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-050.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-050.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-050.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-051.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-051.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-051.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-051.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-052.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-052.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-052.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-052.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-053.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-053.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-053.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-053.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-054.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-054.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-054.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-054.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-055.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-055.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-055.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-055.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-056.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-056.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-056.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-056.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-057.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-057.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-057.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-057.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-058.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-058.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-058.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-058.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-059.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-059.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-059.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-059.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-060.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-060.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-060.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-060.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-061.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-061.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-061.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-061.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-062.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-062.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-062.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-062.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-063.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-063.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-063.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-063.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-064.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-064.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-064.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-064.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-065.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-065.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-065.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-065.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-066.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-066.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-066.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-066.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-067.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-067.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-5-valid-067.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-5-valid-067.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-005.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-006.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-007.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-008.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-009.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-010.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-011.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-012.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-012.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-012.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-013.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-013.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-013.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-014.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-014.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-014.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-014.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-015.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-015.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-015.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-015.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-016.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-016.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-016.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-016.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-017.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-017.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-017.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-017.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-018.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-018.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-018.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-018.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-019.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-019.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-019.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-019.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-020.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-020.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-020.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-020.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-021.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-021.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-021.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-021.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-022.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-022.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-022.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-022.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-023.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-023.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-023.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-023.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-024.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-024.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-024.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-024.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-025.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-025.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-025.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-025.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-026.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-026.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-026.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-026.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-027.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-027.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-027.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-027.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-028.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-028.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-028.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-028.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-029.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-029.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-029.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-029.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-030.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-030.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-030.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-030.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-031.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-031.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-6-parseError-031.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-6-parseError-031.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-005.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-006.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-007.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-008.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-009.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-010.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-011.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-012.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-012.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-012.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-013.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-013.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-013.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-014.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-014.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-014.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-014.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-015.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-015.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-015.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-015.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-016.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-016.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-016.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-016.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-017.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-017.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-017.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-017.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-018.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-018.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-018.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-018.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-019.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-019.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-019.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-019.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-020.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-020.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-020.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-020.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-021.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-021.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-021.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-021.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-022.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-022.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-022.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-022.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-023.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-023.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-023.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-023.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-024.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-024.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-024.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-024.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-025.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-025.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-025.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-025.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-026.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-026.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-026.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-026.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-027.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-027.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-027.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-027.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-028.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-028.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-028.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-028.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-029.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-029.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-029.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-029.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-030.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-030.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-030.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-030.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-031.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-031.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-031.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-031.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-032.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-032.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-032.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-032.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-033.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-033.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-033.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-033.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-034.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-034.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-034.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-034.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-035.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-035.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-035.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-035.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-036.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-036.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-036.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-036.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-037.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-037.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-037.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-037.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-038.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-038.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-038.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-038.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-039.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-039.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-039.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-039.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-040.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-040.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-040.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-040.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-041.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-041.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-041.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-041.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-042.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-042.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-042.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-042.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-043.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-043.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-043.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-043.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-044.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-044.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-044.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-044.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-045.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-045.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-045.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-045.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-046.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-046.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-046.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-046.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-047.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-047.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-047.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-047.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-048.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-048.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-048.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-048.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-049.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-049.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-049.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-049.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-050.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-050.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-050.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-050.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-051.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-051.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-051.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-051.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-052.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-052.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-052.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-052.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-053.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-053.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-053.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-053.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-054.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-054.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-054.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-054.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-055.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-055.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-055.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-055.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-056.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-056.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-056.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-056.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-057.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-057.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-057.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-057.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-058.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-058.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-058.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-058.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-059.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-059.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-059.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-059.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-060.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-060.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-060.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-060.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-061.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-061.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-061.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-061.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-062.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-062.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-062.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-062.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-063.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-063.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-063.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-063.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-064.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-064.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-064.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-064.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-065.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-065.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-065.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-065.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-066.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-066.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-066.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-066.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-067.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-067.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-067.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-067.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-068.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-068.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-068.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-068.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-069.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-069.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-069.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-069.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-070.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-070.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-070.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-070.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-071.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-071.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-071.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-071.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-072.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-072.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-072.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-072.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-073.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-073.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-073.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-073.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-074.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-074.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-074.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-074.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-075.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-075.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-075.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-075.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-076.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-076.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-076.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-076.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-077.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-077.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-077.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-077.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-078.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-078.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-078.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-078.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-079.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-079.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-079.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-079.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-080.phpt b/mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-080.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/decimal128-7-parseError-080.phpt
rename to mongodb-2.1.1/tests/bson-corpus/decimal128-7-parseError-080.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/document-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/document-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/document-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/document-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/document-decodeError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/document-decodeError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/document-decodeError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/document-decodeError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/document-decodeError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/document-decodeError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/document-decodeError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/document-decodeError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/document-decodeError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/document-decodeError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/document-decodeError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/document-decodeError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/document-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/document-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/document-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/document-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/document-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/document-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/document-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/document-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/document-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/document-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/document-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/document-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/document-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/document-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/document-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/document-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/document-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/document-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/document-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/document-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/document-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/document-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/document-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/document-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/document-valid-007.phpt b/mongodb-2.1.1/tests/bson-corpus/document-valid-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/document-valid-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/document-valid-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/double-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/double-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/double-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/double-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/double-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/double-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/double-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-valid-007.phpt b/mongodb-2.1.1/tests/bson-corpus/double-valid-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-valid-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-valid-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-valid-008.phpt b/mongodb-2.1.1/tests/bson-corpus/double-valid-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-valid-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-valid-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-valid-009.phpt b/mongodb-2.1.1/tests/bson-corpus/double-valid-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-valid-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-valid-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-valid-010.phpt b/mongodb-2.1.1/tests/bson-corpus/double-valid-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-valid-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-valid-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-valid-011.phpt b/mongodb-2.1.1/tests/bson-corpus/double-valid-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-valid-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-valid-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/double-valid-012.phpt b/mongodb-2.1.1/tests/bson-corpus/double-valid-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/double-valid-012.phpt
rename to mongodb-2.1.1/tests/bson-corpus/double-valid-012.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/int32-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/int32-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/int32-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/int32-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/int32-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/int32-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/int32-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/int32-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/int32-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/int32-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/int32-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/int32-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/int32-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/int32-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/int32-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/int32-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/int32-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/int32-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/int32-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/int32-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/int32-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/int32-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/int32-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/int32-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/int64-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/int64-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/int64-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/int64-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/int64-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/int64-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/int64-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/int64-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/int64-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/int64-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/int64-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/int64-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/int64-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/int64-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/int64-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/int64-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/int64-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/int64-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/int64-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/int64-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/int64-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/int64-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/int64-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/int64-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/maxkey-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/maxkey-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/maxkey-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/maxkey-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/minkey-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/minkey-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/minkey-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/minkey-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/multi-type-deprecated-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/multi-type-deprecated-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/multi-type-deprecated-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/multi-type-deprecated-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/multi-type-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/multi-type-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/multi-type-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/multi-type-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/null-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/null-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/null-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/null-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/oid-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/oid-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/oid-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/oid-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/oid-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/oid-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/oid-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/oid-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/oid-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/oid-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/oid-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/oid-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/oid-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/oid-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/oid-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/oid-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/regex-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/regex-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/regex-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/regex-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/regex-decodeError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/regex-decodeError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/regex-decodeError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/regex-decodeError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/regex-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/regex-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/regex-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/regex-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/regex-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/regex-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/regex-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/regex-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/regex-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/regex-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/regex-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/regex-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/regex-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/regex-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/regex-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/regex-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/regex-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/regex-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/regex-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/regex-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/regex-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/regex-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/regex-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/regex-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/regex-valid-007.phpt b/mongodb-2.1.1/tests/bson-corpus/regex-valid-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/regex-valid-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/regex-valid-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/regex-valid-008.phpt b/mongodb-2.1.1/tests/bson-corpus/regex-valid-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/regex-valid-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/regex-valid-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/regex-valid-009.phpt b/mongodb-2.1.1/tests/bson-corpus/regex-valid-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/regex-valid-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/regex-valid-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/string-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-decodeError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/string-decodeError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-decodeError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-decodeError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-decodeError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/string-decodeError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-decodeError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-decodeError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-decodeError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/string-decodeError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-decodeError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-decodeError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-decodeError-005.phpt b/mongodb-2.1.1/tests/bson-corpus/string-decodeError-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-decodeError-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-decodeError-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-decodeError-006.phpt b/mongodb-2.1.1/tests/bson-corpus/string-decodeError-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-decodeError-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-decodeError-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-decodeError-007.phpt b/mongodb-2.1.1/tests/bson-corpus/string-decodeError-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-decodeError-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-decodeError-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/string-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/string-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/string-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/string-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/string-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/string-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/string-valid-007.phpt b/mongodb-2.1.1/tests/bson-corpus/string-valid-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/string-valid-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/string-valid-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-005.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-006.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-007.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-decodeError-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-decodeError-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-valid-005.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-valid-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-valid-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-valid-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/symbol-valid-006.phpt b/mongodb-2.1.1/tests/bson-corpus/symbol-valid-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/symbol-valid-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/symbol-valid-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/timestamp-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/timestamp-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/timestamp-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/timestamp-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/timestamp-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/timestamp-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/timestamp-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/timestamp-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/timestamp-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/timestamp-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/timestamp-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/timestamp-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/timestamp-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/timestamp-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/timestamp-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/timestamp-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/timestamp-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/timestamp-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/timestamp-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/timestamp-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-005.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-006.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-007.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-008.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-009.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-010.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-011.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-012.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-012.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-012.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-013.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-013.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-013.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-014.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-014.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-014.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-014.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-decodeError-015.phpt b/mongodb-2.1.1/tests/bson-corpus/top-decodeError-015.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-decodeError-015.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-decodeError-015.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-001.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-002.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-003.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-004.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-005.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-005.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-005.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-006.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-006.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-006.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-007.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-007.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-007.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-008.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-008.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-008.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-009.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-009.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-009.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-010.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-010.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-010.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-011.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-011.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-011.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-012.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-012.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-012.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-013.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-013.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-013.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-014.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-014.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-014.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-014.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-015.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-015.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-015.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-015.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-016.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-016.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-016.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-016.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-017.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-017.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-017.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-017.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-018.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-018.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-018.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-018.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-019.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-019.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-019.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-019.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-020.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-020.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-020.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-020.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-021.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-021.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-021.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-021.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-022.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-022.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-022.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-022.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-023.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-023.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-023.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-023.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-024.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-024.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-024.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-024.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-025.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-025.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-025.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-025.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-026.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-026.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-026.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-026.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-027.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-027.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-027.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-027.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-028.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-028.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-028.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-028.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-029.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-029.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-029.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-029.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-030.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-030.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-030.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-030.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-031.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-031.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-031.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-031.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-032.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-032.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-032.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-032.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-033.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-033.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-033.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-033.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-034.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-034.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-034.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-034.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-035.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-035.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-035.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-035.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-036.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-036.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-036.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-036.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-037.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-037.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-037.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-037.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-038.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-038.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-038.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-038.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-039.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-039.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-039.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-039.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-040.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-040.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-040.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-040.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-041.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-041.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-041.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-041.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-042.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-042.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-042.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-042.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-043.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-043.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-043.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-043.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-parseError-044.phpt b/mongodb-2.1.1/tests/bson-corpus/top-parseError-044.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-parseError-044.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-parseError-044.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/top-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-valid-002.phpt b/mongodb-2.1.1/tests/bson-corpus/top-valid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-valid-002.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-valid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-valid-003.phpt b/mongodb-2.1.1/tests/bson-corpus/top-valid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-valid-003.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-valid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/top-valid-004.phpt b/mongodb-2.1.1/tests/bson-corpus/top-valid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/top-valid-004.phpt
rename to mongodb-2.1.1/tests/bson-corpus/top-valid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson-corpus/undefined-valid-001.phpt b/mongodb-2.1.1/tests/bson-corpus/undefined-valid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson-corpus/undefined-valid-001.phpt
rename to mongodb-2.1.1/tests/bson-corpus/undefined-valid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-001.phpt b/mongodb-2.1.1/tests/bson/bson-binary-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-002.phpt b/mongodb-2.1.1/tests/bson/bson-binary-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-binary-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-binary-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-binary-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-compare-002.phpt b/mongodb-2.1.1/tests/bson/bson-binary-compare-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-compare-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-compare-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-constants.phpt b/mongodb-2.1.1/tests/bson/bson-binary-constants.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-constants.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-constants.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-binary-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-get_properties-002.phpt b/mongodb-2.1.1/tests/bson/bson-binary-get_properties-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-get_properties-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-get_properties-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-binary-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-jsonserialize-002.phpt b/mongodb-2.1.1/tests/bson/bson-binary-jsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-jsonserialize-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-jsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-serialization-002.phpt b/mongodb-2.1.1/tests/bson/bson-binary-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-serialization-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-serialization_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-binary-serialization_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-serialization_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-serialization_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-serialization_error-005.phpt b/mongodb-2.1.1/tests/bson/bson-binary-serialization_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-serialization_error-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-serialization_error-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-serialization_error-006.phpt b/mongodb-2.1.1/tests/bson/bson-binary-serialization_error-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-serialization_error-006.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-serialization_error-006.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-binary-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-set_state_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-binary-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-set_state_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-binary-set_state_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-set_state_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-set_state_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-set_state_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-binary-set_state_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-set_state_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-set_state_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary-tostring-001.phpt b/mongodb-2.1.1/tests/bson/bson-binary-tostring-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary-tostring-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary-tostring-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-binary_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-binary_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-binary_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binary_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-binary_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binary_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-binary_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-binaryinterface-001.phpt b/mongodb-2.1.1/tests/bson/bson-binaryinterface-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-binaryinterface-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-binaryinterface-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-001.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-002.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-get_properties-002.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-get_properties-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-get_properties-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-get_properties-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-jsonserialize-003.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-jsonserialize-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-jsonserialize-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-jsonserialize-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-serialization-002.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-serialization-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-serialization_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-serialization_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-serialization_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-serialization_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-serialization_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-serialization_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-serialization_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-serialization_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer-tostring-001.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer-tostring-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer-tostring-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer-tostring-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-dbpointer_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-dbpointer_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-dbpointer_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-dbpointer_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-001.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-002.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-003.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-004.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-get_properties-002.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-get_properties-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-get_properties-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-get_properties-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-jsonserialize-002.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-jsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-jsonserialize-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-jsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-serialization-002.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-serialization-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-serialization_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-serialization_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-serialization_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-serialization_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-serialization_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-serialization_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-serialization_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-serialization_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-set_state_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128-set_state_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128-set_state_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128-set_state_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128-set_state_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decimal128interface-001.phpt b/mongodb-2.1.1/tests/bson/bson-decimal128interface-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decimal128interface-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-decimal128interface-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decode-001.phpt b/mongodb-2.1.1/tests/bson/bson-decode-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decode-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-decode-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-decode-002.phpt b/mongodb-2.1.1/tests/bson/bson-decode-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-decode-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-decode-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-array-access-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-array-access-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-array-access-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-array-access-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-array-access-002.phpt b/mongodb-2.1.1/tests/bson/bson-document-array-access-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-array-access-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-array-access-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-array-access-003.phpt b/mongodb-2.1.1/tests/bson/bson-document-array-access-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-array-access-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-array-access-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-array-access-004.phpt b/mongodb-2.1.1/tests/bson/bson-document-array-access-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-array-access-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-array-access-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-array-access-005.phpt b/mongodb-2.1.1/tests/bson/bson-document-array-access-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-array-access-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-array-access-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-array-access_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-array-access_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-array-access_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-array-access_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-array-access_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-document-array-access_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-array-access_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-array-access_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-array-access_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-document-array-access_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-array-access_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-array-access_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-array-access_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-document-array-access_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-array-access_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-array-access_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-debug-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-debug-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromBSON-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromBSON-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromBSON-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromBSON-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromBSON_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromBSON_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromBSON_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromBSON_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromBSON_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromBSON_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromBSON_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromBSON_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromBSON_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromBSON_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromBSON_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromBSON_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromBSON_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromBSON_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromBSON_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromBSON_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromBSON_error-005.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromBSON_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromBSON_error-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromBSON_error-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromJSON-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromJSON-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromJSON-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromJSON-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromJSON-002.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromJSON-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromJSON-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromJSON-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromJSON_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromJSON_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromJSON_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromJSON_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromPHP-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromPHP-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromPHP-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromPHP-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromPHP-002.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromPHP-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromPHP-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromPHP-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromPHP-003.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromPHP-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromPHP-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromPHP-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-fromPHP-004.phpt b/mongodb-2.1.1/tests/bson/bson-document-fromPHP-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-fromPHP-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-fromPHP-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-get-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-get-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-get-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-get-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-get-002.phpt b/mongodb-2.1.1/tests/bson/bson-document-get-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-get-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-get-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-get-003.phpt b/mongodb-2.1.1/tests/bson/bson-document-get-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-get-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-get-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-getIterator-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-getIterator-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-getIterator-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-getIterator-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-has-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-has-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-has-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-has-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-property-access-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-property-access-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-property-access-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-property-access-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-property-access-002.phpt b/mongodb-2.1.1/tests/bson/bson-document-property-access-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-property-access-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-property-access-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-property-access_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-property-access_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-property-access_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-property-access_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-serialization-002.phpt b/mongodb-2.1.1/tests/bson/bson-document-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-serialization-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-set_state_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toCanonicalJSON-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-toCanonicalJSON-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toCanonicalJSON-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toCanonicalJSON-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toCanonicalJSON-002.phpt b/mongodb-2.1.1/tests/bson/bson-document-toCanonicalJSON-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toCanonicalJSON-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toCanonicalJSON-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toPHP-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-toPHP-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toPHP-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toPHP-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toPHP-002.phpt b/mongodb-2.1.1/tests/bson/bson-document-toPHP-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toPHP-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toPHP-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toPHP-003.phpt b/mongodb-2.1.1/tests/bson/bson-document-toPHP-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toPHP-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toPHP-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toPHP-007.phpt b/mongodb-2.1.1/tests/bson/bson-document-toPHP-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toPHP-007.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toPHP-007.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toPHP-008.phpt b/mongodb-2.1.1/tests/bson/bson-document-toPHP-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toPHP-008.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toPHP-008.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toPHP-009.phpt b/mongodb-2.1.1/tests/bson/bson-document-toPHP-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toPHP-009.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toPHP-009.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toPHP-010.phpt b/mongodb-2.1.1/tests/bson/bson-document-toPHP-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toPHP-010.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toPHP-010.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toPHP-011.phpt b/mongodb-2.1.1/tests/bson/bson-document-toPHP-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toPHP-011.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toPHP-011.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toPHP-012.phpt b/mongodb-2.1.1/tests/bson/bson-document-toPHP-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toPHP-012.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toPHP-012.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toRelaxedJSON-001.phpt b/mongodb-2.1.1/tests/bson/bson-document-toRelaxedJSON-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toRelaxedJSON-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toRelaxedJSON-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-toRelaxedJSON-002.phpt b/mongodb-2.1.1/tests/bson/bson-document-toRelaxedJSON-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-toRelaxedJSON-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-toRelaxedJSON-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-document-unserialize_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-document-unserialize_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-document-unserialize_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-document-unserialize_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-encode-001.phpt b/mongodb-2.1.1/tests/bson/bson-encode-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-encode-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-encode-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-encode-002.phpt b/mongodb-2.1.1/tests/bson/bson-encode-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-encode-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-encode-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-encode-003.phpt b/mongodb-2.1.1/tests/bson/bson-encode-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-encode-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-encode-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-encode-004.phpt b/mongodb-2.1.1/tests/bson/bson-encode-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-encode-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-encode-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-encode-005.phpt b/mongodb-2.1.1/tests/bson/bson-encode-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-encode-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-encode-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-enum-001.phpt b/mongodb-2.1.1/tests/bson/bson-enum-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-enum-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-enum-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-enum-002.phpt b/mongodb-2.1.1/tests/bson/bson-enum-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-enum-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-enum-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-enum-003.phpt b/mongodb-2.1.1/tests/bson/bson-enum-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-enum-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-enum-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-enum_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-enum_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-enum_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-enum_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-enum_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-enum_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-enum_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-enum_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-enum_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-enum_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-enum_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-enum_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-enum_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-enum_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-enum_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-enum_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-enum_error-005.phpt b/mongodb-2.1.1/tests/bson/bson-enum_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-enum_error-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-enum_error-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-enum_error-006.phpt b/mongodb-2.1.1/tests/bson/bson-enum_error-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-enum_error-006.phpt
rename to mongodb-2.1.1/tests/bson/bson-enum_error-006.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-generate-document-id.phpt b/mongodb-2.1.1/tests/bson/bson-generate-document-id.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-generate-document-id.phpt
rename to mongodb-2.1.1/tests/bson/bson-generate-document-id.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-002.phpt b/mongodb-2.1.1/tests/bson/bson-int64-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-003.phpt b/mongodb-2.1.1/tests/bson/bson-int64-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-cast-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-cast-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-cast-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-cast-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-cast-002.phpt b/mongodb-2.1.1/tests/bson/bson-int64-cast-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-cast-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-cast-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-cast-003.phpt b/mongodb-2.1.1/tests/bson/bson-int64-cast-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-cast-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-cast-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-int64-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-compare-002.phpt b/mongodb-2.1.1/tests/bson/bson-int64-compare-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-compare-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-compare-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-compare-003.phpt b/mongodb-2.1.1/tests/bson/bson-int64-compare-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-compare-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-compare-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-compare-004.phpt b/mongodb-2.1.1/tests/bson/bson-int64-compare-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-compare-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-compare-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-compare-005.phpt b/mongodb-2.1.1/tests/bson/bson-int64-compare-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-compare-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-compare-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-ctor-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-ctor-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-ctor-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-ctor-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-ctor-002.phpt b/mongodb-2.1.1/tests/bson/bson-int64-ctor-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-ctor-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-ctor-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-ctor_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-ctor_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-ctor_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-ctor_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-debug-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-debug-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-get_properties-002.phpt b/mongodb-2.1.1/tests/bson/bson-int64-get_properties-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-get_properties-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-get_properties-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-jsonserialize-002.phpt b/mongodb-2.1.1/tests/bson/bson-int64-jsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-jsonserialize-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-jsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-operation-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-operation-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-operation-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-operation-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-operation-002.phpt b/mongodb-2.1.1/tests/bson/bson-int64-operation-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-operation-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-operation-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-operation-003.phpt b/mongodb-2.1.1/tests/bson/bson-int64-operation-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-operation-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-operation-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-operation-004.phpt b/mongodb-2.1.1/tests/bson/bson-int64-operation-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-operation-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-operation-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-operation-005.phpt b/mongodb-2.1.1/tests/bson/bson-int64-operation-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-operation-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-operation-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-operation_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-operation_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-operation_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-operation_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-serialization-002.phpt b/mongodb-2.1.1/tests/bson/bson-int64-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-serialization-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-serialization_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-int64-serialization_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-serialization_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-serialization_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-serialization_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-int64-serialization_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-serialization_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-serialization_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64-tostring-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64-tostring-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64-tostring-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64-tostring-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-int64_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-int64_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-int64_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-int64_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-iterator-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-iterator-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-iterator-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-iterator-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-iterator-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-iterator-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-iterator-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-iterator-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-iterator-debug-001.phpt b/mongodb-2.1.1/tests/bson/bson-iterator-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-iterator-debug-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-iterator-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-iterator-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-iterator-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-iterator-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-iterator-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-iterator-iterator-001.phpt b/mongodb-2.1.1/tests/bson/bson-iterator-iterator-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-iterator-iterator-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-iterator-iterator-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-iterator-iterator-002.phpt b/mongodb-2.1.1/tests/bson/bson-iterator-iterator-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-iterator-iterator-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-iterator-iterator-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-iterator-iterator-003.phpt b/mongodb-2.1.1/tests/bson/bson-iterator-iterator-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-iterator-iterator-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-iterator-iterator-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-iterator-rewind-001.phpt b/mongodb-2.1.1/tests/bson/bson-iterator-rewind-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-iterator-rewind-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-iterator-rewind-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-iterator-serialization_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-iterator-serialization_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-iterator-serialization_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-iterator-serialization_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-001.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-002.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-compare-002.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-compare-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-compare-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-compare-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-getCode-001.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-getCode-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-getCode-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-getCode-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-getScope-001.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-getScope-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-getScope-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-getScope-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-get_properties-002.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-get_properties-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-get_properties-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-get_properties-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-jsonserialize-002.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-jsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-jsonserialize-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-jsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-jsonserialize-003.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-jsonserialize-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-jsonserialize-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-jsonserialize-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-jsonserialize-004.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-jsonserialize-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-jsonserialize-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-jsonserialize-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-serialization-002.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-serialization-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-serialization_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-serialization_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-serialization_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-serialization_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-serialization_error-005.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-serialization_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-serialization_error-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-serialization_error-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-serialization_error-006.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-serialization_error-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-serialization_error-006.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-serialization_error-006.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-set_state_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-set_state_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-set_state_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-set_state_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-set_state_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-set_state_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-set_state_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-set_state_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-set_state_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript-tostring-001.phpt b/mongodb-2.1.1/tests/bson/bson-javascript-tostring-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript-tostring-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript-tostring-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-javascript_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-javascript_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-javascript_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascript_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-javascript_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascript_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascript_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-javascriptinterface-001.phpt b/mongodb-2.1.1/tests/bson/bson-javascriptinterface-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-javascriptinterface-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-javascriptinterface-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-maxkey-001.phpt b/mongodb-2.1.1/tests/bson/bson-maxkey-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-maxkey-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-maxkey-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-maxkey-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-maxkey-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-maxkey-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-maxkey-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-maxkey-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-maxkey-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-maxkey-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-maxkey-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-maxkey-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-maxkey-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-maxkey-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-maxkey-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-maxkey-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-maxkey-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-maxkey-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-maxkey-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-maxkey-jsonserialize-002.phpt b/mongodb-2.1.1/tests/bson/bson-maxkey-jsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-maxkey-jsonserialize-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-maxkey-jsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-maxkey-serialization-002.phpt b/mongodb-2.1.1/tests/bson/bson-maxkey-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-maxkey-serialization-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-maxkey-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-maxkey-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-maxkey-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-maxkey-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-maxkey-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-maxkey_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-maxkey_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-maxkey_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-maxkey_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-maxkeyinterface-001.phpt b/mongodb-2.1.1/tests/bson/bson-maxkeyinterface-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-maxkeyinterface-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-maxkeyinterface-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-minkey-001.phpt b/mongodb-2.1.1/tests/bson/bson-minkey-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-minkey-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-minkey-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-minkey-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-minkey-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-minkey-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-minkey-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-minkey-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-minkey-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-minkey-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-minkey-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-minkey-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-minkey-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-minkey-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-minkey-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-minkey-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-minkey-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-minkey-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-minkey-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-minkey-jsonserialize-002.phpt b/mongodb-2.1.1/tests/bson/bson-minkey-jsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-minkey-jsonserialize-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-minkey-jsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-minkey-serialization-002.phpt b/mongodb-2.1.1/tests/bson/bson-minkey-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-minkey-serialization-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-minkey-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-minkey-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-minkey-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-minkey-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-minkey-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-minkey_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-minkey_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-minkey_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-minkey_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-minkeyinterface-001.phpt b/mongodb-2.1.1/tests/bson/bson-minkeyinterface-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-minkeyinterface-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-minkeyinterface-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-001.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-002.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-003.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-004.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-compare-002.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-compare-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-compare-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-compare-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-getTimestamp-001.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-getTimestamp-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-getTimestamp-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-getTimestamp-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-getTimestamp-002.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-getTimestamp-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-getTimestamp-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-getTimestamp-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-get_properties-002.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-get_properties-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-get_properties-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-get_properties-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-jsonserialize-002.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-jsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-jsonserialize-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-jsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-serialization-002.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-serialization-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-serialization_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-serialization_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-serialization_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-serialization_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-serialization_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-serialization_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-serialization_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-serialization_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-set_state_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-set_state_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-set_state_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-set_state_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-set_state_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid-tostring_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-objectid-tostring_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid-tostring_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid-tostring_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-objectid_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-objectid_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectid_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-objectid_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectid_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectid_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-objectidinterface-001.phpt b/mongodb-2.1.1/tests/bson/bson-objectidinterface-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-objectidinterface-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-objectidinterface-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-array-access-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-array-access-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-array-access-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-array-access-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-array-access-002.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-array-access-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-array-access-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-array-access-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-array-access-003.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-array-access-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-array-access-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-array-access-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-array-access_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-array-access_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-array-access_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-array-access_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-array-access_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-array-access_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-array-access_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-array-access_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-array-access_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-array-access_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-array-access_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-array-access_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-array-access_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-array-access_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-array-access_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-array-access_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-debug-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-debug-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-fromJSON-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-fromJSON-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-fromJSON-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-fromJSON-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-fromJSON-002.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-fromJSON-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-fromJSON-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-fromJSON-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-fromJSON_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-fromJSON_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-fromJSON_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-fromJSON_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-fromPHP-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-fromPHP-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-fromPHP-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-fromPHP-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-fromPHP_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-fromPHP_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-fromPHP_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-fromPHP_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-get-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-get-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-get-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-get-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-get-002.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-get-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-get-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-get-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-get-003.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-get-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-get-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-get-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-get-004.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-get-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-get-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-get-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-get-005.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-get-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-get-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-get-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-getIterator-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-getIterator-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-getIterator-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-getIterator-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-has-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-has-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-has-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-has-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-serialization-002.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-serialization-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-set_state_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-toCanonicalExtendedJSON-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-toCanonicalExtendedJSON-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-toCanonicalExtendedJSON-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-toCanonicalExtendedJSON-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-toCanonicalJSON-002.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-toCanonicalJSON-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-toCanonicalJSON-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-toCanonicalJSON-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-toPHP-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-toPHP-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-toPHP-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-toPHP-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-toPHP-002.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-toPHP-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-toPHP-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-toPHP-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-toPHP-003.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-toPHP-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-toPHP-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-toPHP-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-toPHP-004.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-toPHP-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-toPHP-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-toPHP-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-toPHP-005.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-toPHP-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-toPHP-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-toPHP-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-toRelaxedExtendedJSON-001.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-toRelaxedExtendedJSON-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-toRelaxedExtendedJSON-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-toRelaxedExtendedJSON-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-toRelaxedExtendedJSON-002.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-toRelaxedExtendedJSON-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-toRelaxedExtendedJSON-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-toRelaxedExtendedJSON-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-packedarray-unserialize_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-packedarray-unserialize_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-packedarray-unserialize_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-packedarray-unserialize_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-001.phpt b/mongodb-2.1.1/tests/bson/bson-regex-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-002.phpt b/mongodb-2.1.1/tests/bson/bson-regex-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-003.phpt b/mongodb-2.1.1/tests/bson/bson-regex-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-004.phpt b/mongodb-2.1.1/tests/bson/bson-regex-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-005.phpt b/mongodb-2.1.1/tests/bson/bson-regex-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-regex-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-regex-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-regex-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-compare-002.phpt b/mongodb-2.1.1/tests/bson/bson-regex-compare-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-compare-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-compare-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-regex-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-get_properties-002.phpt b/mongodb-2.1.1/tests/bson/bson-regex-get_properties-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-get_properties-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-get_properties-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-regex-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-jsonserialize-002.phpt b/mongodb-2.1.1/tests/bson/bson-regex-jsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-jsonserialize-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-jsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-jsonserialize-003.phpt b/mongodb-2.1.1/tests/bson/bson-regex-jsonserialize-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-jsonserialize-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-jsonserialize-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-jsonserialize-004.phpt b/mongodb-2.1.1/tests/bson/bson-regex-jsonserialize-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-jsonserialize-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-jsonserialize-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-serialization-004.phpt b/mongodb-2.1.1/tests/bson/bson-regex-serialization-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-serialization-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-serialization-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-serialization-005.phpt b/mongodb-2.1.1/tests/bson/bson-regex-serialization-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-serialization-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-serialization-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-serialization-006.phpt b/mongodb-2.1.1/tests/bson/bson-regex-serialization-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-serialization-006.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-serialization-006.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-serialization_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-regex-serialization_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-serialization_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-serialization_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-serialization_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-regex-serialization_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-serialization_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-serialization_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-regex-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-set_state-002.phpt b/mongodb-2.1.1/tests/bson/bson-regex-set_state-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-set_state-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-set_state-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-set_state_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-regex-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex-set_state_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-regex-set_state_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex-set_state_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex-set_state_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-regex_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-regex_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regex_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-regex_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regex_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-regex_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-regexinterface-001.phpt b/mongodb-2.1.1/tests/bson/bson-regexinterface-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-regexinterface-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-regexinterface-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-001.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-get_properties-002.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-get_properties-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-get_properties-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-get_properties-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-jsonserialize-002.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-jsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-jsonserialize-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-jsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-serialization-002.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-serialization-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-serialization_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-serialization_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-serialization_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-serialization_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-serialization_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-serialization_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-serialization_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-serialization_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol-tostring-001.phpt b/mongodb-2.1.1/tests/bson/bson-symbol-tostring-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol-tostring-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol-tostring-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-symbol_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-symbol_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-symbol_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-symbol_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-001.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-002.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-003.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-004.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-005.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-getIncrement-001.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-getIncrement-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-getIncrement-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-getIncrement-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-getTimestamp-001.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-getTimestamp-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-getTimestamp-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-getTimestamp-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-get_properties-002.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-get_properties-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-get_properties-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-get_properties-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-jsonserialize-002.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-jsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-jsonserialize-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-jsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-serialization-003.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-serialization-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-serialization-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-serialization-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-serialization-004.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-serialization-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-serialization-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-serialization-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-serialization_error-005.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-serialization_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-serialization_error-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-serialization_error-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-serialization_error-006.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-serialization_error-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-serialization_error-006.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-serialization_error-006.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-serialization_error-007.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-serialization_error-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-serialization_error-007.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-serialization_error-007.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-serialization_error-008.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-serialization_error-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-serialization_error-008.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-serialization_error-008.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-set_state-002.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-set_state-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-set_state-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-set_state-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-set_state_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-set_state_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-set_state_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-set_state_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-set_state_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-set_state_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-set_state_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-set_state_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-set_state_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp-set_state_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp-set_state_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp-set_state_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp-set_state_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp_error-005.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp_error-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp_error-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestamp_error-006.phpt b/mongodb-2.1.1/tests/bson/bson-timestamp_error-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestamp_error-006.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestamp_error-006.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-timestampinterface-001.phpt b/mongodb-2.1.1/tests/bson/bson-timestampinterface-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-timestampinterface-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-timestampinterface-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-undefined-001.phpt b/mongodb-2.1.1/tests/bson/bson-undefined-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-undefined-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-undefined-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-undefined-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-undefined-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-undefined-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-undefined-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-undefined-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-undefined-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-undefined-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-undefined-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-undefined-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-undefined-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-undefined-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-undefined-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-undefined-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-undefined-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-undefined-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-undefined-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-undefined-jsonserialize-002.phpt b/mongodb-2.1.1/tests/bson/bson-undefined-jsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-undefined-jsonserialize-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-undefined-jsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-undefined-serialization-002.phpt b/mongodb-2.1.1/tests/bson/bson-undefined-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-undefined-serialization-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-undefined-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-undefined-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-undefined-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-undefined-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-undefined-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-undefined-tostring-001.phpt b/mongodb-2.1.1/tests/bson/bson-undefined-tostring-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-undefined-tostring-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-undefined-tostring-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-undefined_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-undefined_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-undefined_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-undefined_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-unknown-001.phpt b/mongodb-2.1.1/tests/bson/bson-unknown-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-unknown-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-unknown-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-001.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-002.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-003.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-004.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-005.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-005.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-006.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-006.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-006.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-009.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-009.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-009.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-clone-001.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-clone-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-clone-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-clone-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-clone-002.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-clone-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-clone-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-clone-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-compare-001.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-compare-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-compare-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-compare-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-get_properties-001.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-get_properties-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-get_properties-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-get_properties-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-get_properties-002.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-get_properties-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-get_properties-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-get_properties-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-jsonserialize-001.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-jsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-jsonserialize-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-jsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-jsonserialize-002.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-jsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-jsonserialize-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-jsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-serialization-003.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-serialization-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-serialization-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-serialization-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-serialization-004.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-serialization-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-serialization-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-serialization-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-serialization_error-003.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-serialization_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-serialization_error-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-serialization_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-serialization_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-serialization_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-serialization_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-serialization_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-set_state-001.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-set_state-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-set_state-002.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-set_state-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-set_state-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-set_state-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-set_state_error-001.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-set_state_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-set_state_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-set_state_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-set_state_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-todatetime-001.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-todatetime-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-todatetime-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-todatetime-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-todatetime-002.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-todatetime-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-todatetime-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-todatetime-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-todatetime-003.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-todatetime-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-todatetime-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-todatetime-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-todatetimeimmutable-001.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-todatetimeimmutable-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-todatetimeimmutable-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-todatetimeimmutable-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-todatetimeimmutable-002.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-todatetimeimmutable-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-todatetimeimmutable-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-todatetimeimmutable-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-todatetimeimmutable-003.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-todatetimeimmutable-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-todatetimeimmutable-003.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-todatetimeimmutable-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime-tostring-001.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime-tostring-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime-tostring-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime-tostring-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime_error-002.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime_error-002.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetime_error-004.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetime_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetime_error-004.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetime_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/bson-utcdatetimeinterface-001.phpt b/mongodb-2.1.1/tests/bson/bson-utcdatetimeinterface-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bson-utcdatetimeinterface-001.phpt
rename to mongodb-2.1.1/tests/bson/bson-utcdatetimeinterface-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0274.phpt b/mongodb-2.1.1/tests/bson/bug0274.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0274.phpt
rename to mongodb-2.1.1/tests/bson/bug0274.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0325.phpt b/mongodb-2.1.1/tests/bson/bug0325.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0325.phpt
rename to mongodb-2.1.1/tests/bson/bug0325.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0334-001.phpt b/mongodb-2.1.1/tests/bson/bug0334-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0334-001.phpt
rename to mongodb-2.1.1/tests/bson/bug0334-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0334-002.phpt b/mongodb-2.1.1/tests/bson/bug0334-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0334-002.phpt
rename to mongodb-2.1.1/tests/bson/bug0334-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0341.phpt b/mongodb-2.1.1/tests/bson/bug0341.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0341.phpt
rename to mongodb-2.1.1/tests/bson/bug0341.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0347.phpt b/mongodb-2.1.1/tests/bson/bug0347.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0347.phpt
rename to mongodb-2.1.1/tests/bson/bug0347.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0528.phpt b/mongodb-2.1.1/tests/bson/bug0528.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0528.phpt
rename to mongodb-2.1.1/tests/bson/bug0528.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0531-001.phpt b/mongodb-2.1.1/tests/bson/bug0531-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0531-001.phpt
rename to mongodb-2.1.1/tests/bson/bug0531-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0544.phpt b/mongodb-2.1.1/tests/bson/bug0544.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0544.phpt
rename to mongodb-2.1.1/tests/bson/bug0544.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0592.phpt b/mongodb-2.1.1/tests/bson/bug0592.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0592.phpt
rename to mongodb-2.1.1/tests/bson/bug0592.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0623.phpt b/mongodb-2.1.1/tests/bson/bug0623.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0623.phpt
rename to mongodb-2.1.1/tests/bson/bug0623.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0631.phpt b/mongodb-2.1.1/tests/bson/bug0631.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0631.phpt
rename to mongodb-2.1.1/tests/bson/bug0631.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0672.phpt b/mongodb-2.1.1/tests/bson/bug0672.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0672.phpt
rename to mongodb-2.1.1/tests/bson/bug0672.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0894-001.phpt b/mongodb-2.1.1/tests/bson/bug0894-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0894-001.phpt
rename to mongodb-2.1.1/tests/bson/bug0894-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0923-001.phpt b/mongodb-2.1.1/tests/bson/bug0923-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0923-001.phpt
rename to mongodb-2.1.1/tests/bson/bug0923-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0923-002.phpt b/mongodb-2.1.1/tests/bson/bug0923-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0923-002.phpt
rename to mongodb-2.1.1/tests/bson/bug0923-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0939-001.phpt b/mongodb-2.1.1/tests/bson/bug0939-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0939-001.phpt
rename to mongodb-2.1.1/tests/bson/bug0939-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug0974-001.phpt b/mongodb-2.1.1/tests/bson/bug0974-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug0974-001.phpt
rename to mongodb-2.1.1/tests/bson/bug0974-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug1006-001.phpt b/mongodb-2.1.1/tests/bson/bug1006-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug1006-001.phpt
rename to mongodb-2.1.1/tests/bson/bug1006-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug1006-002.phpt b/mongodb-2.1.1/tests/bson/bug1006-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug1006-002.phpt
rename to mongodb-2.1.1/tests/bson/bug1006-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug1053.phpt b/mongodb-2.1.1/tests/bson/bug1053.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug1053.phpt
rename to mongodb-2.1.1/tests/bson/bug1053.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug1067.phpt b/mongodb-2.1.1/tests/bson/bug1067.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug1067.phpt
rename to mongodb-2.1.1/tests/bson/bug1067.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug1266.phpt b/mongodb-2.1.1/tests/bson/bug1266.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug1266.phpt
rename to mongodb-2.1.1/tests/bson/bug1266.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug1598-001.phpt b/mongodb-2.1.1/tests/bson/bug1598-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug1598-001.phpt
rename to mongodb-2.1.1/tests/bson/bug1598-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug1598-002.phpt b/mongodb-2.1.1/tests/bson/bug1598-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug1598-002.phpt
rename to mongodb-2.1.1/tests/bson/bug1598-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug1839-005.phpt b/mongodb-2.1.1/tests/bson/bug1839-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug1839-005.phpt
rename to mongodb-2.1.1/tests/bson/bug1839-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug1839-006.phpt b/mongodb-2.1.1/tests/bson/bug1839-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug1839-006.phpt
rename to mongodb-2.1.1/tests/bson/bug1839-006.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug1839-007.phpt b/mongodb-2.1.1/tests/bson/bug1839-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug1839-007.phpt
rename to mongodb-2.1.1/tests/bson/bug1839-007.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug1839-008.phpt b/mongodb-2.1.1/tests/bson/bug1839-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug1839-008.phpt
rename to mongodb-2.1.1/tests/bson/bug1839-008.phpt
diff --git a/mongodb-2.1.0/tests/bson/bug2456-001.phpt b/mongodb-2.1.1/tests/bson/bug2456-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/bug2456-001.phpt
rename to mongodb-2.1.1/tests/bson/bug2456-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/typemap-001.phpt b/mongodb-2.1.1/tests/bson/typemap-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/typemap-001.phpt
rename to mongodb-2.1.1/tests/bson/typemap-001.phpt
diff --git a/mongodb-2.1.0/tests/bson/typemap-002.phpt b/mongodb-2.1.1/tests/bson/typemap-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/typemap-002.phpt
rename to mongodb-2.1.1/tests/bson/typemap-002.phpt
diff --git a/mongodb-2.1.0/tests/bson/typemap-003.phpt b/mongodb-2.1.1/tests/bson/typemap-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/typemap-003.phpt
rename to mongodb-2.1.1/tests/bson/typemap-003.phpt
diff --git a/mongodb-2.1.0/tests/bson/typemap-004.phpt b/mongodb-2.1.1/tests/bson/typemap-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/typemap-004.phpt
rename to mongodb-2.1.1/tests/bson/typemap-004.phpt
diff --git a/mongodb-2.1.0/tests/bson/typemap-005.phpt b/mongodb-2.1.1/tests/bson/typemap-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/typemap-005.phpt
rename to mongodb-2.1.1/tests/bson/typemap-005.phpt
diff --git a/mongodb-2.1.0/tests/bson/typemap-006.phpt b/mongodb-2.1.1/tests/bson/typemap-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/typemap-006.phpt
rename to mongodb-2.1.1/tests/bson/typemap-006.phpt
diff --git a/mongodb-2.1.0/tests/bson/typemap-007.phpt b/mongodb-2.1.1/tests/bson/typemap-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bson/typemap-007.phpt
rename to mongodb-2.1.1/tests/bson/typemap-007.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bug0667.phpt b/mongodb-2.1.1/tests/bulk/bug0667.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bug0667.phpt
rename to mongodb-2.1.1/tests/bulk/bug0667.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-count-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-count-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-count-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-count-001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-countable-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-countable-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-countable-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-countable-001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-ctor-comment-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-ctor-comment-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-ctor-comment-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-ctor-comment-001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-ctor-comment_error-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-ctor-comment_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-ctor-comment_error-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-ctor-comment_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-ctor-let-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-ctor-let-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-ctor-let-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-ctor-let-001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-ctor-let_error-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-ctor-let_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-ctor-let_error-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-ctor-let_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-debug-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-debug-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-debug-002.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-debug-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-debug-002.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-debug-002.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-delete-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-delete-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-delete-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-delete-001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-delete-002.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-delete-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-delete-002.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-delete-002.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-delete-003.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-delete-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-delete-003.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-delete-003.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-delete_error-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-delete_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-delete_error-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-delete_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-delete_error-002.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-delete_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-delete_error-002.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-delete_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-delete_error-003.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-delete_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-delete_error-003.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-delete_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-delete_error-004.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-delete_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-delete_error-004.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-delete_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-delete_error-005.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-delete_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-delete_error-005.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-delete_error-005.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-insert-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-insert-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-insert-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-insert-001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-insert-002.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-insert-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-insert-002.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-insert-002.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-insert-003.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-insert-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-insert-003.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-insert-003.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-insert-004.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-insert-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-insert-004.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-insert-004.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-insert_error-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-insert_error-001.phpt
similarity index 59%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-insert_error-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-insert_error-001.phpt
index b2c96c41..ebe2f904 100644
--- a/mongodb-2.1.0/tests/bulk/bulkwrite-insert_error-001.phpt
+++ b/mongodb-2.1.1/tests/bulk/bulkwrite-insert_error-001.phpt
@@ -1,27 +1,20 @@
--TEST--
MongoDB\Driver\BulkWrite::insert() with invalid insert document
--FILE--
<?php
require_once __DIR__ . '/../utils/basic.inc';
$bulk = new MongoDB\Driver\BulkWrite;
echo throws(function() use ($bulk) {
$bulk->insert(['' => 1]);
-}, 'MongoDB\Driver\Exception\InvalidArgumentException'), "\n\n";
-
-echo throws(function() use ($bulk) {
- $bulk->insert(["\xc3\x28" => 1]);
}, 'MongoDB\Driver\Exception\InvalidArgumentException'), "\n";
?>
===DONE===
<?php exit(0); ?>
--EXPECT--
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
-invalid document for insert: empty key
-
-OK: Got MongoDB\Driver\Exception\InvalidArgumentException
-invalid document for insert: corrupt BSON
+invalid document for insert: Element key cannot be an empty string
===DONE===
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-insert_error-002.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-insert_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-insert_error-002.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-insert_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-insert_error-003.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-insert_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-insert_error-003.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-insert_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-insert_error-004.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-insert_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-insert_error-004.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-insert_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update-001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update-002.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update-002.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update-002.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update-003.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update-003.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update-003.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update-004.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update-004.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update-004.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update-005.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update-005.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update-005.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update-006.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update-006.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update-006.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update-007.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update-007.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update-007.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update-008.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update-008.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update-008.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update_error-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update_error-001.phpt
similarity index 59%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update_error-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update_error-001.phpt
index 82146af1..26fb5dc1 100644
--- a/mongodb-2.1.0/tests/bulk/bulkwrite-update_error-001.phpt
+++ b/mongodb-2.1.1/tests/bulk/bulkwrite-update_error-001.phpt
@@ -1,27 +1,20 @@
--TEST--
MongoDB\Driver\BulkWrite::update() with invalid replacement document
--FILE--
<?php
require_once __DIR__ . '/../utils/basic.inc';
$bulk = new MongoDB\Driver\BulkWrite;
echo throws(function() use ($bulk) {
$bulk->update(['x' => 1], ['' => 1]);
-}, 'MongoDB\Driver\Exception\InvalidArgumentException'), "\n\n";
-
-echo throws(function() use ($bulk) {
- $bulk->update(['x' => 1], ["\xc3\x28" => 1]);
}, 'MongoDB\Driver\Exception\InvalidArgumentException'), "\n";
?>
===DONE===
<?php exit(0); ?>
--EXPECT--
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
-invalid argument for replace: empty key
-
-OK: Got MongoDB\Driver\Exception\InvalidArgumentException
-invalid argument for replace: corrupt BSON
+invalid argument for replace: Element key cannot be an empty string
===DONE===
\ No newline at end of file
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update_error-002.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update_error-002.phpt
similarity index 76%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update_error-002.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update_error-002.phpt
index c39ef0d0..733debe3 100644
--- a/mongodb-2.1.0/tests/bulk/bulkwrite-update_error-002.phpt
+++ b/mongodb-2.1.1/tests/bulk/bulkwrite-update_error-002.phpt
@@ -1,38 +1,31 @@
--TEST--
MongoDB\Driver\BulkWrite::update() with invalid update document
--FILE--
<?php
require_once __DIR__ . '/../utils/basic.inc';
$bulk = new MongoDB\Driver\BulkWrite;
echo throws(function() use ($bulk) {
$bulk->update(['x' => 1], ['$set' => ['x' => ['' => 1]]]);
}, 'MongoDB\Driver\Exception\InvalidArgumentException'), "\n\n";
-echo throws(function() use ($bulk) {
- $bulk->update(['x' => 1], ['$set' => ['x' => ["\xc3\x28" => 1]]]);
-}, 'MongoDB\Driver\Exception\InvalidArgumentException'), "\n\n";
-
/* This newObj argument mixes an update and replacement document, but
* php_phongo_bulkwrite_update_has_operators() will categorize it as an update
* due to the presence of an atomic operator. As such, _mongoc_validate_update()
* will report the error. */
echo throws(function() use ($bulk) {
$bulk->update(['x' => 1], ['$set' => ['y' => 1], 'z' => 1]);
}, 'MongoDB\Driver\Exception\InvalidArgumentException'), "\n";
?>
===DONE===
<?php exit(0); ?>
--EXPECT--
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
-invalid argument for update: empty key
-
-OK: Got MongoDB\Driver\Exception\InvalidArgumentException
-invalid argument for update: corrupt BSON
+invalid argument for update: Element key cannot be an empty string
OK: Got MongoDB\Driver\Exception\InvalidArgumentException
Invalid key 'z': update only works with $ operators and pipelines
===DONE===
\ No newline at end of file
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update_error-003.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update_error-003.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update_error-004.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update_error-004.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update_error-005.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update_error-005.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update_error-005.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update_error-006.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update_error-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update_error-006.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update_error-006.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite-update_error-009.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite-update_error-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite-update_error-009.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite-update_error-009.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite_error-001.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite_error-001.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/bulkwrite_error-002.phpt b/mongodb-2.1.1/tests/bulk/bulkwrite_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/bulkwrite_error-002.phpt
rename to mongodb-2.1.1/tests/bulk/bulkwrite_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bulk/write-0001.phpt b/mongodb-2.1.1/tests/bulk/write-0001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/write-0001.phpt
rename to mongodb-2.1.1/tests/bulk/write-0001.phpt
diff --git a/mongodb-2.1.0/tests/bulk/write-0002.phpt b/mongodb-2.1.1/tests/bulk/write-0002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulk/write-0002.phpt
rename to mongodb-2.1.1/tests/bulk/write-0002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-bypassDocumentValidation-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-bypassDocumentValidation-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-bypassDocumentValidation-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-bypassDocumentValidation-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-bypassDocumentValidation-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-bypassDocumentValidation-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-bypassDocumentValidation-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-bypassDocumentValidation-002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-comment-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-comment-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-comment-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-comment-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-comment_error-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-comment_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-comment_error-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-comment_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-let-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-let-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-let-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-let-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-let_error-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-let_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-let_error-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-let_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-ordered-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-ordered-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-ordered-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-ordered-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-ordered-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-ordered-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-ordered-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-ordered-002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-verboseresults-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-verboseresults-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-verboseresults-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-verboseresults-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-verboseresults-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-verboseresults-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-ctor-verboseresults-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-ctor-verboseresults-002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-debug-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-debug-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-debug-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-debug-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-debug-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-debug-002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-debug-003.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-debug-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-debug-003.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-debug-003.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany-002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany-003.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany-003.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany-003.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-003.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-003.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-004.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-004.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteMany_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne-002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne-003.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne-003.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne-003.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-003.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-003.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-004.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-004.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-deleteOne_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne-002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne-003.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne-003.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne-003.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne-004.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne-004.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne-004.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne_error-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne_error-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne_error-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne_error-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne_error-003.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-insertOne_error-003.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-insertOne_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne-004.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne-004.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne-004.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne-008.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne-008.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne-008.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-003.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-003.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-004.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-004.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-005.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-005.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-005.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-006.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-006.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-replaceOne_error-006.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateMany-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateMany-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateMany-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateMany-002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateMany-003.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateMany-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateMany-003.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateMany-003.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateMany-005.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateMany-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateMany-005.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateMany-005.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateMany-007.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateMany-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateMany-007.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateMany-007.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne-004.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne-004.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne-004.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne-006.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne-006.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne-006.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne-008.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne-008.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne-008.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne_error-003.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne_error-003.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne_error-003.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne_error-004.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne_error-004.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne_error-004.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne_error-005.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne_error-005.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne_error-005.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne_error-006.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne_error-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommand-updateOne_error-006.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommand-updateOne_error-006.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommandresult-debug-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommandresult-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommandresult-debug-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommandresult-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommandresult-isAcknowledged-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommandresult-isAcknowledged-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/bulkwritecommandresult-isAcknowledged-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/bulkwritecommandresult-isAcknowledged-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/manager-executeBulkWriteCommand-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/manager-executeBulkWriteCommand-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/manager-executeBulkWriteCommand-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/manager-executeBulkWriteCommand-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/manager-executeBulkWriteCommand_error-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/manager-executeBulkWriteCommand_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/manager-executeBulkWriteCommand_error-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/manager-executeBulkWriteCommand_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/manager-executeBulkWriteCommand_error-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/manager-executeBulkWriteCommand_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/manager-executeBulkWriteCommand_error-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/manager-executeBulkWriteCommand_error-002.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/server-executeBulkWriteCommand-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/server-executeBulkWriteCommand-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/server-executeBulkWriteCommand-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/server-executeBulkWriteCommand-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/server-executeBulkWriteCommand_error-001.phpt b/mongodb-2.1.1/tests/bulkwritecommand/server-executeBulkWriteCommand_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/server-executeBulkWriteCommand_error-001.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/server-executeBulkWriteCommand_error-001.phpt
diff --git a/mongodb-2.1.0/tests/bulkwritecommand/server-executeBulkWriteCommand_error-002.phpt b/mongodb-2.1.1/tests/bulkwritecommand/server-executeBulkWriteCommand_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/bulkwritecommand/server-executeBulkWriteCommand_error-002.phpt
rename to mongodb-2.1.1/tests/bulkwritecommand/server-executeBulkWriteCommand_error-002.phpt
diff --git a/mongodb-2.1.0/tests/causal-consistency/causal-consistency-001.phpt b/mongodb-2.1.1/tests/causal-consistency/causal-consistency-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/causal-consistency/causal-consistency-001.phpt
rename to mongodb-2.1.1/tests/causal-consistency/causal-consistency-001.phpt
diff --git a/mongodb-2.1.0/tests/causal-consistency/causal-consistency-002.phpt b/mongodb-2.1.1/tests/causal-consistency/causal-consistency-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/causal-consistency/causal-consistency-002.phpt
rename to mongodb-2.1.1/tests/causal-consistency/causal-consistency-002.phpt
diff --git a/mongodb-2.1.0/tests/causal-consistency/causal-consistency-003.phpt b/mongodb-2.1.1/tests/causal-consistency/causal-consistency-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/causal-consistency/causal-consistency-003.phpt
rename to mongodb-2.1.1/tests/causal-consistency/causal-consistency-003.phpt
diff --git a/mongodb-2.1.0/tests/causal-consistency/causal-consistency-004.phpt b/mongodb-2.1.1/tests/causal-consistency/causal-consistency-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/causal-consistency/causal-consistency-004.phpt
rename to mongodb-2.1.1/tests/causal-consistency/causal-consistency-004.phpt
diff --git a/mongodb-2.1.0/tests/causal-consistency/causal-consistency-005.phpt b/mongodb-2.1.1/tests/causal-consistency/causal-consistency-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/causal-consistency/causal-consistency-005.phpt
rename to mongodb-2.1.1/tests/causal-consistency/causal-consistency-005.phpt
diff --git a/mongodb-2.1.0/tests/causal-consistency/causal-consistency-006.phpt b/mongodb-2.1.1/tests/causal-consistency/causal-consistency-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/causal-consistency/causal-consistency-006.phpt
rename to mongodb-2.1.1/tests/causal-consistency/causal-consistency-006.phpt
diff --git a/mongodb-2.1.0/tests/causal-consistency/causal-consistency-007.phpt b/mongodb-2.1.1/tests/causal-consistency/causal-consistency-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/causal-consistency/causal-consistency-007.phpt
rename to mongodb-2.1.1/tests/causal-consistency/causal-consistency-007.phpt
diff --git a/mongodb-2.1.0/tests/causal-consistency/causal-consistency-008.phpt b/mongodb-2.1.1/tests/causal-consistency/causal-consistency-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/causal-consistency/causal-consistency-008.phpt
rename to mongodb-2.1.1/tests/causal-consistency/causal-consistency-008.phpt
diff --git a/mongodb-2.1.0/tests/causal-consistency/causal-consistency-009.phpt b/mongodb-2.1.1/tests/causal-consistency/causal-consistency-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/causal-consistency/causal-consistency-009.phpt
rename to mongodb-2.1.1/tests/causal-consistency/causal-consistency-009.phpt
diff --git a/mongodb-2.1.0/tests/causal-consistency/causal-consistency-010.phpt b/mongodb-2.1.1/tests/causal-consistency/causal-consistency-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/causal-consistency/causal-consistency-010.phpt
rename to mongodb-2.1.1/tests/causal-consistency/causal-consistency-010.phpt
diff --git a/mongodb-2.1.0/tests/causal-consistency/causal-consistency-011.phpt b/mongodb-2.1.1/tests/causal-consistency/causal-consistency-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/causal-consistency/causal-consistency-011.phpt
rename to mongodb-2.1.1/tests/causal-consistency/causal-consistency-011.phpt
diff --git a/mongodb-2.1.0/tests/causal-consistency/causal-consistency-012.phpt b/mongodb-2.1.1/tests/causal-consistency/causal-consistency-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/causal-consistency/causal-consistency-012.phpt
rename to mongodb-2.1.1/tests/causal-consistency/causal-consistency-012.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/bug2149.phpt b/mongodb-2.1.1/tests/clientEncryption/bug2149.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/bug2149.phpt
rename to mongodb-2.1.1/tests/clientEncryption/bug2149.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-addKeyAltName-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-addKeyAltName-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-addKeyAltName-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-addKeyAltName-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-addKeyAltName-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-addKeyAltName-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-addKeyAltName-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-addKeyAltName-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-addKeyAltName_error-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-addKeyAltName_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-addKeyAltName_error-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-addKeyAltName_error-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-constants.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-constants.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-constants.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-constants.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-createDataKey-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-createDataKey-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-createDataKey-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-createDataKey-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-createDataKey-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-createDataKey-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-createDataKey-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-createDataKey-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-createDataKey_error-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-createDataKey_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-createDataKey_error-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-createDataKey_error-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-createDataKey_error-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-createDataKey_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-createDataKey_error-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-createDataKey_error-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-createDataKey_error-003.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-createDataKey_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-createDataKey_error-003.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-createDataKey_error-003.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-ctor-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-ctor-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-ctor-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-ctor-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-ctor-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-ctor-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-ctor-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-ctor-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-ctor_error-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-ctor_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-ctor_error-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-ctor_error-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-ctor_error-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-ctor_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-ctor_error-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-ctor_error-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-decrypt-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-decrypt-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-decrypt-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-decrypt-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-deleteKey-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-deleteKey-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-deleteKey-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-deleteKey-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-deleteKey-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-deleteKey-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-deleteKey-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-deleteKey-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-deleteKey_error-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-deleteKey_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-deleteKey_error-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-deleteKey_error-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-encrypt-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-encrypt-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-encrypt-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-encrypt-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-encryptExpression-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-encryptExpression-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-encryptExpression-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-encryptExpression-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-encryptExpression_error-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-encryptExpression_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-encryptExpression_error-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-encryptExpression_error-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-encryptExpression_error-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-encryptExpression_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-encryptExpression_error-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-encryptExpression_error-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-encrypt_error-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-encrypt_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-encrypt_error-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-encrypt_error-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKey-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKey-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKey-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKey-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKey-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKey-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKey-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKey-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKeyByAltName-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKeyByAltName-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKeyByAltName-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKeyByAltName-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKeyByAltName-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKeyByAltName-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKeyByAltName-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKeyByAltName-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKey_error-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKey_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKey_error-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKey_error-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKeys-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKeys-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKeys-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKeys-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKeys-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKeys-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKeys-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKeys-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKeys-003.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKeys-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-getKeys-003.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-getKeys-003.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-removeKeyAltName-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-removeKeyAltName-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-removeKeyAltName-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-removeKeyAltName-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-removeKeyAltName-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-removeKeyAltName-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-removeKeyAltName-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-removeKeyAltName-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-removeKeyAltName-003.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-removeKeyAltName-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-removeKeyAltName-003.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-removeKeyAltName-003.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-removeKeyAltName_error-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-removeKeyAltName_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-removeKeyAltName_error-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-removeKeyAltName_error-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-rewrapManyDataKey-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-rewrapManyDataKey-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-rewrapManyDataKey-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-rewrapManyDataKey-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-rewrapManyDataKey-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-rewrapManyDataKey-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-rewrapManyDataKey-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-rewrapManyDataKey-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-rewrapManyDataKey-003.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-rewrapManyDataKey-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-rewrapManyDataKey-003.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-rewrapManyDataKey-003.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-001.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-001.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-001.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-002.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-002.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-002.phpt
diff --git a/mongodb-2.1.0/tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-003.phpt b/mongodb-2.1.1/tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-003.phpt
rename to mongodb-2.1.1/tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-003.phpt
diff --git a/mongodb-2.1.0/tests/command/command-ctor-001.phpt b/mongodb-2.1.1/tests/command/command-ctor-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/command/command-ctor-001.phpt
rename to mongodb-2.1.1/tests/command/command-ctor-001.phpt
diff --git a/mongodb-2.1.0/tests/command/command-ctor-002.phpt b/mongodb-2.1.1/tests/command/command-ctor-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/command/command-ctor-002.phpt
rename to mongodb-2.1.1/tests/command/command-ctor-002.phpt
diff --git a/mongodb-2.1.0/tests/command/command-ctor_error-001.phpt b/mongodb-2.1.1/tests/command/command-ctor_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/command/command-ctor_error-001.phpt
rename to mongodb-2.1.1/tests/command/command-ctor_error-001.phpt
diff --git a/mongodb-2.1.0/tests/command/command_error-001.phpt b/mongodb-2.1.1/tests/command/command_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/command/command_error-001.phpt
rename to mongodb-2.1.1/tests/command/command_error-001.phpt
diff --git a/mongodb-2.1.0/tests/command/cursor-batchsize-001.phpt b/mongodb-2.1.1/tests/command/cursor-batchsize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/command/cursor-batchsize-001.phpt
rename to mongodb-2.1.1/tests/command/cursor-batchsize-001.phpt
diff --git a/mongodb-2.1.0/tests/command/cursor-batchsize-002.phpt b/mongodb-2.1.1/tests/command/cursor-batchsize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/command/cursor-batchsize-002.phpt
rename to mongodb-2.1.1/tests/command/cursor-batchsize-002.phpt
diff --git a/mongodb-2.1.0/tests/command/cursor-comment-001.phpt b/mongodb-2.1.1/tests/command/cursor-comment-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/command/cursor-comment-001.phpt
rename to mongodb-2.1.1/tests/command/cursor-comment-001.phpt
diff --git a/mongodb-2.1.0/tests/command/cursor-tailable-001.phpt b/mongodb-2.1.1/tests/command/cursor-tailable-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/command/cursor-tailable-001.phpt
rename to mongodb-2.1.1/tests/command/cursor-tailable-001.phpt
diff --git a/mongodb-2.1.0/tests/command/findAndModify-001.phpt b/mongodb-2.1.1/tests/command/findAndModify-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/command/findAndModify-001.phpt
rename to mongodb-2.1.1/tests/command/findAndModify-001.phpt
diff --git a/mongodb-2.1.0/tests/command/update-001.phpt b/mongodb-2.1.1/tests/command/update-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/command/update-001.phpt
rename to mongodb-2.1.1/tests/command/update-001.phpt
diff --git a/mongodb-2.1.0/tests/connect/bug0720.phpt b/mongodb-2.1.1/tests/connect/bug0720.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/bug0720.phpt
rename to mongodb-2.1.1/tests/connect/bug0720.phpt
diff --git a/mongodb-2.1.0/tests/connect/bug1015.phpt b/mongodb-2.1.1/tests/connect/bug1015.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/bug1015.phpt
rename to mongodb-2.1.1/tests/connect/bug1015.phpt
diff --git a/mongodb-2.1.0/tests/connect/bug1045.phpt b/mongodb-2.1.1/tests/connect/bug1045.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/bug1045.phpt
rename to mongodb-2.1.1/tests/connect/bug1045.phpt
diff --git a/mongodb-2.1.0/tests/connect/compression_error-001.phpt b/mongodb-2.1.1/tests/connect/compression_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/compression_error-001.phpt
rename to mongodb-2.1.1/tests/connect/compression_error-001.phpt
diff --git a/mongodb-2.1.0/tests/connect/compression_error-002.phpt b/mongodb-2.1.1/tests/connect/compression_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/compression_error-002.phpt
rename to mongodb-2.1.1/tests/connect/compression_error-002.phpt
diff --git a/mongodb-2.1.0/tests/connect/replicaset-seedlist-001.phpt b/mongodb-2.1.1/tests/connect/replicaset-seedlist-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/replicaset-seedlist-001.phpt
rename to mongodb-2.1.1/tests/connect/replicaset-seedlist-001.phpt
diff --git a/mongodb-2.1.0/tests/connect/replicaset-seedlist-002.phpt b/mongodb-2.1.1/tests/connect/replicaset-seedlist-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/replicaset-seedlist-002.phpt
rename to mongodb-2.1.1/tests/connect/replicaset-seedlist-002.phpt
diff --git a/mongodb-2.1.0/tests/connect/standalone-auth-001.phpt b/mongodb-2.1.1/tests/connect/standalone-auth-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/standalone-auth-001.phpt
rename to mongodb-2.1.1/tests/connect/standalone-auth-001.phpt
diff --git a/mongodb-2.1.0/tests/connect/standalone-auth_error-001.phpt b/mongodb-2.1.1/tests/connect/standalone-auth_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/standalone-auth_error-001.phpt
rename to mongodb-2.1.1/tests/connect/standalone-auth_error-001.phpt
diff --git a/mongodb-2.1.0/tests/connect/standalone-plain-0001.phpt b/mongodb-2.1.1/tests/connect/standalone-plain-0001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/standalone-plain-0001.phpt
rename to mongodb-2.1.1/tests/connect/standalone-plain-0001.phpt
diff --git a/mongodb-2.1.0/tests/connect/standalone-plain-0002.phpt b/mongodb-2.1.1/tests/connect/standalone-plain-0002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/standalone-plain-0002.phpt
rename to mongodb-2.1.1/tests/connect/standalone-plain-0002.phpt
diff --git a/mongodb-2.1.0/tests/connect/standalone-ssl-no_verify-003.phpt b/mongodb-2.1.1/tests/connect/standalone-ssl-no_verify-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/standalone-ssl-no_verify-003.phpt
rename to mongodb-2.1.1/tests/connect/standalone-ssl-no_verify-003.phpt
diff --git a/mongodb-2.1.0/tests/connect/standalone-ssl-verify_cert-003.phpt b/mongodb-2.1.1/tests/connect/standalone-ssl-verify_cert-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/standalone-ssl-verify_cert-003.phpt
rename to mongodb-2.1.1/tests/connect/standalone-ssl-verify_cert-003.phpt
diff --git a/mongodb-2.1.0/tests/connect/standalone-ssl-verify_cert-error-003.phpt b/mongodb-2.1.1/tests/connect/standalone-ssl-verify_cert-error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/standalone-ssl-verify_cert-error-003.phpt
rename to mongodb-2.1.1/tests/connect/standalone-ssl-verify_cert-error-003.phpt
diff --git a/mongodb-2.1.0/tests/connect/standalone-x509-auth-001.phpt b/mongodb-2.1.1/tests/connect/standalone-x509-auth-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/standalone-x509-auth-001.phpt
rename to mongodb-2.1.1/tests/connect/standalone-x509-auth-001.phpt
diff --git a/mongodb-2.1.0/tests/connect/standalone-x509-error-0001.phpt b/mongodb-2.1.1/tests/connect/standalone-x509-error-0001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/standalone-x509-error-0001.phpt
rename to mongodb-2.1.1/tests/connect/standalone-x509-error-0001.phpt
diff --git a/mongodb-2.1.0/tests/connect/standalone-x509-extract_username-001.phpt b/mongodb-2.1.1/tests/connect/standalone-x509-extract_username-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/connect/standalone-x509-extract_username-001.phpt
rename to mongodb-2.1.1/tests/connect/standalone-x509-extract_username-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug0671-001.phpt b/mongodb-2.1.1/tests/cursor/bug0671-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug0671-001.phpt
rename to mongodb-2.1.1/tests/cursor/bug0671-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug0732-001.phpt b/mongodb-2.1.1/tests/cursor/bug0732-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug0732-001.phpt
rename to mongodb-2.1.1/tests/cursor/bug0732-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug0849-001.phpt b/mongodb-2.1.1/tests/cursor/bug0849-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug0849-001.phpt
rename to mongodb-2.1.1/tests/cursor/bug0849-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug0924-001.phpt b/mongodb-2.1.1/tests/cursor/bug0924-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug0924-001.phpt
rename to mongodb-2.1.1/tests/cursor/bug0924-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug0924-002.phpt b/mongodb-2.1.1/tests/cursor/bug0924-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug0924-002.phpt
rename to mongodb-2.1.1/tests/cursor/bug0924-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1050-001.phpt b/mongodb-2.1.1/tests/cursor/bug1050-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1050-001.phpt
rename to mongodb-2.1.1/tests/cursor/bug1050-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1050-002.phpt b/mongodb-2.1.1/tests/cursor/bug1050-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1050-002.phpt
rename to mongodb-2.1.1/tests/cursor/bug1050-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1151-001.phpt b/mongodb-2.1.1/tests/cursor/bug1151-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1151-001.phpt
rename to mongodb-2.1.1/tests/cursor/bug1151-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1151-002.phpt b/mongodb-2.1.1/tests/cursor/bug1151-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1151-002.phpt
rename to mongodb-2.1.1/tests/cursor/bug1151-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1151-003.phpt b/mongodb-2.1.1/tests/cursor/bug1151-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1151-003.phpt
rename to mongodb-2.1.1/tests/cursor/bug1151-003.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1151-004.phpt b/mongodb-2.1.1/tests/cursor/bug1151-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1151-004.phpt
rename to mongodb-2.1.1/tests/cursor/bug1151-004.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1152-001.phpt b/mongodb-2.1.1/tests/cursor/bug1152-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1152-001.phpt
rename to mongodb-2.1.1/tests/cursor/bug1152-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1152-002.phpt b/mongodb-2.1.1/tests/cursor/bug1152-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1152-002.phpt
rename to mongodb-2.1.1/tests/cursor/bug1152-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1162-001.phpt b/mongodb-2.1.1/tests/cursor/bug1162-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1162-001.phpt
rename to mongodb-2.1.1/tests/cursor/bug1162-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1274-001.phpt b/mongodb-2.1.1/tests/cursor/bug1274-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1274-001.phpt
rename to mongodb-2.1.1/tests/cursor/bug1274-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1274-002.phpt b/mongodb-2.1.1/tests/cursor/bug1274-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1274-002.phpt
rename to mongodb-2.1.1/tests/cursor/bug1274-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1274-003.phpt b/mongodb-2.1.1/tests/cursor/bug1274-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1274-003.phpt
rename to mongodb-2.1.1/tests/cursor/bug1274-003.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1274-004.phpt b/mongodb-2.1.1/tests/cursor/bug1274-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1274-004.phpt
rename to mongodb-2.1.1/tests/cursor/bug1274-004.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1274-005.phpt b/mongodb-2.1.1/tests/cursor/bug1274-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1274-005.phpt
rename to mongodb-2.1.1/tests/cursor/bug1274-005.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1274-006.phpt b/mongodb-2.1.1/tests/cursor/bug1274-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1274-006.phpt
rename to mongodb-2.1.1/tests/cursor/bug1274-006.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1419-001.phpt b/mongodb-2.1.1/tests/cursor/bug1419-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1419-001.phpt
rename to mongodb-2.1.1/tests/cursor/bug1419-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1529-001.phpt b/mongodb-2.1.1/tests/cursor/bug1529-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1529-001.phpt
rename to mongodb-2.1.1/tests/cursor/bug1529-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/bug1713-001.phpt b/mongodb-2.1.1/tests/cursor/bug1713-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/bug1713-001.phpt
rename to mongodb-2.1.1/tests/cursor/bug1713-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-IteratorIterator-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-IteratorIterator-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-IteratorIterator-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-IteratorIterator-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-IteratorIterator-002.phpt b/mongodb-2.1.1/tests/cursor/cursor-IteratorIterator-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-IteratorIterator-002.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-IteratorIterator-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-IteratorIterator-003.phpt b/mongodb-2.1.1/tests/cursor/cursor-IteratorIterator-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-IteratorIterator-003.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-IteratorIterator-003.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-NoRewindIterator-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-NoRewindIterator-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-NoRewindIterator-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-NoRewindIterator-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-destruct-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-destruct-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-destruct-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-destruct-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-getmore-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-getmore-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-getmore-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-getmore-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-getmore-002.phpt b/mongodb-2.1.1/tests/cursor/cursor-getmore-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-getmore-002.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-getmore-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-getmore-003.phpt b/mongodb-2.1.1/tests/cursor/cursor-getmore-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-getmore-003.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-getmore-003.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-getmore-004.phpt b/mongodb-2.1.1/tests/cursor/cursor-getmore-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-getmore-004.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-getmore-004.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-getmore-005.phpt b/mongodb-2.1.1/tests/cursor/cursor-getmore-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-getmore-005.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-getmore-005.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-getmore-006.phpt b/mongodb-2.1.1/tests/cursor/cursor-getmore-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-getmore-006.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-getmore-006.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-isDead-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-isDead-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-isDead-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-isDead-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-isDead-002.phpt b/mongodb-2.1.1/tests/cursor/cursor-isDead-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-isDead-002.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-isDead-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-iterator-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-iterator-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-iterator-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-iterator-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-iterator-002.phpt b/mongodb-2.1.1/tests/cursor/cursor-iterator-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-iterator-002.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-iterator-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-iterator-003.phpt b/mongodb-2.1.1/tests/cursor/cursor-iterator-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-iterator-003.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-iterator-003.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-iterator-004.phpt b/mongodb-2.1.1/tests/cursor/cursor-iterator-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-iterator-004.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-iterator-004.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-iterator_handlers-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-iterator_handlers-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-iterator_handlers-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-iterator_handlers-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-rewind-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-rewind-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-rewind-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-rewind-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-session-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-session-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-session-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-session-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-session-002.phpt b/mongodb-2.1.1/tests/cursor/cursor-session-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-session-002.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-session-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-session-003.phpt b/mongodb-2.1.1/tests/cursor/cursor-session-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-session-003.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-session-003.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-session-004.phpt b/mongodb-2.1.1/tests/cursor/cursor-session-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-session-004.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-session-004.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-setTypeMap_error-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-setTypeMap_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-setTypeMap_error-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-setTypeMap_error-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-setTypeMap_error-002.phpt b/mongodb-2.1.1/tests/cursor/cursor-setTypeMap_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-setTypeMap_error-002.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-setTypeMap_error-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-setTypeMap_error-003.phpt b/mongodb-2.1.1/tests/cursor/cursor-setTypeMap_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-setTypeMap_error-003.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-setTypeMap_error-003.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-setTypeMap_error-004.phpt b/mongodb-2.1.1/tests/cursor/cursor-setTypeMap_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-setTypeMap_error-004.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-setTypeMap_error-004.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-tailable-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-tailable-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-tailable-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-tailable-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-tailable-002.phpt b/mongodb-2.1.1/tests/cursor/cursor-tailable-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-tailable-002.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-tailable-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-tailable-003.phpt b/mongodb-2.1.1/tests/cursor/cursor-tailable-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-tailable-003.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-tailable-003.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-tailable_error-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-tailable_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-tailable_error-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-tailable_error-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-tailable_error-002.phpt b/mongodb-2.1.1/tests/cursor/cursor-tailable_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-tailable_error-002.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-tailable_error-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-toArray-001.phpt b/mongodb-2.1.1/tests/cursor/cursor-toArray-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-toArray-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-toArray-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor-toArray-002.phpt b/mongodb-2.1.1/tests/cursor/cursor-toArray-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor-toArray-002.phpt
rename to mongodb-2.1.1/tests/cursor/cursor-toArray-002.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursor_error-001.phpt b/mongodb-2.1.1/tests/cursor/cursor_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursor_error-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursor_error-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursorid-getId-001.phpt b/mongodb-2.1.1/tests/cursor/cursorid-getId-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursorid-getId-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursorid-getId-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursorinterface-001.phpt b/mongodb-2.1.1/tests/cursor/cursorinterface-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursorinterface-001.phpt
rename to mongodb-2.1.1/tests/cursor/cursorinterface-001.phpt
diff --git a/mongodb-2.1.0/tests/cursor/cursorinterface-002.phpt b/mongodb-2.1.1/tests/cursor/cursorinterface-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/cursor/cursorinterface-002.phpt
rename to mongodb-2.1.1/tests/cursor/cursorinterface-002.phpt
diff --git a/mongodb-2.1.0/tests/exception/bulkwriteexception-getwriteresult-001.phpt b/mongodb-2.1.1/tests/exception/bulkwriteexception-getwriteresult-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/exception/bulkwriteexception-getwriteresult-001.phpt
rename to mongodb-2.1.1/tests/exception/bulkwriteexception-getwriteresult-001.phpt
diff --git a/mongodb-2.1.0/tests/exception/bulkwriteexception-haserrorlabel-001.phpt b/mongodb-2.1.1/tests/exception/bulkwriteexception-haserrorlabel-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/exception/bulkwriteexception-haserrorlabel-001.phpt
rename to mongodb-2.1.1/tests/exception/bulkwriteexception-haserrorlabel-001.phpt
diff --git a/mongodb-2.1.0/tests/exception/bulkwriteexception-haserrorlabel-002.phpt b/mongodb-2.1.1/tests/exception/bulkwriteexception-haserrorlabel-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/exception/bulkwriteexception-haserrorlabel-002.phpt
rename to mongodb-2.1.1/tests/exception/bulkwriteexception-haserrorlabel-002.phpt
diff --git a/mongodb-2.1.0/tests/exception/bulkwriteexception-haserrorlabel_error-001.phpt b/mongodb-2.1.1/tests/exception/bulkwriteexception-haserrorlabel_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/exception/bulkwriteexception-haserrorlabel_error-001.phpt
rename to mongodb-2.1.1/tests/exception/bulkwriteexception-haserrorlabel_error-001.phpt
diff --git a/mongodb-2.1.0/tests/exception/commandexception-getresultdocument-001.phpt b/mongodb-2.1.1/tests/exception/commandexception-getresultdocument-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/exception/commandexception-getresultdocument-001.phpt
rename to mongodb-2.1.1/tests/exception/commandexception-getresultdocument-001.phpt
diff --git a/mongodb-2.1.0/tests/exception/commandexception-haserrorlabel-001.phpt b/mongodb-2.1.1/tests/exception/commandexception-haserrorlabel-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/exception/commandexception-haserrorlabel-001.phpt
rename to mongodb-2.1.1/tests/exception/commandexception-haserrorlabel-001.phpt
diff --git a/mongodb-2.1.0/tests/exception/commandexception-haserrorlabel_error-001.phpt b/mongodb-2.1.1/tests/exception/commandexception-haserrorlabel_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/exception/commandexception-haserrorlabel_error-001.phpt
rename to mongodb-2.1.1/tests/exception/commandexception-haserrorlabel_error-001.phpt
diff --git a/mongodb-2.1.0/tests/exception/exception-001.phpt b/mongodb-2.1.1/tests/exception/exception-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/exception/exception-001.phpt
rename to mongodb-2.1.1/tests/exception/exception-001.phpt
diff --git a/mongodb-2.1.0/tests/exception/runtimeexception-haserrorlabel-001.phpt b/mongodb-2.1.1/tests/exception/runtimeexception-haserrorlabel-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/exception/runtimeexception-haserrorlabel-001.phpt
rename to mongodb-2.1.1/tests/exception/runtimeexception-haserrorlabel-001.phpt
diff --git a/mongodb-2.1.0/tests/exception/runtimeexception-haserrorlabel_error-001.phpt b/mongodb-2.1.1/tests/exception/runtimeexception-haserrorlabel_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/exception/runtimeexception-haserrorlabel_error-001.phpt
rename to mongodb-2.1.1/tests/exception/runtimeexception-haserrorlabel_error-001.phpt
diff --git a/mongodb-2.1.0/tests/functional/cursor-001.phpt b/mongodb-2.1.1/tests/functional/cursor-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/functional/cursor-001.phpt
rename to mongodb-2.1.1/tests/functional/cursor-001.phpt
diff --git a/mongodb-2.1.0/tests/functional/cursorid-001.phpt b/mongodb-2.1.1/tests/functional/cursorid-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/functional/cursorid-001.phpt
rename to mongodb-2.1.1/tests/functional/cursorid-001.phpt
diff --git a/mongodb-2.1.0/tests/functional/query-sort-001.phpt b/mongodb-2.1.1/tests/functional/query-sort-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/functional/query-sort-001.phpt
rename to mongodb-2.1.1/tests/functional/query-sort-001.phpt
diff --git a/mongodb-2.1.0/tests/functional/query-sort-002.phpt b/mongodb-2.1.1/tests/functional/query-sort-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/functional/query-sort-002.phpt
rename to mongodb-2.1.1/tests/functional/query-sort-002.phpt
diff --git a/mongodb-2.1.0/tests/functional/query-sort-003.phpt b/mongodb-2.1.1/tests/functional/query-sort-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/functional/query-sort-003.phpt
rename to mongodb-2.1.1/tests/functional/query-sort-003.phpt
diff --git a/mongodb-2.1.0/tests/functional/query-sort-004.phpt b/mongodb-2.1.1/tests/functional/query-sort-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/functional/query-sort-004.phpt
rename to mongodb-2.1.1/tests/functional/query-sort-004.phpt
diff --git a/mongodb-2.1.0/tests/ini/ini-debug-ini_get-001.phpt b/mongodb-2.1.1/tests/ini/ini-debug-ini_get-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/ini/ini-debug-ini_get-001.phpt
rename to mongodb-2.1.1/tests/ini/ini-debug-ini_get-001.phpt
diff --git a/mongodb-2.1.0/tests/ini/ini-debug-ini_get-002.phpt b/mongodb-2.1.1/tests/ini/ini-debug-ini_get-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/ini/ini-debug-ini_get-002.phpt
rename to mongodb-2.1.1/tests/ini/ini-debug-ini_get-002.phpt
diff --git a/mongodb-2.1.0/tests/ini/ini-debug-phpinfo-001.phpt b/mongodb-2.1.1/tests/ini/ini-debug-phpinfo-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/ini/ini-debug-phpinfo-001.phpt
rename to mongodb-2.1.1/tests/ini/ini-debug-phpinfo-001.phpt
diff --git a/mongodb-2.1.0/tests/ini/ini-debug-phpinfo-002.phpt b/mongodb-2.1.1/tests/ini/ini-debug-phpinfo-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/ini/ini-debug-phpinfo-002.phpt
rename to mongodb-2.1.1/tests/ini/ini-debug-phpinfo-002.phpt
diff --git a/mongodb-2.1.0/tests/logging/logging-addSubscriber-001.phpt b/mongodb-2.1.1/tests/logging/logging-addSubscriber-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/logging/logging-addSubscriber-001.phpt
rename to mongodb-2.1.1/tests/logging/logging-addSubscriber-001.phpt
diff --git a/mongodb-2.1.0/tests/logging/logging-addSubscriber-002.phpt b/mongodb-2.1.1/tests/logging/logging-addSubscriber-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/logging/logging-addSubscriber-002.phpt
rename to mongodb-2.1.1/tests/logging/logging-addSubscriber-002.phpt
diff --git a/mongodb-2.1.0/tests/logging/logging-addSubscriber-003.phpt b/mongodb-2.1.1/tests/logging/logging-addSubscriber-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/logging/logging-addSubscriber-003.phpt
rename to mongodb-2.1.1/tests/logging/logging-addSubscriber-003.phpt
diff --git a/mongodb-2.1.0/tests/logging/logging-addSubscriber-004.phpt b/mongodb-2.1.1/tests/logging/logging-addSubscriber-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/logging/logging-addSubscriber-004.phpt
rename to mongodb-2.1.1/tests/logging/logging-addSubscriber-004.phpt
diff --git a/mongodb-2.1.0/tests/logging/logging-addSubscriber-005.phpt b/mongodb-2.1.1/tests/logging/logging-addSubscriber-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/logging/logging-addSubscriber-005.phpt
rename to mongodb-2.1.1/tests/logging/logging-addSubscriber-005.phpt
diff --git a/mongodb-2.1.0/tests/logging/logging-removeSubscriber-001.phpt b/mongodb-2.1.1/tests/logging/logging-removeSubscriber-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/logging/logging-removeSubscriber-001.phpt
rename to mongodb-2.1.1/tests/logging/logging-removeSubscriber-001.phpt
diff --git a/mongodb-2.1.0/tests/logging/logging-removeSubscriber-002.phpt b/mongodb-2.1.1/tests/logging/logging-removeSubscriber-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/logging/logging-removeSubscriber-002.phpt
rename to mongodb-2.1.1/tests/logging/logging-removeSubscriber-002.phpt
diff --git a/mongodb-2.1.0/tests/logging/logging-removeSubscriber-003.phpt b/mongodb-2.1.1/tests/logging/logging-removeSubscriber-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/logging/logging-removeSubscriber-003.phpt
rename to mongodb-2.1.1/tests/logging/logging-removeSubscriber-003.phpt
diff --git a/mongodb-2.1.0/tests/logging/logsubscriber-constants.phpt b/mongodb-2.1.1/tests/logging/logsubscriber-constants.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/logging/logsubscriber-constants.phpt
rename to mongodb-2.1.1/tests/logging/logsubscriber-constants.phpt
diff --git a/mongodb-2.1.0/tests/logging/mongoc_log_error-001.phpt b/mongodb-2.1.1/tests/logging/mongoc_log_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/logging/mongoc_log_error-001.phpt
rename to mongodb-2.1.1/tests/logging/mongoc_log_error-001.phpt
diff --git a/mongodb-2.1.0/tests/logging/mongoc_log_error-002.phpt b/mongodb-2.1.1/tests/logging/mongoc_log_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/logging/mongoc_log_error-002.phpt
rename to mongodb-2.1.1/tests/logging/mongoc_log_error-002.phpt
diff --git a/mongodb-2.1.0/tests/logging/mongoc_log_error-003.phpt b/mongodb-2.1.1/tests/logging/mongoc_log_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/logging/mongoc_log_error-003.phpt
rename to mongodb-2.1.1/tests/logging/mongoc_log_error-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/bug0851-001.phpt b/mongodb-2.1.1/tests/manager/bug0851-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/bug0851-001.phpt
rename to mongodb-2.1.1/tests/manager/bug0851-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/bug0912-001.phpt b/mongodb-2.1.1/tests/manager/bug0912-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/bug0912-001.phpt
rename to mongodb-2.1.1/tests/manager/bug0912-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/bug0913-001.phpt b/mongodb-2.1.1/tests/manager/bug0913-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/bug0913-001.phpt
rename to mongodb-2.1.1/tests/manager/bug0913-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/bug0940-001.phpt b/mongodb-2.1.1/tests/manager/bug0940-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/bug0940-001.phpt
rename to mongodb-2.1.1/tests/manager/bug0940-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/bug1163-001.phpt b/mongodb-2.1.1/tests/manager/bug1163-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/bug1163-001.phpt
rename to mongodb-2.1.1/tests/manager/bug1163-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-addSubscriber-001.phpt b/mongodb-2.1.1/tests/manager/manager-addSubscriber-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-addSubscriber-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-addSubscriber-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-addSubscriber-002.phpt b/mongodb-2.1.1/tests/manager/manager-addSubscriber-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-addSubscriber-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-addSubscriber-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-addSubscriber-003.phpt b/mongodb-2.1.1/tests/manager/manager-addSubscriber-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-addSubscriber-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-addSubscriber-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-addSubscriber-004.phpt b/mongodb-2.1.1/tests/manager/manager-addSubscriber-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-addSubscriber-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-addSubscriber-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-addSubscriber-005.phpt b/mongodb-2.1.1/tests/manager/manager-addSubscriber-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-addSubscriber-005.phpt
rename to mongodb-2.1.1/tests/manager/manager-addSubscriber-005.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-addSubscriber-006.phpt b/mongodb-2.1.1/tests/manager/manager-addSubscriber-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-addSubscriber-006.phpt
rename to mongodb-2.1.1/tests/manager/manager-addSubscriber-006.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-addSubscriber_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-addSubscriber_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-addSubscriber_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-addSubscriber_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-createClientEncryption-001.phpt b/mongodb-2.1.1/tests/manager/manager-createClientEncryption-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-createClientEncryption-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-createClientEncryption-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-createClientEncryption-error-001.phpt b/mongodb-2.1.1/tests/manager/manager-createClientEncryption-error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-createClientEncryption-error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-createClientEncryption-error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-createClientEncryption-error-002.phpt b/mongodb-2.1.1/tests/manager/manager-createClientEncryption-error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-createClientEncryption-error-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-createClientEncryption-error-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-003.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-004.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-005.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-005.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-005.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-006.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-006.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-006.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-007.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-007.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-007.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-008.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-008.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-008.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-appname-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-appname-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-appname-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-appname-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-appname_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-appname_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-appname_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-appname_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-auth_mechanism-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-auth_mechanism-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-auth_mechanism-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-auth_mechanism-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-auth_mechanism-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-auth_mechanism-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-auth_mechanism-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-auth_mechanism-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-auth_mechanism-error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-auth_mechanism-error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-auth_mechanism-error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-auth_mechanism-error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-auth_source-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-auth_source-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-auth_source-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-auth_source-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-auto_encryption-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-auto_encryption-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-auto_encryption-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-auto_encryption-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-auto_encryption-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-auto_encryption-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-auto_encryption-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-auto_encryption-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-auto_encryption-error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-auto_encryption-error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-auto_encryption-error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-auto_encryption-error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-auto_encryption-error-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-auto_encryption-error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-auto_encryption-error-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-auto_encryption-error-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-auto_encryption-error-003.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-auto_encryption-error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-auto_encryption-error-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-auto_encryption-error-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-auto_encryption-error-004.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-auto_encryption-error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-auto_encryption-error-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-auto_encryption-error-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-directconnection-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-directconnection-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-directconnection-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-directconnection-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-directconnection-error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-directconnection-error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-directconnection-error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-directconnection-error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-directconnection-error-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-directconnection-error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-directconnection-error-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-directconnection-error-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-003.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-004.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-005.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-005.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-005.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-006.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-006.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-006.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-007.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence-007.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence-007.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-disableClientPersistence_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-disableClientPersistence_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-driver-metadata-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-driver-metadata-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-driver-metadata-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-driver-metadata-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-duplicate-option-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-duplicate-option-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-duplicate-option-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-duplicate-option-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-duplicate-option-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-duplicate-option-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-duplicate-option-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-duplicate-option-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-duplicate-option-003.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-duplicate-option-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-duplicate-option-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-duplicate-option-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-duplicate-option-004.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-duplicate-option-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-duplicate-option-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-duplicate-option-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-loadBalanced_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-loadBalanced_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-loadBalanced_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-loadBalanced_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-read_concern-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-read_concern-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-read_concern-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-read_concern-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-read_concern-error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-read_concern-error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-read_concern-error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-read_concern-error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-read_preference-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-read_preference-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-read_preference-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-read_preference-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-read_preference-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-read_preference-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-read_preference-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-read_preference-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-read_preference-error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-read_preference-error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-read_preference-error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-read_preference-error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-read_preference-error-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-read_preference-error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-read_preference-error-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-read_preference-error-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-read_preference-error-004.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-read_preference-error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-read_preference-error-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-read_preference-error-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-server.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-server.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-server.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-server.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-serverApi-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-serverApi-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-serverApi-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-serverApi-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-serverApi-error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-serverApi-error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-serverApi-error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-serverApi-error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-srvMaxHosts_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-srvMaxHosts_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-srvMaxHosts_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-srvMaxHosts_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-srvServiceName_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-srvServiceName_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-srvServiceName_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-srvServiceName_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-ssl-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-ssl-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-ssl-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-ssl-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-ssl-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-ssl-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-ssl-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-ssl-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-ssl-003.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-ssl-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-ssl-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-ssl-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-tls-error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-tls-error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-tls-error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-tls-error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-wireversion.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-wireversion.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-wireversion.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-wireversion.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-write_concern-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-write_concern-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-write_concern-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-write_concern-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-write_concern-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-write_concern-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-write_concern-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-write_concern-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-write_concern-003.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-write_concern-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-write_concern-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-write_concern-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-write_concern-004.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-write_concern-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-write_concern-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-write_concern-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-write_concern-005.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-write_concern-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-write_concern-005.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-write_concern-005.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-write_concern-006.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-write_concern-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-write_concern-006.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-write_concern-006.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-write_concern-error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-write_concern-error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-write_concern-error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-write_concern-error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-write_concern-error-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-write_concern-error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-write_concern-error-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-write_concern-error-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-write_concern-error-003.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-write_concern-error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-write_concern-error-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-write_concern-error-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-write_concern-error-005.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-write_concern-error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-write_concern-error-005.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-write_concern-error-005.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-write_concern-error-006.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-write_concern-error-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-write_concern-error-006.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-write_concern-error-006.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor-write_concern-error-007.phpt b/mongodb-2.1.1/tests/manager/manager-ctor-write_concern-error-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor-write_concern-error-007.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor-write_concern-error-007.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-ctor_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor_error-002.phpt b/mongodb-2.1.1/tests/manager/manager-ctor_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor_error-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor_error-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor_error-003.phpt b/mongodb-2.1.1/tests/manager/manager-ctor_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor_error-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor_error-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor_error-004.phpt b/mongodb-2.1.1/tests/manager/manager-ctor_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor_error-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor_error-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-ctor_error-005.phpt b/mongodb-2.1.1/tests/manager/manager-ctor_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-ctor_error-005.phpt
rename to mongodb-2.1.1/tests/manager/manager-ctor_error-005.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-debug-001.phpt b/mongodb-2.1.1/tests/manager/manager-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-debug-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-debug-002.phpt b/mongodb-2.1.1/tests/manager/manager-debug-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-debug-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-debug-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-debug-003.phpt b/mongodb-2.1.1/tests/manager/manager-debug-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-debug-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-debug-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-destruct-001.phpt b/mongodb-2.1.1/tests/manager/manager-destruct-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-destruct-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-destruct-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-001.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-002.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-003.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-004.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-005.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-005.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-005.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-006.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-006.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-006.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-007.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-007.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-007.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-008.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-008.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-008.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-009.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-009.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-009.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-010.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-010.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-010.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-011.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-011.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-011.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-012.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-012.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-012.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-013.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-013.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-013.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite-014.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite-014.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite-014.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite-014.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-002.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-003.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-004.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-005.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-005.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-005.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-006.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-006.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-006.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-007.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-007.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-007.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-008.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-008.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-008.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-009.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-009.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-009.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-010.phpt b/mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeBulkWrite_error-010.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeBulkWrite_error-010.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeCommand-001.phpt b/mongodb-2.1.1/tests/manager/manager-executeCommand-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeCommand-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeCommand-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeCommand-002.phpt b/mongodb-2.1.1/tests/manager/manager-executeCommand-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeCommand-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeCommand-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeCommand-004.phpt b/mongodb-2.1.1/tests/manager/manager-executeCommand-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeCommand-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeCommand-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeCommand-005.phpt b/mongodb-2.1.1/tests/manager/manager-executeCommand-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeCommand-005.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeCommand-005.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeCommand-006.phpt b/mongodb-2.1.1/tests/manager/manager-executeCommand-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeCommand-006.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeCommand-006.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeCommand-007.phpt b/mongodb-2.1.1/tests/manager/manager-executeCommand-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeCommand-007.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeCommand-007.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeCommand_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-executeCommand_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeCommand_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeCommand_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeCommand_error-002.phpt b/mongodb-2.1.1/tests/manager/manager-executeCommand_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeCommand_error-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeCommand_error-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeCommand_error-003.phpt b/mongodb-2.1.1/tests/manager/manager-executeCommand_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeCommand_error-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeCommand_error-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeCommand_error-004.phpt b/mongodb-2.1.1/tests/manager/manager-executeCommand_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeCommand_error-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeCommand_error-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeCommand_error-005.phpt b/mongodb-2.1.1/tests/manager/manager-executeCommand_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeCommand_error-005.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeCommand_error-005.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeQuery-002.phpt b/mongodb-2.1.1/tests/manager/manager-executeQuery-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeQuery-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeQuery-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeQuery-003.phpt b/mongodb-2.1.1/tests/manager/manager-executeQuery-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeQuery-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeQuery-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeQuery-005.phpt b/mongodb-2.1.1/tests/manager/manager-executeQuery-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeQuery-005.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeQuery-005.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeQuery-006.phpt b/mongodb-2.1.1/tests/manager/manager-executeQuery-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeQuery-006.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeQuery-006.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeQuery-007.phpt b/mongodb-2.1.1/tests/manager/manager-executeQuery-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeQuery-007.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeQuery-007.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeQuery_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-executeQuery_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeQuery_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeQuery_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeQuery_error-002.phpt b/mongodb-2.1.1/tests/manager/manager-executeQuery_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeQuery_error-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeQuery_error-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeQuery_error-003.phpt b/mongodb-2.1.1/tests/manager/manager-executeQuery_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeQuery_error-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeQuery_error-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeReadCommand-001.phpt b/mongodb-2.1.1/tests/manager/manager-executeReadCommand-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeReadCommand-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeReadCommand-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeReadCommand-002.phpt b/mongodb-2.1.1/tests/manager/manager-executeReadCommand-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeReadCommand-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeReadCommand-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeReadCommand-003.phpt b/mongodb-2.1.1/tests/manager/manager-executeReadCommand-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeReadCommand-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeReadCommand-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeReadCommand_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-executeReadCommand_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeReadCommand_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeReadCommand_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeReadWriteCommand-001.phpt b/mongodb-2.1.1/tests/manager/manager-executeReadWriteCommand-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeReadWriteCommand-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeReadWriteCommand-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeReadWriteCommand-002.phpt b/mongodb-2.1.1/tests/manager/manager-executeReadWriteCommand-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeReadWriteCommand-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeReadWriteCommand-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeReadWriteCommand-003.phpt b/mongodb-2.1.1/tests/manager/manager-executeReadWriteCommand-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeReadWriteCommand-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeReadWriteCommand-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeReadWriteCommand_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-executeReadWriteCommand_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeReadWriteCommand_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeReadWriteCommand_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeReadWriteCommand_error-002.phpt b/mongodb-2.1.1/tests/manager/manager-executeReadWriteCommand_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeReadWriteCommand_error-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeReadWriteCommand_error-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeWriteCommand-001.phpt b/mongodb-2.1.1/tests/manager/manager-executeWriteCommand-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeWriteCommand-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeWriteCommand-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeWriteCommand-002.phpt b/mongodb-2.1.1/tests/manager/manager-executeWriteCommand-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeWriteCommand-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeWriteCommand-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeWriteCommand-003.phpt b/mongodb-2.1.1/tests/manager/manager-executeWriteCommand-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeWriteCommand-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeWriteCommand-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeWriteCommand_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-executeWriteCommand_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeWriteCommand_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeWriteCommand_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeWriteCommand_error-002.phpt b/mongodb-2.1.1/tests/manager/manager-executeWriteCommand_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeWriteCommand_error-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeWriteCommand_error-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeWriteCommand_error-003.phpt b/mongodb-2.1.1/tests/manager/manager-executeWriteCommand_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeWriteCommand_error-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeWriteCommand_error-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-executeWriteCommand_error-004.phpt b/mongodb-2.1.1/tests/manager/manager-executeWriteCommand_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-executeWriteCommand_error-004.phpt
rename to mongodb-2.1.1/tests/manager/manager-executeWriteCommand_error-004.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-getencryptedfieldsmap-001.phpt b/mongodb-2.1.1/tests/manager/manager-getencryptedfieldsmap-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-getencryptedfieldsmap-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-getencryptedfieldsmap-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-getreadconcern-001.phpt b/mongodb-2.1.1/tests/manager/manager-getreadconcern-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-getreadconcern-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-getreadconcern-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-getreadpreference-001.phpt b/mongodb-2.1.1/tests/manager/manager-getreadpreference-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-getreadpreference-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-getreadpreference-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-getservers-001.phpt b/mongodb-2.1.1/tests/manager/manager-getservers-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-getservers-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-getservers-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-getservers-002.phpt b/mongodb-2.1.1/tests/manager/manager-getservers-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-getservers-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-getservers-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-getwriteconcern-001.phpt b/mongodb-2.1.1/tests/manager/manager-getwriteconcern-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-getwriteconcern-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-getwriteconcern-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-invalidnamespace.phpt b/mongodb-2.1.1/tests/manager/manager-invalidnamespace.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-invalidnamespace.phpt
rename to mongodb-2.1.1/tests/manager/manager-invalidnamespace.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-removeSubscriber-001.phpt b/mongodb-2.1.1/tests/manager/manager-removeSubscriber-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-removeSubscriber-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-removeSubscriber-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-removeSubscriber-002.phpt b/mongodb-2.1.1/tests/manager/manager-removeSubscriber-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-removeSubscriber-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-removeSubscriber-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-selectServer-001.phpt b/mongodb-2.1.1/tests/manager/manager-selectServer-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-selectServer-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-selectServer-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-selectServer-002.phpt b/mongodb-2.1.1/tests/manager/manager-selectServer-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-selectServer-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-selectServer-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-selectserver_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-selectserver_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-selectserver_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-selectserver_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-serialization_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-serialization_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-serialization_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-serialization_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-set-uri-options-001.phpt b/mongodb-2.1.1/tests/manager/manager-set-uri-options-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-set-uri-options-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-set-uri-options-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-set-uri-options-002.phpt b/mongodb-2.1.1/tests/manager/manager-set-uri-options-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-set-uri-options-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-set-uri-options-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-set-uri-options-003.phpt b/mongodb-2.1.1/tests/manager/manager-set-uri-options-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-set-uri-options-003.phpt
rename to mongodb-2.1.1/tests/manager/manager-set-uri-options-003.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-startSession_error-001.phpt b/mongodb-2.1.1/tests/manager/manager-startSession_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-startSession_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-startSession_error-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-startSession_error-002.phpt b/mongodb-2.1.1/tests/manager/manager-startSession_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-startSession_error-002.phpt
rename to mongodb-2.1.1/tests/manager/manager-startSession_error-002.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager-var-dump-001.phpt b/mongodb-2.1.1/tests/manager/manager-var-dump-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager-var-dump-001.phpt
rename to mongodb-2.1.1/tests/manager/manager-var-dump-001.phpt
diff --git a/mongodb-2.1.0/tests/manager/manager_error-001.phpt b/mongodb-2.1.1/tests/manager/manager_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/manager/manager_error-001.phpt
rename to mongodb-2.1.1/tests/manager/manager_error-001.phpt
diff --git a/mongodb-2.1.0/tests/query/bug0430-001.phpt b/mongodb-2.1.1/tests/query/bug0430-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/bug0430-001.phpt
rename to mongodb-2.1.1/tests/query/bug0430-001.phpt
diff --git a/mongodb-2.1.0/tests/query/bug0430-002.phpt b/mongodb-2.1.1/tests/query/bug0430-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/bug0430-002.phpt
rename to mongodb-2.1.1/tests/query/bug0430-002.phpt
diff --git a/mongodb-2.1.0/tests/query/bug0430-003.phpt b/mongodb-2.1.1/tests/query/bug0430-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/bug0430-003.phpt
rename to mongodb-2.1.1/tests/query/bug0430-003.phpt
diff --git a/mongodb-2.1.0/tests/query/bug2457-001.phpt b/mongodb-2.1.1/tests/query/bug2457-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/bug2457-001.phpt
rename to mongodb-2.1.1/tests/query/bug2457-001.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor-001.phpt b/mongodb-2.1.1/tests/query/query-ctor-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor-001.phpt
rename to mongodb-2.1.1/tests/query/query-ctor-001.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor-002.phpt b/mongodb-2.1.1/tests/query/query-ctor-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor-002.phpt
rename to mongodb-2.1.1/tests/query/query-ctor-002.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor-005.phpt b/mongodb-2.1.1/tests/query/query-ctor-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor-005.phpt
rename to mongodb-2.1.1/tests/query/query-ctor-005.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor-007.phpt b/mongodb-2.1.1/tests/query/query-ctor-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor-007.phpt
rename to mongodb-2.1.1/tests/query/query-ctor-007.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor-comment-001.phpt b/mongodb-2.1.1/tests/query/query-ctor-comment-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor-comment-001.phpt
rename to mongodb-2.1.1/tests/query/query-ctor-comment-001.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor-comment_error-001.phpt b/mongodb-2.1.1/tests/query/query-ctor-comment_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor-comment_error-001.phpt
rename to mongodb-2.1.1/tests/query/query-ctor-comment_error-001.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor-let-001.phpt b/mongodb-2.1.1/tests/query/query-ctor-let-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor-let-001.phpt
rename to mongodb-2.1.1/tests/query/query-ctor-let-001.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor-let_error-001.phpt b/mongodb-2.1.1/tests/query/query-ctor-let_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor-let_error-001.phpt
rename to mongodb-2.1.1/tests/query/query-ctor-let_error-001.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor_error-001.phpt b/mongodb-2.1.1/tests/query/query-ctor_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor_error-001.phpt
rename to mongodb-2.1.1/tests/query/query-ctor_error-001.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor_error-002.phpt b/mongodb-2.1.1/tests/query/query-ctor_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor_error-002.phpt
rename to mongodb-2.1.1/tests/query/query-ctor_error-002.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor_error-004.phpt b/mongodb-2.1.1/tests/query/query-ctor_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor_error-004.phpt
rename to mongodb-2.1.1/tests/query/query-ctor_error-004.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor_error-005.phpt b/mongodb-2.1.1/tests/query/query-ctor_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor_error-005.phpt
rename to mongodb-2.1.1/tests/query/query-ctor_error-005.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor_error-006.phpt b/mongodb-2.1.1/tests/query/query-ctor_error-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor_error-006.phpt
rename to mongodb-2.1.1/tests/query/query-ctor_error-006.phpt
diff --git a/mongodb-2.1.0/tests/query/query-ctor_error-007.phpt b/mongodb-2.1.1/tests/query/query-ctor_error-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-ctor_error-007.phpt
rename to mongodb-2.1.1/tests/query/query-ctor_error-007.phpt
diff --git a/mongodb-2.1.0/tests/query/query-debug-001.phpt b/mongodb-2.1.1/tests/query/query-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-debug-001.phpt
rename to mongodb-2.1.1/tests/query/query-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/query/query-debug-002.phpt b/mongodb-2.1.1/tests/query/query-debug-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-debug-002.phpt
rename to mongodb-2.1.1/tests/query/query-debug-002.phpt
diff --git a/mongodb-2.1.0/tests/query/query-debug-003.phpt b/mongodb-2.1.1/tests/query/query-debug-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query-debug-003.phpt
rename to mongodb-2.1.1/tests/query/query-debug-003.phpt
diff --git a/mongodb-2.1.0/tests/query/query_error-001.phpt b/mongodb-2.1.1/tests/query/query_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/query/query_error-001.phpt
rename to mongodb-2.1.1/tests/query/query_error-001.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/bug1598-001.phpt b/mongodb-2.1.1/tests/readConcern/bug1598-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/bug1598-001.phpt
rename to mongodb-2.1.1/tests/readConcern/bug1598-001.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/bug1598-002.phpt b/mongodb-2.1.1/tests/readConcern/bug1598-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/bug1598-002.phpt
rename to mongodb-2.1.1/tests/readConcern/bug1598-002.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-bsonserialize-001.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-bsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-bsonserialize-001.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-bsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-bsonserialize-002.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-bsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-bsonserialize-002.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-bsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-constants.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-constants.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-constants.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-constants.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-ctor-001.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-ctor-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-ctor-001.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-ctor-001.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-ctor_error-001.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-ctor_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-ctor_error-001.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-ctor_error-001.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-ctor_error-002.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-ctor_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-ctor_error-002.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-ctor_error-002.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-debug-001.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-debug-001.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-getlevel-001.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-getlevel-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-getlevel-001.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-getlevel-001.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-isdefault-001.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-isdefault-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-isdefault-001.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-isdefault-001.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-serialization-002.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-serialization-002.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-serialization_error-002.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-serialization_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-serialization_error-002.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-serialization_error-002.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-set_state-001.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-set_state-001.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-set_state_error-001.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern-var_export-001.phpt b/mongodb-2.1.1/tests/readConcern/readconcern-var_export-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern-var_export-001.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern-var_export-001.phpt
diff --git a/mongodb-2.1.0/tests/readConcern/readconcern_error-001.phpt b/mongodb-2.1.1/tests/readConcern/readconcern_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readConcern/readconcern_error-001.phpt
rename to mongodb-2.1.1/tests/readConcern/readconcern_error-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/bug0146-001.phpt b/mongodb-2.1.1/tests/readPreference/bug0146-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/bug0146-001.phpt
rename to mongodb-2.1.1/tests/readPreference/bug0146-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/bug0851-001.phpt b/mongodb-2.1.1/tests/readPreference/bug0851-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/bug0851-001.phpt
rename to mongodb-2.1.1/tests/readPreference/bug0851-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/bug1598-001.phpt b/mongodb-2.1.1/tests/readPreference/bug1598-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/bug1598-001.phpt
rename to mongodb-2.1.1/tests/readPreference/bug1598-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/bug1598-002.phpt b/mongodb-2.1.1/tests/readPreference/bug1598-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/bug1598-002.phpt
rename to mongodb-2.1.1/tests/readPreference/bug1598-002.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/bug1698-001.phpt b/mongodb-2.1.1/tests/readPreference/bug1698-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/bug1698-001.phpt
rename to mongodb-2.1.1/tests/readPreference/bug1698-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-bsonserialize-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-bsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-bsonserialize-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-bsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-bsonserialize-002.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-bsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-bsonserialize-002.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-bsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-constants-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-constants-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-constants-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-constants-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-ctor-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-ctor-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-ctor-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-ctor-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-ctor-002.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-ctor-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-ctor-002.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-ctor-002.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-ctor_error-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-ctor_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-ctor_error-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-ctor_error-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-ctor_error-002.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-ctor_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-ctor_error-002.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-ctor_error-002.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-ctor_error-003.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-ctor_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-ctor_error-003.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-ctor_error-003.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-ctor_error-004.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-ctor_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-ctor_error-004.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-ctor_error-004.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-ctor_error-007.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-ctor_error-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-ctor_error-007.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-ctor_error-007.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-ctor_error-008.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-ctor_error-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-ctor_error-008.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-ctor_error-008.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-debug-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-debug-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-getHedge-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-getHedge-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-getHedge-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-getHedge-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-getMaxStalenessMS-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-getMaxStalenessMS-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-getMaxStalenessMS-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-getMaxStalenessMS-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-getMaxStalenessMS-002.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-getMaxStalenessMS-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-getMaxStalenessMS-002.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-getMaxStalenessMS-002.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-getModeString-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-getModeString-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-getModeString-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-getModeString-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-getTagSets-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-getTagSets-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-getTagSets-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-getTagSets-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-getTagSets-002.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-getTagSets-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-getTagSets-002.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-getTagSets-002.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-serialization-002.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-serialization-002.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-serialization_error-002.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-serialization_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-serialization_error-002.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-serialization_error-002.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-set_state-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-set_state-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-set_state_error-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-set_state_error-002.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-set_state_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-set_state_error-002.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-set_state_error-002.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference-var_export-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference-var_export-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference-var_export-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference-var_export-001.phpt
diff --git a/mongodb-2.1.0/tests/readPreference/readpreference_error-001.phpt b/mongodb-2.1.1/tests/readPreference/readpreference_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/readPreference/readpreference_error-001.phpt
rename to mongodb-2.1.1/tests/readPreference/readpreference_error-001.phpt
diff --git a/mongodb-2.1.0/tests/replicaset/bug0155.phpt b/mongodb-2.1.1/tests/replicaset/bug0155.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/replicaset/bug0155.phpt
rename to mongodb-2.1.1/tests/replicaset/bug0155.phpt
diff --git a/mongodb-2.1.0/tests/replicaset/bug0898-001.phpt b/mongodb-2.1.1/tests/replicaset/bug0898-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/replicaset/bug0898-001.phpt
rename to mongodb-2.1.1/tests/replicaset/bug0898-001.phpt
diff --git a/mongodb-2.1.0/tests/replicaset/bug0898-002.phpt b/mongodb-2.1.1/tests/replicaset/bug0898-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/replicaset/bug0898-002.phpt
rename to mongodb-2.1.1/tests/replicaset/bug0898-002.phpt
diff --git a/mongodb-2.1.0/tests/replicaset/manager-selectserver-001.phpt b/mongodb-2.1.1/tests/replicaset/manager-selectserver-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/replicaset/manager-selectserver-001.phpt
rename to mongodb-2.1.1/tests/replicaset/manager-selectserver-001.phpt
diff --git a/mongodb-2.1.0/tests/replicaset/readconcern-001.phpt b/mongodb-2.1.1/tests/replicaset/readconcern-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/replicaset/readconcern-001.phpt
rename to mongodb-2.1.1/tests/replicaset/readconcern-001.phpt
diff --git a/mongodb-2.1.0/tests/replicaset/writeconcernerror-001.phpt b/mongodb-2.1.1/tests/replicaset/writeconcernerror-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/replicaset/writeconcernerror-001.phpt
rename to mongodb-2.1.1/tests/replicaset/writeconcernerror-001.phpt
diff --git a/mongodb-2.1.0/tests/replicaset/writeconcernerror-002.phpt b/mongodb-2.1.1/tests/replicaset/writeconcernerror-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/replicaset/writeconcernerror-002.phpt
rename to mongodb-2.1.1/tests/replicaset/writeconcernerror-002.phpt
diff --git a/mongodb-2.1.0/tests/replicaset/writeresult-getserver-001.phpt b/mongodb-2.1.1/tests/replicaset/writeresult-getserver-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/replicaset/writeresult-getserver-001.phpt
rename to mongodb-2.1.1/tests/replicaset/writeresult-getserver-001.phpt
diff --git a/mongodb-2.1.0/tests/replicaset/writeresult-getserver-002.phpt b/mongodb-2.1.1/tests/replicaset/writeresult-getserver-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/replicaset/writeresult-getserver-002.phpt
rename to mongodb-2.1.1/tests/replicaset/writeresult-getserver-002.phpt
diff --git a/mongodb-2.1.0/tests/retryable-reads/retryable-reads-001.phpt b/mongodb-2.1.1/tests/retryable-reads/retryable-reads-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/retryable-reads/retryable-reads-001.phpt
rename to mongodb-2.1.1/tests/retryable-reads/retryable-reads-001.phpt
diff --git a/mongodb-2.1.0/tests/retryable-reads/retryable-reads-002.phpt b/mongodb-2.1.1/tests/retryable-reads/retryable-reads-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/retryable-reads/retryable-reads-002.phpt
rename to mongodb-2.1.1/tests/retryable-reads/retryable-reads-002.phpt
diff --git a/mongodb-2.1.0/tests/retryable-reads/retryable-reads_error-001.phpt b/mongodb-2.1.1/tests/retryable-reads/retryable-reads_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/retryable-reads/retryable-reads_error-001.phpt
rename to mongodb-2.1.1/tests/retryable-reads/retryable-reads_error-001.phpt
diff --git a/mongodb-2.1.0/tests/retryable-reads/retryable-reads_error-002.phpt b/mongodb-2.1.1/tests/retryable-reads/retryable-reads_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/retryable-reads/retryable-reads_error-002.phpt
rename to mongodb-2.1.1/tests/retryable-reads/retryable-reads_error-002.phpt
diff --git a/mongodb-2.1.0/tests/retryable-writes/retryable-writes-001.phpt b/mongodb-2.1.1/tests/retryable-writes/retryable-writes-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/retryable-writes/retryable-writes-001.phpt
rename to mongodb-2.1.1/tests/retryable-writes/retryable-writes-001.phpt
diff --git a/mongodb-2.1.0/tests/retryable-writes/retryable-writes-002.phpt b/mongodb-2.1.1/tests/retryable-writes/retryable-writes-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/retryable-writes/retryable-writes-002.phpt
rename to mongodb-2.1.1/tests/retryable-writes/retryable-writes-002.phpt
diff --git a/mongodb-2.1.0/tests/retryable-writes/retryable-writes-003.phpt b/mongodb-2.1.1/tests/retryable-writes/retryable-writes-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/retryable-writes/retryable-writes-003.phpt
rename to mongodb-2.1.1/tests/retryable-writes/retryable-writes-003.phpt
diff --git a/mongodb-2.1.0/tests/retryable-writes/retryable-writes-004.phpt b/mongodb-2.1.1/tests/retryable-writes/retryable-writes-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/retryable-writes/retryable-writes-004.phpt
rename to mongodb-2.1.1/tests/retryable-writes/retryable-writes-004.phpt
diff --git a/mongodb-2.1.0/tests/retryable-writes/retryable-writes-005.phpt b/mongodb-2.1.1/tests/retryable-writes/retryable-writes-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/retryable-writes/retryable-writes-005.phpt
rename to mongodb-2.1.1/tests/retryable-writes/retryable-writes-005.phpt
diff --git a/mongodb-2.1.0/tests/retryable-writes/retryable-writes_error-001.phpt b/mongodb-2.1.1/tests/retryable-writes/retryable-writes_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/retryable-writes/retryable-writes_error-001.phpt
rename to mongodb-2.1.1/tests/retryable-writes/retryable-writes_error-001.phpt
diff --git a/mongodb-2.1.0/tests/server/bug0671-002.phpt b/mongodb-2.1.1/tests/server/bug0671-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/bug0671-002.phpt
rename to mongodb-2.1.1/tests/server/bug0671-002.phpt
diff --git a/mongodb-2.1.0/tests/server/server-constants.phpt b/mongodb-2.1.1/tests/server/server-constants.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-constants.phpt
rename to mongodb-2.1.1/tests/server/server-constants.phpt
diff --git a/mongodb-2.1.0/tests/server/server-construct-001.phpt b/mongodb-2.1.1/tests/server/server-construct-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-construct-001.phpt
rename to mongodb-2.1.1/tests/server/server-construct-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-debug.phpt b/mongodb-2.1.1/tests/server/server-debug.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-debug.phpt
rename to mongodb-2.1.1/tests/server/server-debug.phpt
diff --git a/mongodb-2.1.0/tests/server/server-errors.phpt b/mongodb-2.1.1/tests/server/server-errors.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-errors.phpt
rename to mongodb-2.1.1/tests/server/server-errors.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeBulkWrite-001.phpt b/mongodb-2.1.1/tests/server/server-executeBulkWrite-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeBulkWrite-001.phpt
rename to mongodb-2.1.1/tests/server/server-executeBulkWrite-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeBulkWrite-002.phpt b/mongodb-2.1.1/tests/server/server-executeBulkWrite-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeBulkWrite-002.phpt
rename to mongodb-2.1.1/tests/server/server-executeBulkWrite-002.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeBulkWrite-003.phpt b/mongodb-2.1.1/tests/server/server-executeBulkWrite-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeBulkWrite-003.phpt
rename to mongodb-2.1.1/tests/server/server-executeBulkWrite-003.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeBulkWrite-004.phpt b/mongodb-2.1.1/tests/server/server-executeBulkWrite-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeBulkWrite-004.phpt
rename to mongodb-2.1.1/tests/server/server-executeBulkWrite-004.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeBulkWrite-005.phpt b/mongodb-2.1.1/tests/server/server-executeBulkWrite-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeBulkWrite-005.phpt
rename to mongodb-2.1.1/tests/server/server-executeBulkWrite-005.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeBulkWrite-006.phpt b/mongodb-2.1.1/tests/server/server-executeBulkWrite-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeBulkWrite-006.phpt
rename to mongodb-2.1.1/tests/server/server-executeBulkWrite-006.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeBulkWrite-007.phpt b/mongodb-2.1.1/tests/server/server-executeBulkWrite-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeBulkWrite-007.phpt
rename to mongodb-2.1.1/tests/server/server-executeBulkWrite-007.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeBulkWrite-008.phpt b/mongodb-2.1.1/tests/server/server-executeBulkWrite-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeBulkWrite-008.phpt
rename to mongodb-2.1.1/tests/server/server-executeBulkWrite-008.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeBulkWrite-009.phpt b/mongodb-2.1.1/tests/server/server-executeBulkWrite-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeBulkWrite-009.phpt
rename to mongodb-2.1.1/tests/server/server-executeBulkWrite-009.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeBulkWrite_error-001.phpt b/mongodb-2.1.1/tests/server/server-executeBulkWrite_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeBulkWrite_error-001.phpt
rename to mongodb-2.1.1/tests/server/server-executeBulkWrite_error-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeBulkWrite_error-002.phpt b/mongodb-2.1.1/tests/server/server-executeBulkWrite_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeBulkWrite_error-002.phpt
rename to mongodb-2.1.1/tests/server/server-executeBulkWrite_error-002.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeCommand-001.phpt b/mongodb-2.1.1/tests/server/server-executeCommand-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeCommand-001.phpt
rename to mongodb-2.1.1/tests/server/server-executeCommand-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeCommand-002.phpt b/mongodb-2.1.1/tests/server/server-executeCommand-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeCommand-002.phpt
rename to mongodb-2.1.1/tests/server/server-executeCommand-002.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeCommand-003.phpt b/mongodb-2.1.1/tests/server/server-executeCommand-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeCommand-003.phpt
rename to mongodb-2.1.1/tests/server/server-executeCommand-003.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeCommand-004.phpt b/mongodb-2.1.1/tests/server/server-executeCommand-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeCommand-004.phpt
rename to mongodb-2.1.1/tests/server/server-executeCommand-004.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeCommand-006.phpt b/mongodb-2.1.1/tests/server/server-executeCommand-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeCommand-006.phpt
rename to mongodb-2.1.1/tests/server/server-executeCommand-006.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeCommand-007.phpt b/mongodb-2.1.1/tests/server/server-executeCommand-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeCommand-007.phpt
rename to mongodb-2.1.1/tests/server/server-executeCommand-007.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeCommand-008.phpt b/mongodb-2.1.1/tests/server/server-executeCommand-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeCommand-008.phpt
rename to mongodb-2.1.1/tests/server/server-executeCommand-008.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeCommand-009.phpt b/mongodb-2.1.1/tests/server/server-executeCommand-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeCommand-009.phpt
rename to mongodb-2.1.1/tests/server/server-executeCommand-009.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeCommand-010.phpt b/mongodb-2.1.1/tests/server/server-executeCommand-010.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeCommand-010.phpt
rename to mongodb-2.1.1/tests/server/server-executeCommand-010.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeCommand_error-001.phpt b/mongodb-2.1.1/tests/server/server-executeCommand_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeCommand_error-001.phpt
rename to mongodb-2.1.1/tests/server/server-executeCommand_error-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeQuery-001.phpt b/mongodb-2.1.1/tests/server/server-executeQuery-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeQuery-001.phpt
rename to mongodb-2.1.1/tests/server/server-executeQuery-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeQuery-002.phpt b/mongodb-2.1.1/tests/server/server-executeQuery-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeQuery-002.phpt
rename to mongodb-2.1.1/tests/server/server-executeQuery-002.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeQuery-004.phpt b/mongodb-2.1.1/tests/server/server-executeQuery-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeQuery-004.phpt
rename to mongodb-2.1.1/tests/server/server-executeQuery-004.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeQuery-006.phpt b/mongodb-2.1.1/tests/server/server-executeQuery-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeQuery-006.phpt
rename to mongodb-2.1.1/tests/server/server-executeQuery-006.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeQuery-007.phpt b/mongodb-2.1.1/tests/server/server-executeQuery-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeQuery-007.phpt
rename to mongodb-2.1.1/tests/server/server-executeQuery-007.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeQuery-008.phpt b/mongodb-2.1.1/tests/server/server-executeQuery-008.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeQuery-008.phpt
rename to mongodb-2.1.1/tests/server/server-executeQuery-008.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeQuery-009.phpt b/mongodb-2.1.1/tests/server/server-executeQuery-009.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeQuery-009.phpt
rename to mongodb-2.1.1/tests/server/server-executeQuery-009.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeQuery-011.phpt b/mongodb-2.1.1/tests/server/server-executeQuery-011.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeQuery-011.phpt
rename to mongodb-2.1.1/tests/server/server-executeQuery-011.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeQuery-012.phpt b/mongodb-2.1.1/tests/server/server-executeQuery-012.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeQuery-012.phpt
rename to mongodb-2.1.1/tests/server/server-executeQuery-012.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeQuery-013.phpt b/mongodb-2.1.1/tests/server/server-executeQuery-013.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeQuery-013.phpt
rename to mongodb-2.1.1/tests/server/server-executeQuery-013.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeQuery_error-001.phpt b/mongodb-2.1.1/tests/server/server-executeQuery_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeQuery_error-001.phpt
rename to mongodb-2.1.1/tests/server/server-executeQuery_error-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeReadCommand-001.phpt b/mongodb-2.1.1/tests/server/server-executeReadCommand-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeReadCommand-001.phpt
rename to mongodb-2.1.1/tests/server/server-executeReadCommand-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeReadCommand-002.phpt b/mongodb-2.1.1/tests/server/server-executeReadCommand-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeReadCommand-002.phpt
rename to mongodb-2.1.1/tests/server/server-executeReadCommand-002.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeReadCommand-003.phpt b/mongodb-2.1.1/tests/server/server-executeReadCommand-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeReadCommand-003.phpt
rename to mongodb-2.1.1/tests/server/server-executeReadCommand-003.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeReadCommand_error-001.phpt b/mongodb-2.1.1/tests/server/server-executeReadCommand_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeReadCommand_error-001.phpt
rename to mongodb-2.1.1/tests/server/server-executeReadCommand_error-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeReadWriteCommand-001.phpt b/mongodb-2.1.1/tests/server/server-executeReadWriteCommand-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeReadWriteCommand-001.phpt
rename to mongodb-2.1.1/tests/server/server-executeReadWriteCommand-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeReadWriteCommand-002.phpt b/mongodb-2.1.1/tests/server/server-executeReadWriteCommand-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeReadWriteCommand-002.phpt
rename to mongodb-2.1.1/tests/server/server-executeReadWriteCommand-002.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeReadWriteCommand-003.phpt b/mongodb-2.1.1/tests/server/server-executeReadWriteCommand-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeReadWriteCommand-003.phpt
rename to mongodb-2.1.1/tests/server/server-executeReadWriteCommand-003.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeReadWriteCommand_error-001.phpt b/mongodb-2.1.1/tests/server/server-executeReadWriteCommand_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeReadWriteCommand_error-001.phpt
rename to mongodb-2.1.1/tests/server/server-executeReadWriteCommand_error-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeWriteCommand-001.phpt b/mongodb-2.1.1/tests/server/server-executeWriteCommand-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeWriteCommand-001.phpt
rename to mongodb-2.1.1/tests/server/server-executeWriteCommand-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeWriteCommand-002.phpt b/mongodb-2.1.1/tests/server/server-executeWriteCommand-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeWriteCommand-002.phpt
rename to mongodb-2.1.1/tests/server/server-executeWriteCommand-002.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeWriteCommand-003.phpt b/mongodb-2.1.1/tests/server/server-executeWriteCommand-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeWriteCommand-003.phpt
rename to mongodb-2.1.1/tests/server/server-executeWriteCommand-003.phpt
diff --git a/mongodb-2.1.0/tests/server/server-executeWriteCommand_error-001.phpt b/mongodb-2.1.1/tests/server/server-executeWriteCommand_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-executeWriteCommand_error-001.phpt
rename to mongodb-2.1.1/tests/server/server-executeWriteCommand_error-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-getInfo-001.phpt b/mongodb-2.1.1/tests/server/server-getInfo-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-getInfo-001.phpt
rename to mongodb-2.1.1/tests/server/server-getInfo-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-getLatency-001.phpt b/mongodb-2.1.1/tests/server/server-getLatency-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-getLatency-001.phpt
rename to mongodb-2.1.1/tests/server/server-getLatency-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-getLatency-002.phpt b/mongodb-2.1.1/tests/server/server-getLatency-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-getLatency-002.phpt
rename to mongodb-2.1.1/tests/server/server-getLatency-002.phpt
diff --git a/mongodb-2.1.0/tests/server/server-getServerDescription-001.phpt b/mongodb-2.1.1/tests/server/server-getServerDescription-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-getServerDescription-001.phpt
rename to mongodb-2.1.1/tests/server/server-getServerDescription-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-getTags-001.phpt b/mongodb-2.1.1/tests/server/server-getTags-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-getTags-001.phpt
rename to mongodb-2.1.1/tests/server/server-getTags-001.phpt
diff --git a/mongodb-2.1.0/tests/server/server-getTags-002.phpt b/mongodb-2.1.1/tests/server/server-getTags-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server-getTags-002.phpt
rename to mongodb-2.1.1/tests/server/server-getTags-002.phpt
diff --git a/mongodb-2.1.0/tests/server/server_error-001.phpt b/mongodb-2.1.1/tests/server/server_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/server/server_error-001.phpt
rename to mongodb-2.1.1/tests/server/server_error-001.phpt
diff --git a/mongodb-2.1.0/tests/serverApi/serverApi-bsonserialize-001.phpt b/mongodb-2.1.1/tests/serverApi/serverApi-bsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverApi/serverApi-bsonserialize-001.phpt
rename to mongodb-2.1.1/tests/serverApi/serverApi-bsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/serverApi/serverApi-bsonserialize-002.phpt b/mongodb-2.1.1/tests/serverApi/serverApi-bsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverApi/serverApi-bsonserialize-002.phpt
rename to mongodb-2.1.1/tests/serverApi/serverApi-bsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/serverApi/serverApi-construct-001.phpt b/mongodb-2.1.1/tests/serverApi/serverApi-construct-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverApi/serverApi-construct-001.phpt
rename to mongodb-2.1.1/tests/serverApi/serverApi-construct-001.phpt
diff --git a/mongodb-2.1.0/tests/serverApi/serverApi-debug.phpt b/mongodb-2.1.1/tests/serverApi/serverApi-debug.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverApi/serverApi-debug.phpt
rename to mongodb-2.1.1/tests/serverApi/serverApi-debug.phpt
diff --git a/mongodb-2.1.0/tests/serverApi/serverApi-serialization-002.phpt b/mongodb-2.1.1/tests/serverApi/serverApi-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverApi/serverApi-serialization-002.phpt
rename to mongodb-2.1.1/tests/serverApi/serverApi-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/serverApi/serverApi-serialization_error-002.phpt b/mongodb-2.1.1/tests/serverApi/serverApi-serialization_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverApi/serverApi-serialization_error-002.phpt
rename to mongodb-2.1.1/tests/serverApi/serverApi-serialization_error-002.phpt
diff --git a/mongodb-2.1.0/tests/serverApi/serverApi-set_state-001.phpt b/mongodb-2.1.1/tests/serverApi/serverApi-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverApi/serverApi-set_state-001.phpt
rename to mongodb-2.1.1/tests/serverApi/serverApi-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/serverApi/serverApi-set_state_error-001.phpt b/mongodb-2.1.1/tests/serverApi/serverApi-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverApi/serverApi-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/serverApi/serverApi-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/serverApi/serverApi-var_export-001.phpt b/mongodb-2.1.1/tests/serverApi/serverApi-var_export-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverApi/serverApi-var_export-001.phpt
rename to mongodb-2.1.1/tests/serverApi/serverApi-var_export-001.phpt
diff --git a/mongodb-2.1.0/tests/serverDescription/serverDescription-constants.phpt b/mongodb-2.1.1/tests/serverDescription/serverDescription-constants.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverDescription/serverDescription-constants.phpt
rename to mongodb-2.1.1/tests/serverDescription/serverDescription-constants.phpt
diff --git a/mongodb-2.1.0/tests/serverDescription/serverDescription-debug-001.phpt b/mongodb-2.1.1/tests/serverDescription/serverDescription-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverDescription/serverDescription-debug-001.phpt
rename to mongodb-2.1.1/tests/serverDescription/serverDescription-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/serverDescription/serverDescription-getHelloResponse-001.phpt b/mongodb-2.1.1/tests/serverDescription/serverDescription-getHelloResponse-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverDescription/serverDescription-getHelloResponse-001.phpt
rename to mongodb-2.1.1/tests/serverDescription/serverDescription-getHelloResponse-001.phpt
diff --git a/mongodb-2.1.0/tests/serverDescription/serverDescription-getHost-001.phpt b/mongodb-2.1.1/tests/serverDescription/serverDescription-getHost-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverDescription/serverDescription-getHost-001.phpt
rename to mongodb-2.1.1/tests/serverDescription/serverDescription-getHost-001.phpt
diff --git a/mongodb-2.1.0/tests/serverDescription/serverDescription-getLastUpdateTime-001.phpt b/mongodb-2.1.1/tests/serverDescription/serverDescription-getLastUpdateTime-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverDescription/serverDescription-getLastUpdateTime-001.phpt
rename to mongodb-2.1.1/tests/serverDescription/serverDescription-getLastUpdateTime-001.phpt
diff --git a/mongodb-2.1.0/tests/serverDescription/serverDescription-getLastUpdateTime-002.phpt b/mongodb-2.1.1/tests/serverDescription/serverDescription-getLastUpdateTime-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverDescription/serverDescription-getLastUpdateTime-002.phpt
rename to mongodb-2.1.1/tests/serverDescription/serverDescription-getLastUpdateTime-002.phpt
diff --git a/mongodb-2.1.0/tests/serverDescription/serverDescription-getPort-001.phpt b/mongodb-2.1.1/tests/serverDescription/serverDescription-getPort-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverDescription/serverDescription-getPort-001.phpt
rename to mongodb-2.1.1/tests/serverDescription/serverDescription-getPort-001.phpt
diff --git a/mongodb-2.1.0/tests/serverDescription/serverDescription-getRoundTripTime-001.phpt b/mongodb-2.1.1/tests/serverDescription/serverDescription-getRoundTripTime-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverDescription/serverDescription-getRoundTripTime-001.phpt
rename to mongodb-2.1.1/tests/serverDescription/serverDescription-getRoundTripTime-001.phpt
diff --git a/mongodb-2.1.0/tests/serverDescription/serverDescription-getType-001.phpt b/mongodb-2.1.1/tests/serverDescription/serverDescription-getType-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverDescription/serverDescription-getType-001.phpt
rename to mongodb-2.1.1/tests/serverDescription/serverDescription-getType-001.phpt
diff --git a/mongodb-2.1.0/tests/serverDescription/serverDescription-var_export-001.phpt b/mongodb-2.1.1/tests/serverDescription/serverDescription-var_export-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/serverDescription/serverDescription-var_export-001.phpt
rename to mongodb-2.1.1/tests/serverDescription/serverDescription-var_export-001.phpt
diff --git a/mongodb-2.1.0/tests/session/bug1274-001.phpt b/mongodb-2.1.1/tests/session/bug1274-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/bug1274-001.phpt
rename to mongodb-2.1.1/tests/session/bug1274-001.phpt
diff --git a/mongodb-2.1.0/tests/session/bug1274-002.phpt b/mongodb-2.1.1/tests/session/bug1274-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/bug1274-002.phpt
rename to mongodb-2.1.1/tests/session/bug1274-002.phpt
diff --git a/mongodb-2.1.0/tests/session/bug1274-003.phpt b/mongodb-2.1.1/tests/session/bug1274-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/bug1274-003.phpt
rename to mongodb-2.1.1/tests/session/bug1274-003.phpt
diff --git a/mongodb-2.1.0/tests/session/bug1274-004.phpt b/mongodb-2.1.1/tests/session/bug1274-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/bug1274-004.phpt
rename to mongodb-2.1.1/tests/session/bug1274-004.phpt
diff --git a/mongodb-2.1.0/tests/session/bug1274-005.phpt b/mongodb-2.1.1/tests/session/bug1274-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/bug1274-005.phpt
rename to mongodb-2.1.1/tests/session/bug1274-005.phpt
diff --git a/mongodb-2.1.0/tests/session/bug1274-006.phpt b/mongodb-2.1.1/tests/session/bug1274-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/bug1274-006.phpt
rename to mongodb-2.1.1/tests/session/bug1274-006.phpt
diff --git a/mongodb-2.1.0/tests/session/session-001.phpt b/mongodb-2.1.1/tests/session/session-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-001.phpt
rename to mongodb-2.1.1/tests/session/session-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-002.phpt b/mongodb-2.1.1/tests/session/session-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-002.phpt
rename to mongodb-2.1.1/tests/session/session-002.phpt
diff --git a/mongodb-2.1.0/tests/session/session-003.phpt b/mongodb-2.1.1/tests/session/session-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-003.phpt
rename to mongodb-2.1.1/tests/session/session-003.phpt
diff --git a/mongodb-2.1.0/tests/session/session-004.phpt b/mongodb-2.1.1/tests/session/session-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-004.phpt
rename to mongodb-2.1.1/tests/session/session-004.phpt
diff --git a/mongodb-2.1.0/tests/session/session-005.phpt b/mongodb-2.1.1/tests/session/session-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-005.phpt
rename to mongodb-2.1.1/tests/session/session-005.phpt
diff --git a/mongodb-2.1.0/tests/session/session-advanceClusterTime-001.phpt b/mongodb-2.1.1/tests/session/session-advanceClusterTime-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-advanceClusterTime-001.phpt
rename to mongodb-2.1.1/tests/session/session-advanceClusterTime-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-advanceOperationTime-001.phpt b/mongodb-2.1.1/tests/session/session-advanceOperationTime-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-advanceOperationTime-001.phpt
rename to mongodb-2.1.1/tests/session/session-advanceOperationTime-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-advanceOperationTime-002.phpt b/mongodb-2.1.1/tests/session/session-advanceOperationTime-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-advanceOperationTime-002.phpt
rename to mongodb-2.1.1/tests/session/session-advanceOperationTime-002.phpt
diff --git a/mongodb-2.1.0/tests/session/session-advanceOperationTime-003.phpt b/mongodb-2.1.1/tests/session/session-advanceOperationTime-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-advanceOperationTime-003.phpt
rename to mongodb-2.1.1/tests/session/session-advanceOperationTime-003.phpt
diff --git a/mongodb-2.1.0/tests/session/session-advanceOperationTime_error-001.phpt b/mongodb-2.1.1/tests/session/session-advanceOperationTime_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-advanceOperationTime_error-001.phpt
rename to mongodb-2.1.1/tests/session/session-advanceOperationTime_error-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-commitTransaction-001.phpt b/mongodb-2.1.1/tests/session/session-commitTransaction-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-commitTransaction-001.phpt
rename to mongodb-2.1.1/tests/session/session-commitTransaction-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-constants.phpt b/mongodb-2.1.1/tests/session/session-constants.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-constants.phpt
rename to mongodb-2.1.1/tests/session/session-constants.phpt
diff --git a/mongodb-2.1.0/tests/session/session-debug-001.phpt b/mongodb-2.1.1/tests/session/session-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-debug-001.phpt
rename to mongodb-2.1.1/tests/session/session-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-debug-002.phpt b/mongodb-2.1.1/tests/session/session-debug-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-debug-002.phpt
rename to mongodb-2.1.1/tests/session/session-debug-002.phpt
diff --git a/mongodb-2.1.0/tests/session/session-debug-003.phpt b/mongodb-2.1.1/tests/session/session-debug-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-debug-003.phpt
rename to mongodb-2.1.1/tests/session/session-debug-003.phpt
diff --git a/mongodb-2.1.0/tests/session/session-debug-004.phpt b/mongodb-2.1.1/tests/session/session-debug-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-debug-004.phpt
rename to mongodb-2.1.1/tests/session/session-debug-004.phpt
diff --git a/mongodb-2.1.0/tests/session/session-debug-005.phpt b/mongodb-2.1.1/tests/session/session-debug-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-debug-005.phpt
rename to mongodb-2.1.1/tests/session/session-debug-005.phpt
diff --git a/mongodb-2.1.0/tests/session/session-debug-006.phpt b/mongodb-2.1.1/tests/session/session-debug-006.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-debug-006.phpt
rename to mongodb-2.1.1/tests/session/session-debug-006.phpt
diff --git a/mongodb-2.1.0/tests/session/session-debug-007.phpt b/mongodb-2.1.1/tests/session/session-debug-007.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-debug-007.phpt
rename to mongodb-2.1.1/tests/session/session-debug-007.phpt
diff --git a/mongodb-2.1.0/tests/session/session-endSession-001.phpt b/mongodb-2.1.1/tests/session/session-endSession-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-endSession-001.phpt
rename to mongodb-2.1.1/tests/session/session-endSession-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-endSession-002.phpt b/mongodb-2.1.1/tests/session/session-endSession-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-endSession-002.phpt
rename to mongodb-2.1.1/tests/session/session-endSession-002.phpt
diff --git a/mongodb-2.1.0/tests/session/session-getClusterTime-001.phpt b/mongodb-2.1.1/tests/session/session-getClusterTime-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-getClusterTime-001.phpt
rename to mongodb-2.1.1/tests/session/session-getClusterTime-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-getLogicalSessionId-001.phpt b/mongodb-2.1.1/tests/session/session-getLogicalSessionId-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-getLogicalSessionId-001.phpt
rename to mongodb-2.1.1/tests/session/session-getLogicalSessionId-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-getOperationTime-001.phpt b/mongodb-2.1.1/tests/session/session-getOperationTime-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-getOperationTime-001.phpt
rename to mongodb-2.1.1/tests/session/session-getOperationTime-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-getTransactionOptions-001.phpt b/mongodb-2.1.1/tests/session/session-getTransactionOptions-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-getTransactionOptions-001.phpt
rename to mongodb-2.1.1/tests/session/session-getTransactionOptions-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-getTransactionState-001.phpt b/mongodb-2.1.1/tests/session/session-getTransactionState-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-getTransactionState-001.phpt
rename to mongodb-2.1.1/tests/session/session-getTransactionState-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-isDirty-001.phpt b/mongodb-2.1.1/tests/session/session-isDirty-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-isDirty-001.phpt
rename to mongodb-2.1.1/tests/session/session-isDirty-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-isInTransaction-001.phpt b/mongodb-2.1.1/tests/session/session-isInTransaction-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-isInTransaction-001.phpt
rename to mongodb-2.1.1/tests/session/session-isInTransaction-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-startTransaction-001.phpt b/mongodb-2.1.1/tests/session/session-startTransaction-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-startTransaction-001.phpt
rename to mongodb-2.1.1/tests/session/session-startTransaction-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-startTransaction_error-001.phpt b/mongodb-2.1.1/tests/session/session-startTransaction_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-startTransaction_error-001.phpt
rename to mongodb-2.1.1/tests/session/session-startTransaction_error-001.phpt
diff --git a/mongodb-2.1.0/tests/session/session-startTransaction_error-002.phpt b/mongodb-2.1.1/tests/session/session-startTransaction_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-startTransaction_error-002.phpt
rename to mongodb-2.1.1/tests/session/session-startTransaction_error-002.phpt
diff --git a/mongodb-2.1.0/tests/session/session-startTransaction_error-004.phpt b/mongodb-2.1.1/tests/session/session-startTransaction_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-startTransaction_error-004.phpt
rename to mongodb-2.1.1/tests/session/session-startTransaction_error-004.phpt
diff --git a/mongodb-2.1.0/tests/session/session-startTransaction_error-005.phpt b/mongodb-2.1.1/tests/session/session-startTransaction_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/session-startTransaction_error-005.phpt
rename to mongodb-2.1.1/tests/session/session-startTransaction_error-005.phpt
diff --git a/mongodb-2.1.0/tests/session/transaction-integration-001.phpt b/mongodb-2.1.1/tests/session/transaction-integration-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/transaction-integration-001.phpt
rename to mongodb-2.1.1/tests/session/transaction-integration-001.phpt
diff --git a/mongodb-2.1.0/tests/session/transaction-integration-002.phpt b/mongodb-2.1.1/tests/session/transaction-integration-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/transaction-integration-002.phpt
rename to mongodb-2.1.1/tests/session/transaction-integration-002.phpt
diff --git a/mongodb-2.1.0/tests/session/transaction-integration-003.phpt b/mongodb-2.1.1/tests/session/transaction-integration-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/transaction-integration-003.phpt
rename to mongodb-2.1.1/tests/session/transaction-integration-003.phpt
diff --git a/mongodb-2.1.0/tests/session/transaction-integration_error-001.phpt b/mongodb-2.1.1/tests/session/transaction-integration_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/transaction-integration_error-001.phpt
rename to mongodb-2.1.1/tests/session/transaction-integration_error-001.phpt
diff --git a/mongodb-2.1.0/tests/session/transaction-integration_error-002.phpt b/mongodb-2.1.1/tests/session/transaction-integration_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/transaction-integration_error-002.phpt
rename to mongodb-2.1.1/tests/session/transaction-integration_error-002.phpt
diff --git a/mongodb-2.1.0/tests/session/transaction-integration_error-003.phpt b/mongodb-2.1.1/tests/session/transaction-integration_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/transaction-integration_error-003.phpt
rename to mongodb-2.1.1/tests/session/transaction-integration_error-003.phpt
diff --git a/mongodb-2.1.0/tests/session/transaction-integration_error-004.phpt b/mongodb-2.1.1/tests/session/transaction-integration_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/session/transaction-integration_error-004.phpt
rename to mongodb-2.1.1/tests/session/transaction-integration_error-004.phpt
diff --git a/mongodb-2.1.0/tests/standalone/bug0231.phpt b/mongodb-2.1.1/tests/standalone/bug0231.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/bug0231.phpt
rename to mongodb-2.1.1/tests/standalone/bug0231.phpt
diff --git a/mongodb-2.1.0/tests/standalone/bug0357.phpt b/mongodb-2.1.1/tests/standalone/bug0357.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/bug0357.phpt
rename to mongodb-2.1.1/tests/standalone/bug0357.phpt
diff --git a/mongodb-2.1.0/tests/standalone/bug0545.phpt b/mongodb-2.1.1/tests/standalone/bug0545.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/bug0545.phpt
rename to mongodb-2.1.1/tests/standalone/bug0545.phpt
diff --git a/mongodb-2.1.0/tests/standalone/bug0655.phpt b/mongodb-2.1.1/tests/standalone/bug0655.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/bug0655.phpt
rename to mongodb-2.1.1/tests/standalone/bug0655.phpt
diff --git a/mongodb-2.1.0/tests/standalone/command-aggregate-001.phpt b/mongodb-2.1.1/tests/standalone/command-aggregate-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/command-aggregate-001.phpt
rename to mongodb-2.1.1/tests/standalone/command-aggregate-001.phpt
diff --git a/mongodb-2.1.0/tests/standalone/connectiontimeoutexception-001.phpt b/mongodb-2.1.1/tests/standalone/connectiontimeoutexception-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/connectiontimeoutexception-001.phpt
rename to mongodb-2.1.1/tests/standalone/connectiontimeoutexception-001.phpt
diff --git a/mongodb-2.1.0/tests/standalone/executiontimeoutexception-001.phpt b/mongodb-2.1.1/tests/standalone/executiontimeoutexception-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/executiontimeoutexception-001.phpt
rename to mongodb-2.1.1/tests/standalone/executiontimeoutexception-001.phpt
diff --git a/mongodb-2.1.0/tests/standalone/executiontimeoutexception-002.phpt b/mongodb-2.1.1/tests/standalone/executiontimeoutexception-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/executiontimeoutexception-002.phpt
rename to mongodb-2.1.1/tests/standalone/executiontimeoutexception-002.phpt
diff --git a/mongodb-2.1.0/tests/standalone/manager-as-singleton.phpt b/mongodb-2.1.1/tests/standalone/manager-as-singleton.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/manager-as-singleton.phpt
rename to mongodb-2.1.1/tests/standalone/manager-as-singleton.phpt
diff --git a/mongodb-2.1.0/tests/standalone/update-multi-001.phpt b/mongodb-2.1.1/tests/standalone/update-multi-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/update-multi-001.phpt
rename to mongodb-2.1.1/tests/standalone/update-multi-001.phpt
diff --git a/mongodb-2.1.0/tests/standalone/write-error-001.phpt b/mongodb-2.1.1/tests/standalone/write-error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/write-error-001.phpt
rename to mongodb-2.1.1/tests/standalone/write-error-001.phpt
diff --git a/mongodb-2.1.0/tests/standalone/writeresult-isacknowledged-001.phpt b/mongodb-2.1.1/tests/standalone/writeresult-isacknowledged-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/writeresult-isacknowledged-001.phpt
rename to mongodb-2.1.1/tests/standalone/writeresult-isacknowledged-001.phpt
diff --git a/mongodb-2.1.0/tests/standalone/writeresult-isacknowledged-002.phpt b/mongodb-2.1.1/tests/standalone/writeresult-isacknowledged-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/writeresult-isacknowledged-002.phpt
rename to mongodb-2.1.1/tests/standalone/writeresult-isacknowledged-002.phpt
diff --git a/mongodb-2.1.0/tests/standalone/writeresult-isacknowledged-003.phpt b/mongodb-2.1.1/tests/standalone/writeresult-isacknowledged-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/standalone/writeresult-isacknowledged-003.phpt
rename to mongodb-2.1.1/tests/standalone/writeresult-isacknowledged-003.phpt
diff --git a/mongodb-2.1.0/tests/topologyDescription/topologyDescription-constants.phpt b/mongodb-2.1.1/tests/topologyDescription/topologyDescription-constants.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/topologyDescription/topologyDescription-constants.phpt
rename to mongodb-2.1.1/tests/topologyDescription/topologyDescription-constants.phpt
diff --git a/mongodb-2.1.0/tests/topologyDescription/topologyDescription-debug-001.phpt b/mongodb-2.1.1/tests/topologyDescription/topologyDescription-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/topologyDescription/topologyDescription-debug-001.phpt
rename to mongodb-2.1.1/tests/topologyDescription/topologyDescription-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/topologyDescription/topologyDescription-getServers-001.phpt b/mongodb-2.1.1/tests/topologyDescription/topologyDescription-getServers-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/topologyDescription/topologyDescription-getServers-001.phpt
rename to mongodb-2.1.1/tests/topologyDescription/topologyDescription-getServers-001.phpt
diff --git a/mongodb-2.1.0/tests/topologyDescription/topologyDescription-getType-001.phpt b/mongodb-2.1.1/tests/topologyDescription/topologyDescription-getType-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/topologyDescription/topologyDescription-getType-001.phpt
rename to mongodb-2.1.1/tests/topologyDescription/topologyDescription-getType-001.phpt
diff --git a/mongodb-2.1.0/tests/topologyDescription/topologyDescription-hasReadableServer-001.phpt b/mongodb-2.1.1/tests/topologyDescription/topologyDescription-hasReadableServer-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/topologyDescription/topologyDescription-hasReadableServer-001.phpt
rename to mongodb-2.1.1/tests/topologyDescription/topologyDescription-hasReadableServer-001.phpt
diff --git a/mongodb-2.1.0/tests/topologyDescription/topologyDescription-hasReadableServer-002.phpt b/mongodb-2.1.1/tests/topologyDescription/topologyDescription-hasReadableServer-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/topologyDescription/topologyDescription-hasReadableServer-002.phpt
rename to mongodb-2.1.1/tests/topologyDescription/topologyDescription-hasReadableServer-002.phpt
diff --git a/mongodb-2.1.0/tests/topologyDescription/topologyDescription-hasReadableServer_error-001.phpt b/mongodb-2.1.1/tests/topologyDescription/topologyDescription-hasReadableServer_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/topologyDescription/topologyDescription-hasReadableServer_error-001.phpt
rename to mongodb-2.1.1/tests/topologyDescription/topologyDescription-hasReadableServer_error-001.phpt
diff --git a/mongodb-2.1.0/tests/topologyDescription/topologyDescription-hasWritableServer-001.phpt b/mongodb-2.1.1/tests/topologyDescription/topologyDescription-hasWritableServer-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/topologyDescription/topologyDescription-hasWritableServer-001.phpt
rename to mongodb-2.1.1/tests/topologyDescription/topologyDescription-hasWritableServer-001.phpt
diff --git a/mongodb-2.1.0/tests/utils/PHONGO-FIXTURES.json.gz b/mongodb-2.1.1/tests/utils/PHONGO-FIXTURES.json.gz
similarity index 100%
rename from mongodb-2.1.0/tests/utils/PHONGO-FIXTURES.json.gz
rename to mongodb-2.1.1/tests/utils/PHONGO-FIXTURES.json.gz
diff --git a/mongodb-2.1.0/tests/utils/basic-skipif.inc b/mongodb-2.1.1/tests/utils/basic-skipif.inc
similarity index 100%
rename from mongodb-2.1.0/tests/utils/basic-skipif.inc
rename to mongodb-2.1.1/tests/utils/basic-skipif.inc
diff --git a/mongodb-2.1.0/tests/utils/basic.inc b/mongodb-2.1.1/tests/utils/basic.inc
similarity index 100%
rename from mongodb-2.1.0/tests/utils/basic.inc
rename to mongodb-2.1.1/tests/utils/basic.inc
diff --git a/mongodb-2.1.0/tests/utils/classes.inc b/mongodb-2.1.1/tests/utils/classes.inc
similarity index 100%
rename from mongodb-2.1.0/tests/utils/classes.inc
rename to mongodb-2.1.1/tests/utils/classes.inc
diff --git a/mongodb-2.1.0/tests/utils/observer.php b/mongodb-2.1.1/tests/utils/observer.php
similarity index 100%
rename from mongodb-2.1.0/tests/utils/observer.php
rename to mongodb-2.1.1/tests/utils/observer.php
diff --git a/mongodb-2.1.0/tests/utils/skipif.php b/mongodb-2.1.1/tests/utils/skipif.php
similarity index 100%
rename from mongodb-2.1.0/tests/utils/skipif.php
rename to mongodb-2.1.1/tests/utils/skipif.php
diff --git a/mongodb-2.1.0/tests/utils/tools.php b/mongodb-2.1.1/tests/utils/tools.php
similarity index 100%
rename from mongodb-2.1.0/tests/utils/tools.php
rename to mongodb-2.1.1/tests/utils/tools.php
diff --git a/mongodb-2.1.0/tests/writeConcern/bug1598-001.phpt b/mongodb-2.1.1/tests/writeConcern/bug1598-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/bug1598-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/bug1598-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/bug1598-002.phpt b/mongodb-2.1.1/tests/writeConcern/bug1598-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/bug1598-002.phpt
rename to mongodb-2.1.1/tests/writeConcern/bug1598-002.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-bsonserialize-001.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-bsonserialize-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-bsonserialize-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-bsonserialize-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-bsonserialize-002.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-bsonserialize-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-bsonserialize-002.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-bsonserialize-002.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-bsonserialize-003.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-bsonserialize-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-bsonserialize-003.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-bsonserialize-003.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-bsonserialize-004.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-bsonserialize-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-bsonserialize-004.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-bsonserialize-004.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-constants.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-constants.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-constants.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-constants.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-ctor-001.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-ctor-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-ctor-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-ctor-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-ctor-002.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-ctor-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-ctor-002.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-ctor-002.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-ctor_error-001.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-ctor_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-ctor_error-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-ctor_error-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-ctor_error-002.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-ctor_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-ctor_error-002.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-ctor_error-002.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-ctor_error-003.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-ctor_error-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-ctor_error-003.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-ctor_error-003.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-ctor_error-004.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-ctor_error-004.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-ctor_error-004.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-ctor_error-004.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-ctor_error-005.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-ctor_error-005.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-ctor_error-005.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-ctor_error-005.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-debug-001.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-debug-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-debug-002.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-debug-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-debug-002.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-debug-002.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-debug-003.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-debug-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-debug-003.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-debug-003.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-getjournal-001.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-getjournal-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-getjournal-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-getjournal-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-getw-001.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-getw-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-getw-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-getw-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-getwtimeout-001.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-getwtimeout-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-getwtimeout-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-getwtimeout-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-getwtimeout-002.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-getwtimeout-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-getwtimeout-002.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-getwtimeout-002.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-isdefault-001.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-isdefault-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-isdefault-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-isdefault-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-serialization-002.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-serialization-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-serialization-002.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-serialization-002.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-serialization_error-002.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-serialization_error-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-serialization_error-002.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-serialization_error-002.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-set_state-001.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-set_state-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-set_state-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-set_state-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-set_state_error-001.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-set_state_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-set_state_error-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-set_state_error-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern-var_export-001.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern-var_export-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern-var_export-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern-var_export-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcern/writeconcern_error-001.phpt b/mongodb-2.1.1/tests/writeConcern/writeconcern_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcern/writeconcern_error-001.phpt
rename to mongodb-2.1.1/tests/writeConcern/writeconcern_error-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcernError/writeconcernerror-debug-001.phpt b/mongodb-2.1.1/tests/writeConcernError/writeconcernerror-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcernError/writeconcernerror-debug-001.phpt
rename to mongodb-2.1.1/tests/writeConcernError/writeconcernerror-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcernError/writeconcernerror-getcode-001.phpt b/mongodb-2.1.1/tests/writeConcernError/writeconcernerror-getcode-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcernError/writeconcernerror-getcode-001.phpt
rename to mongodb-2.1.1/tests/writeConcernError/writeconcernerror-getcode-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcernError/writeconcernerror-getinfo-001.phpt b/mongodb-2.1.1/tests/writeConcernError/writeconcernerror-getinfo-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcernError/writeconcernerror-getinfo-001.phpt
rename to mongodb-2.1.1/tests/writeConcernError/writeconcernerror-getinfo-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcernError/writeconcernerror-getmessage-001.phpt b/mongodb-2.1.1/tests/writeConcernError/writeconcernerror-getmessage-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcernError/writeconcernerror-getmessage-001.phpt
rename to mongodb-2.1.1/tests/writeConcernError/writeconcernerror-getmessage-001.phpt
diff --git a/mongodb-2.1.0/tests/writeConcernError/writeconcernerror_error-001.phpt b/mongodb-2.1.1/tests/writeConcernError/writeconcernerror_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeConcernError/writeconcernerror_error-001.phpt
rename to mongodb-2.1.1/tests/writeConcernError/writeconcernerror_error-001.phpt
diff --git a/mongodb-2.1.0/tests/writeError/writeerror-debug-001.phpt b/mongodb-2.1.1/tests/writeError/writeerror-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeError/writeerror-debug-001.phpt
rename to mongodb-2.1.1/tests/writeError/writeerror-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/writeError/writeerror-getCode-001.phpt b/mongodb-2.1.1/tests/writeError/writeerror-getCode-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeError/writeerror-getCode-001.phpt
rename to mongodb-2.1.1/tests/writeError/writeerror-getCode-001.phpt
diff --git a/mongodb-2.1.0/tests/writeError/writeerror-getIndex-001.phpt b/mongodb-2.1.1/tests/writeError/writeerror-getIndex-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeError/writeerror-getIndex-001.phpt
rename to mongodb-2.1.1/tests/writeError/writeerror-getIndex-001.phpt
diff --git a/mongodb-2.1.0/tests/writeError/writeerror-getInfo-001.phpt b/mongodb-2.1.1/tests/writeError/writeerror-getInfo-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeError/writeerror-getInfo-001.phpt
rename to mongodb-2.1.1/tests/writeError/writeerror-getInfo-001.phpt
diff --git a/mongodb-2.1.0/tests/writeError/writeerror-getInfo-002.phpt b/mongodb-2.1.1/tests/writeError/writeerror-getInfo-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeError/writeerror-getInfo-002.phpt
rename to mongodb-2.1.1/tests/writeError/writeerror-getInfo-002.phpt
diff --git a/mongodb-2.1.0/tests/writeError/writeerror-getMessage-001.phpt b/mongodb-2.1.1/tests/writeError/writeerror-getMessage-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeError/writeerror-getMessage-001.phpt
rename to mongodb-2.1.1/tests/writeError/writeerror-getMessage-001.phpt
diff --git a/mongodb-2.1.0/tests/writeError/writeerror_error-001.phpt b/mongodb-2.1.1/tests/writeError/writeerror_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeError/writeerror_error-001.phpt
rename to mongodb-2.1.1/tests/writeError/writeerror_error-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/bug0671-003.phpt b/mongodb-2.1.1/tests/writeResult/bug0671-003.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/bug0671-003.phpt
rename to mongodb-2.1.1/tests/writeResult/bug0671-003.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-debug-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-debug-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-debug-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-debug-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-debug-002.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-debug-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-debug-002.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-debug-002.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getErrorReplies-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getErrorReplies-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getErrorReplies-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getErrorReplies-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getdeletedcount-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getdeletedcount-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getdeletedcount-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getdeletedcount-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getdeletedcount-002.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getdeletedcount-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getdeletedcount-002.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getdeletedcount-002.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getinsertedcount-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getinsertedcount-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getinsertedcount-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getinsertedcount-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getinsertedcount-002.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getinsertedcount-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getinsertedcount-002.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getinsertedcount-002.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getmatchedcount-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getmatchedcount-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getmatchedcount-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getmatchedcount-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getmatchedcount-002.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getmatchedcount-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getmatchedcount-002.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getmatchedcount-002.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getmodifiedcount-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getmodifiedcount-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getmodifiedcount-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getmodifiedcount-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getmodifiedcount-002.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getmodifiedcount-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getmodifiedcount-002.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getmodifiedcount-002.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getserver-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getserver-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getserver-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getserver-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getupsertedcount-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getupsertedcount-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getupsertedcount-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getupsertedcount-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getupsertedcount-002.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getupsertedcount-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getupsertedcount-002.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getupsertedcount-002.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getupsertedids-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getupsertedids-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getupsertedids-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getupsertedids-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getupsertedids-002.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getupsertedids-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getupsertedids-002.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getupsertedids-002.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getwriteconcernerror-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getwriteconcernerror-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getwriteconcernerror-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getwriteconcernerror-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getwriteconcernerror-002.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getwriteconcernerror-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getwriteconcernerror-002.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getwriteconcernerror-002.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getwriteerrors-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getwriteerrors-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getwriteerrors-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getwriteerrors-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-getwriteerrors-002.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-getwriteerrors-002.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-getwriteerrors-002.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-getwriteerrors-002.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult-isacknowledged-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult-isacknowledged-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult-isacknowledged-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult-isacknowledged-001.phpt
diff --git a/mongodb-2.1.0/tests/writeResult/writeresult_error-001.phpt b/mongodb-2.1.1/tests/writeResult/writeresult_error-001.phpt
similarity index 100%
rename from mongodb-2.1.0/tests/writeResult/writeresult_error-001.phpt
rename to mongodb-2.1.1/tests/writeResult/writeresult_error-001.phpt
diff --git a/package.xml b/package.xml
index 98cdcd5c..0dc80bd3 100644
--- a/package.xml
+++ b/package.xml
@@ -1,3184 +1,3180 @@
<?xml version="1.0" encoding="UTF-8"?>
<package packagerversion="1.10.16" version="2.1" xmlns="http://pear.php.net/dtd/package-2.1" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.1 http://pear.php.net/dtd/package-2.1.xsd">
<name>mongodb</name>
<channel>pecl.php.net</channel>
<summary>MongoDB driver for PHP</summary>
<description>The purpose of this driver is to provide exceptionally thin glue between MongoDB
and PHP, implementing only fundamental and performance-critical components
necessary to build a fully-functional MongoDB driver.</description>
<lead>
<name>Andreas Braun</name>
<user>alcaeus</user>
<email>alcaeus@php.net</email>
<active>yes</active>
</lead>
<lead>
<name>Jeremy Mikola</name>
<user>jmikola</user>
<email>jmikola@php.net</email>
<active>yes</active>
</lead>
<lead>
<name>Derick Rethans</name>
<user>derick</user>
<email>derick@php.net</email>
<active>no</active>
</lead>
<lead>
<name>Hannes Magnusson</name>
<user>bjori</user>
<email>bjori@php.net</email>
<active>no</active>
</lead>
<developer>
<name>Katherine Walker</name>
<user>kvwalker</user>
<email>kvwalker@php.net</email>
<active>no</active>
</developer>
- <date>2025-05-23</date>
- <time>08:47:35</time>
+ <date>2025-06-13</date>
+ <time>12:43:33</time>
<version>
- <release>2.1.0</release>
- <api>2.1.0</api>
+ <release>2.1.1</release>
+ <api>2.1.1</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://www.apache.org/licenses/LICENSE-2.0">Apache License</license>
<notes>
## What&apos;s Changed
-* Mention `Serializable` and `Unserializable` types in upgrade guide by @GromNaN in https://github.com/mongodb/mongo-php-driver/pull/1805
-* Add CODEOWNERS for 1.21+ by @alcaeus in https://github.com/mongodb/mongo-php-driver/pull/1810
-* PHPC-2537 Update to newer Ubuntu version in GitHub Actions workflows by @GromNaN in https://github.com/mongodb/mongo-php-driver/pull/1814
-* Feature: Client Bulk Write by @GromNaN in https://github.com/mongodb/mongo-php-driver/pull/1818
-* PHPC-2580: Bump to libmongoc 1.30.4 by @alcaeus in https://github.com/mongodb/mongo-php-driver/pull/1822
-* PHPC-2510 Install evergreen tools using git submodule by @GromNaN in https://github.com/mongodb/mongo-php-driver/pull/1797
-* PHPC-2555: Stop testing with MongoDB 4.0 by @alcaeus in https://github.com/mongodb/mongo-php-driver/pull/1827
-* PHPLIB-1678: Use assume_role command before accessing secrets by @alcaeus in https://github.com/mongodb/mongo-php-driver/pull/1832
+* Ignore branches that are no longer maintained when merging up by @alcaeus in https://github.com/mongodb/mongo-php-driver/pull/1838
+* PHPC-2593: Update libmongoc to 1.30.5 by @alcaeus in https://github.com/mongodb/mongo-php-driver/pull/1841
-**Full Changelog**: https://github.com/mongodb/mongo-php-driver/compare/2.0.0...2.1.0
+**Full Changelog**: https://github.com/mongodb/mongo-php-driver/compare/2.1.0...2.1.1
</notes>
<contents>
<dir name="/">
<file md5sum="24efc529aa9f2b40d80cbec3bb635d01" name="scripts/autotools/libbson/CheckHeaders.m4" role="src" />
<file md5sum="60d085042feccb8262e46f9e21b547bf" name="scripts/autotools/libbson/Endian.m4" role="src" />
<file md5sum="770f8b666d42fecd12a7f6bc2c606db4" name="scripts/autotools/libbson/FindDependencies.m4" role="src" />
<file md5sum="b4142eadd77387b28cbf504dd0df8d6f" name="scripts/autotools/libbson/Versions.m4" role="src" />
<file md5sum="4eca880cb796d684de0f012b575bae59" name="scripts/autotools/libmongoc/CheckCompression.m4" role="src" />
<file md5sum="1a10959aa94a21fb9b92ff6f0561592d" name="scripts/autotools/libmongoc/CheckResolv.m4" role="src" />
<file md5sum="ad604ffca9c33396b1fffb1307b8b835" name="scripts/autotools/libmongoc/CheckSSL.m4" role="src" />
<file md5sum="1ced534ba9efa999b90af693ca3ffd53" name="scripts/autotools/libmongoc/CheckSasl.m4" role="src" />
<file md5sum="184de133ad771f2774d4a36028840e30" name="scripts/autotools/libmongoc/CheckUtf8Proc.m4" role="src" />
<file md5sum="5a6f2f36b18bb25a7ec64d3ca3741fff" name="scripts/autotools/libmongoc/Endian.m4" role="src" />
<file md5sum="f718cd36a36d0662fbcfe5c0ed13787f" name="scripts/autotools/libmongoc/FindDependencies.m4" role="src" />
<file md5sum="e8bc1c579ade87da9492ed18b5c371f5" name="scripts/autotools/libmongoc/Versions.m4" role="src" />
<file md5sum="906a71d7858713742f5febc043b9b51b" name="scripts/autotools/libmongocrypt/CheckSSL.m4" role="src" />
<file md5sum="ea0539cf785e89dcb591dd13be2778d1" name="scripts/autotools/libmongocrypt/Endian.m4" role="src" />
<file md5sum="471ed55586aaeef30e1d54a235133735" name="scripts/autotools/libmongocrypt/Version.m4" role="src" />
<file md5sum="dfcf4bbea8efeabaaaf41d09136fb0db" name="scripts/autotools/m4/ax_check_compile_flag.m4" role="src" />
<file md5sum="7a5b33114c4bcb9471c262b85fdf465d" name="scripts/autotools/m4/ax_prototype.m4" role="src" />
<file md5sum="458cfc05b428a2d9fa371909f351fe0a" name="scripts/autotools/m4/ax_prototype_accept.m4" role="src" />
<file md5sum="84854ab762c692762409cf62bec45ff1" name="scripts/autotools/m4/ax_pthread.m4" role="src" />
<file md5sum="a42532113a4386c57f66a5745057134a" name="scripts/autotools/m4/php_mongodb.m4" role="src" />
<file md5sum="53904a5c5ac602365b8de11970cee178" name="scripts/autotools/m4/pkg.m4" role="src" />
<file md5sum="bd74333dc812be6b9dc9e4d7e0aae2c2" name="scripts/autotools/CheckCompiler.m4" role="src" />
<file md5sum="51c4dd11458ad655113dcdb101640b49" name="scripts/autotools/CheckHost.m4" role="src" />
<file md5sum="1b9823e975ca8b15d1880cda2ba57631" name="scripts/autotools/PlatformFlags.m4" role="src" />
<file md5sum="225af6da43bfe48a5afd9227433921a9" name="scripts/clang-format.sh" role="test" />
<file md5sum="af1a3259308551f3565b2409d56ffe41" name="scripts/convert-bson-corpus-tests.php" role="test" />
<file md5sum="1896ef7656da50ca3e89aae510e31ece" name="scripts/generate-functionmap.php" role="test" />
<file md5sum="a985e47fa56ac12e3675753aab892745" name="scripts/update-sbom.sh" role="test" />
<file md5sum="451301c286d16418c08959c1fa893311" name="scripts/update-submodule-sources.php" role="test" />
<file md5sum="70d90ded9748980e2c4f9b55a8459e28" name="src/BSON/Binary.c" role="src" />
<file md5sum="96a84aca20ef169cf4473dc9bb53b81d" name="src/BSON/Binary.h" role="src" />
<file md5sum="140430cee2b73c707e947ae5b22a84e6" name="src/BSON/BinaryInterface.c" role="src" />
<file md5sum="615bf068e6fb21a86b7e8472e6a51838" name="src/BSON/BinaryInterface_arginfo.h" role="src" />
<file md5sum="fca4877bc802cc7aa9b9e73ec747fa2a" name="src/BSON/Binary_arginfo.h" role="src" />
<file md5sum="ccf3606e1cd0b55561a8e827a44efdea" name="src/BSON/DBPointer.c" role="src" />
<file md5sum="0745d03e3664b9fb84fa556353b24841" name="src/BSON/DBPointer.h" role="src" />
<file md5sum="9cb34d66ecee52671668939fd14d06c0" name="src/BSON/DBPointer_arginfo.h" role="src" />
<file md5sum="5293df88b82ca286fe3cbe081308ee9f" name="src/BSON/Decimal128.c" role="src" />
<file md5sum="2dcc8102fcb8bcb96e9b7705d930d525" name="src/BSON/Decimal128.h" role="src" />
<file md5sum="932146fd39bb94506a94b9d1055d8d5e" name="src/BSON/Decimal128Interface.c" role="src" />
<file md5sum="2b5955e6d7c92402d891bb4ff067020a" name="src/BSON/Decimal128Interface_arginfo.h" role="src" />
<file md5sum="6e1dab52f6a8210543280b2b3fe0f566" name="src/BSON/Decimal128_arginfo.h" role="src" />
<file md5sum="c40257f7a26b31737f8e150e6cbc579a" name="src/BSON/Document.c" role="src" />
<file md5sum="4340648ee43a353242289e937fc1a70d" name="src/BSON/Document.h" role="src" />
<file md5sum="c2f7612d1d20db1252477522a68ff2a5" name="src/BSON/Document_arginfo.h" role="src" />
<file md5sum="4e5d0fdcbeb7cc742e926ab2eca684c6" name="src/BSON/Int64.c" role="src" />
<file md5sum="e7f830581fc0609f9ecac5a028704dc5" name="src/BSON/Int64.h" role="src" />
<file md5sum="6c8ea06c3ebaf747e8b9755555c27153" name="src/BSON/Int64_arginfo.h" role="src" />
<file md5sum="cafa84d6a8b4cfedfd560b54b65e47a5" name="src/BSON/Iterator.c" role="src" />
<file md5sum="6fe5e535f5807dc1ff579e4636e2bd44" name="src/BSON/Iterator.h" role="src" />
<file md5sum="6428a01ea3b4f0587c640bfe830f9a3b" name="src/BSON/Iterator_arginfo.h" role="src" />
<file md5sum="583bccab90094bf02c1fd6b0c624f967" name="src/BSON/Javascript.c" role="src" />
<file md5sum="09fab2ce8b26eae7d37d8bde6c85b957" name="src/BSON/Javascript.h" role="src" />
<file md5sum="dd63c870cef0c3dbdbedee66c0ea64af" name="src/BSON/JavascriptInterface.c" role="src" />
<file md5sum="72f8bab1abfa0f3dc2e9d3bccfa48a5e" name="src/BSON/JavascriptInterface_arginfo.h" role="src" />
<file md5sum="29d302e856b44b1f195962ab9573abbc" name="src/BSON/Javascript_arginfo.h" role="src" />
<file md5sum="b6ea995ab15b23d7689de88c2d09aee9" name="src/BSON/MaxKey.c" role="src" />
<file md5sum="2f1256f938367599db37a5dab55757ad" name="src/BSON/MaxKeyInterface.c" role="src" />
<file md5sum="229ca0a23e45c5a43c78ac5676e9334b" name="src/BSON/MaxKeyInterface_arginfo.h" role="src" />
<file md5sum="aa6a97abf68bc42fa53993c3021329f1" name="src/BSON/MaxKey_arginfo.h" role="src" />
<file md5sum="426c8d219806d6d8722410423536531f" name="src/BSON/MinKey.c" role="src" />
<file md5sum="cc134ac10c34aecb378031fba680af5f" name="src/BSON/MinKeyInterface.c" role="src" />
<file md5sum="c50b7b5a5f41d0c7ba310afa8e9d2cca" name="src/BSON/MinKeyInterface_arginfo.h" role="src" />
<file md5sum="a51ff9560855d30af250231c6c4c5a5d" name="src/BSON/MinKey_arginfo.h" role="src" />
<file md5sum="2047d925644792a76e7dba351779c979" name="src/BSON/ObjectId.c" role="src" />
<file md5sum="f9a8a4813b2e1973b203f25e23ce30cf" name="src/BSON/ObjectId.h" role="src" />
<file md5sum="ec38e7f2ad73cbd2d911b6e3468d1dbf" name="src/BSON/ObjectIdInterface.c" role="src" />
<file md5sum="43b8303665cfd2239fff67e924b2c3dc" name="src/BSON/ObjectIdInterface_arginfo.h" role="src" />
<file md5sum="e5023feab66e7bd85a4ae70df1364171" name="src/BSON/ObjectId_arginfo.h" role="src" />
<file md5sum="6417d5198bb139d90bb3bf8998c52a79" name="src/BSON/PackedArray.c" role="src" />
<file md5sum="e3fe9ef40cba4bdb8fa9ca1527a9bbb9" name="src/BSON/PackedArray.h" role="src" />
<file md5sum="f9d2e1ae395222cebba1fc1109d60202" name="src/BSON/PackedArray_arginfo.h" role="src" />
<file md5sum="3368204fd3e6b5cfc47055628a16001a" name="src/BSON/Persistable.c" role="src" />
<file md5sum="562c6a12bbffaf8fe7b78a91ee8bd640" name="src/BSON/Persistable_arginfo.h" role="src" />
<file md5sum="182e49fa4777bf1105c0c7645ac53f25" name="src/BSON/Regex.c" role="src" />
<file md5sum="66c233d3043e3c4f9f236ebddf31d4c5" name="src/BSON/Regex.h" role="src" />
<file md5sum="15869469bd3fbd16fb2301e23d987f4c" name="src/BSON/RegexInterface.c" role="src" />
<file md5sum="ecb4376a9da86fbf6df96b42dc7f8f7b" name="src/BSON/RegexInterface_arginfo.h" role="src" />
<file md5sum="0d5ee77e43326a0cd129949b66c3061b" name="src/BSON/Regex_arginfo.h" role="src" />
<file md5sum="964a8d1b50c09d4bfc4fa2a255839614" name="src/BSON/Serializable.c" role="src" />
<file md5sum="9401a52f4f5d655d7fd715bf2b3456f1" name="src/BSON/Serializable_arginfo.h" role="src" />
<file md5sum="c624ac6aaa6b6ddd72d8e40a3d4a4bf8" name="src/BSON/Symbol.c" role="src" />
<file md5sum="c1bb16783a8b4ff2c16e572322f7a2f8" name="src/BSON/Symbol.h" role="src" />
<file md5sum="7436b8df6dc337cd2b0c453ffab6556b" name="src/BSON/Symbol_arginfo.h" role="src" />
<file md5sum="fcf8d298b4a67a6dc7062cbb4d14971e" name="src/BSON/Timestamp.c" role="src" />
<file md5sum="3ed25163fa717ae35ffa1b009e440e0d" name="src/BSON/Timestamp.h" role="src" />
<file md5sum="37a29721bcf1a5ed70d0a78be184859d" name="src/BSON/TimestampInterface.c" role="src" />
<file md5sum="9de1eac9b9ef934bb8e5995f651d9e9d" name="src/BSON/TimestampInterface_arginfo.h" role="src" />
<file md5sum="9d9e568107e947830f4ea6f407d2520b" name="src/BSON/Timestamp_arginfo.h" role="src" />
<file md5sum="0025122686849ed17e300e449c60d374" name="src/BSON/Type.c" role="src" />
<file md5sum="572e0a60c5ffa75e4478f626496e2b58" name="src/BSON/Type_arginfo.h" role="src" />
<file md5sum="0a1f6b9d5799b5805d9ee61555e5f619" name="src/BSON/UTCDateTime.c" role="src" />
<file md5sum="c898dbddca6b5831a5a971eca47d97e0" name="src/BSON/UTCDateTime.h" role="src" />
<file md5sum="5751c9b49de705cfb8a4ad2a9a1c46d3" name="src/BSON/UTCDateTimeInterface.c" role="src" />
<file md5sum="06f8e0a5dc9447b4af11d44976071ef1" name="src/BSON/UTCDateTimeInterface_arginfo.h" role="src" />
<file md5sum="cb292dc0d73a257404154527f2a14f03" name="src/BSON/UTCDateTime_arginfo.h" role="src" />
<file md5sum="abf489fd3bce852dbc932e9075d41d93" name="src/BSON/Undefined.c" role="src" />
<file md5sum="62d1e3a5bd05311f996f9196f2041ed5" name="src/BSON/Undefined_arginfo.h" role="src" />
<file md5sum="1d284ebbe81aa76609d69dee81f33982" name="src/BSON/Unserializable.c" role="src" />
<file md5sum="ef4bd5f9e77a3615af014893ed3e392c" name="src/BSON/Unserializable_arginfo.h" role="src" />
<file md5sum="ada7cd6c4969924bbcbe34b99df74782" name="src/MongoDB/Exception/AuthenticationException.c" role="src" />
<file md5sum="ef5f22288d29aa9f74373ffb2f103d3d" name="src/MongoDB/Exception/AuthenticationException_arginfo.h" role="src" />
<file md5sum="78843d88942c014cfa1918d1a7734499" name="src/MongoDB/Exception/BulkWriteCommandException.c" role="src" />
<file md5sum="04ca650f0c13d583fbe096a2bc0c46f4" name="src/MongoDB/Exception/BulkWriteCommandException.h" role="src" />
<file md5sum="dedb0641f7ac7aaa36fe2eb810781090" name="src/MongoDB/Exception/BulkWriteCommandException_arginfo.h" role="src" />
<file md5sum="d7036e1fd07bba73d88ed5fea23a542d" name="src/MongoDB/Exception/BulkWriteException.c" role="src" />
<file md5sum="9a6f9ff9d8a8a13c2160a0c8d7c6c539" name="src/MongoDB/Exception/BulkWriteException_arginfo.h" role="src" />
<file md5sum="518e6c402e2a1301f3075bd4e335d775" name="src/MongoDB/Exception/CommandException.c" role="src" />
<file md5sum="dfac42bb92a0b3d162efbea9b875245f" name="src/MongoDB/Exception/CommandException_arginfo.h" role="src" />
<file md5sum="7e4cacf39bd59ef22aa8f843a5d02f33" name="src/MongoDB/Exception/ConnectionException.c" role="src" />
<file md5sum="7f481853a557e84129650e82b06b05ed" name="src/MongoDB/Exception/ConnectionException_arginfo.h" role="src" />
<file md5sum="72559991c8f2967e11089628888eb6fa" name="src/MongoDB/Exception/ConnectionTimeoutException.c" role="src" />
<file md5sum="2804995b9686d4ef4aa5635606917b4c" name="src/MongoDB/Exception/ConnectionTimeoutException_arginfo.h" role="src" />
<file md5sum="836faa9020a44c0464a8a490ee043a9b" name="src/MongoDB/Exception/EncryptionException.c" role="src" />
<file md5sum="f1a1fcac2761a57ad97b256f92960758" name="src/MongoDB/Exception/EncryptionException_arginfo.h" role="src" />
<file md5sum="65236372441308893b51ef09d5163cbd" name="src/MongoDB/Exception/Exception.c" role="src" />
<file md5sum="fd01cbf8ddb8ceb410c8736073988e17" name="src/MongoDB/Exception/Exception_arginfo.h" role="src" />
<file md5sum="9c2991b16eb495697356d81d04d7b53f" name="src/MongoDB/Exception/ExecutionTimeoutException.c" role="src" />
<file md5sum="dd60473d14ebb6ad9a81d51af8db55ad" name="src/MongoDB/Exception/ExecutionTimeoutException_arginfo.h" role="src" />
<file md5sum="cf7cc2e4c99d485a3e454293b9085f4d" name="src/MongoDB/Exception/InvalidArgumentException.c" role="src" />
<file md5sum="9edc79e63460a58f353b3487a184aa2b" name="src/MongoDB/Exception/InvalidArgumentException_arginfo.h" role="src" />
<file md5sum="2ae64f3b95befa7ca0ea6e21a1689604" name="src/MongoDB/Exception/LogicException.c" role="src" />
<file md5sum="7bb0f246fa19568e509ed49fa5ccc827" name="src/MongoDB/Exception/LogicException_arginfo.h" role="src" />
<file md5sum="531d15ce92a69cae1b135a22bbc769d9" name="src/MongoDB/Exception/RuntimeException.c" role="src" />
<file md5sum="eb8095dc10cb3011f006f2f8627fa6c0" name="src/MongoDB/Exception/RuntimeException_arginfo.h" role="src" />
<file md5sum="7cae56b52a117577836a5904429b3490" name="src/MongoDB/Exception/ServerException.c" role="src" />
<file md5sum="af59c4426c08c1b91e35614d888c5b47" name="src/MongoDB/Exception/ServerException_arginfo.h" role="src" />
<file md5sum="020b2337ffb4ba6ff4dc30fe2a9abace" name="src/MongoDB/Exception/UnexpectedValueException.c" role="src" />
<file md5sum="37cb3fef7c5b20aa035861ebe0cb44fe" name="src/MongoDB/Exception/UnexpectedValueException_arginfo.h" role="src" />
<file md5sum="b70104d39dce8c217c3f11b8151f714e" name="src/MongoDB/Monitoring/CommandFailedEvent.c" role="src" />
<file md5sum="82774d36bd1931760a7965555a8cd4b5" name="src/MongoDB/Monitoring/CommandFailedEvent_arginfo.h" role="src" />
<file md5sum="3ed3f0607620cee212a6784aded761ed" name="src/MongoDB/Monitoring/CommandStartedEvent.c" role="src" />
<file md5sum="04c4b28a53c52b49bb35037a4ba70004" name="src/MongoDB/Monitoring/CommandStartedEvent_arginfo.h" role="src" />
<file md5sum="a8fbf9d59fec5e140ee9de675975ca3a" name="src/MongoDB/Monitoring/CommandSubscriber.c" role="src" />
<file md5sum="0f154ec02fd672a7235a83486d8fd243" name="src/MongoDB/Monitoring/CommandSubscriber_arginfo.h" role="src" />
<file md5sum="ebe5af84dff501e8b4c731447f9b6233" name="src/MongoDB/Monitoring/CommandSucceededEvent.c" role="src" />
<file md5sum="171fc4c2aaa04ee6bf18ed2e4c8e179a" name="src/MongoDB/Monitoring/CommandSucceededEvent_arginfo.h" role="src" />
<file md5sum="bb341990ce07312fed3a48b24bc7c6ed" name="src/MongoDB/Monitoring/LogSubscriber.c" role="src" />
<file md5sum="88d73a3c6fdb01e218903253757762c7" name="src/MongoDB/Monitoring/LogSubscriber_arginfo.h" role="src" />
<file md5sum="3c3cb3c54f62262f9b4087132b410e37" name="src/MongoDB/Monitoring/SDAMSubscriber.c" role="src" />
<file md5sum="d1a92d6da29c53ede3b2b857096473a1" name="src/MongoDB/Monitoring/SDAMSubscriber_arginfo.h" role="src" />
<file md5sum="88964a0631437602c9e19d21230ccd7f" name="src/MongoDB/Monitoring/ServerChangedEvent.c" role="src" />
<file md5sum="1884df76a2e164d694b99ad3f99cfb04" name="src/MongoDB/Monitoring/ServerChangedEvent_arginfo.h" role="src" />
<file md5sum="bac7e8144d62afc136d224441d779360" name="src/MongoDB/Monitoring/ServerClosedEvent.c" role="src" />
<file md5sum="90ed0c1e75a4289204d4d16270c30b6c" name="src/MongoDB/Monitoring/ServerClosedEvent_arginfo.h" role="src" />
<file md5sum="4d3e5134add908749552d24a76e012d7" name="src/MongoDB/Monitoring/ServerHeartbeatFailedEvent.c" role="src" />
<file md5sum="fb1e16b7ef7d6aa2ba0183f4108dc30f" name="src/MongoDB/Monitoring/ServerHeartbeatFailedEvent_arginfo.h" role="src" />
<file md5sum="8d39855edeec0767ecc550bc79e4c386" name="src/MongoDB/Monitoring/ServerHeartbeatStartedEvent.c" role="src" />
<file md5sum="f78256e0a188df9b3a88c0699bb55ac4" name="src/MongoDB/Monitoring/ServerHeartbeatStartedEvent_arginfo.h" role="src" />
<file md5sum="55c9564454569ee43b11e7af06922287" name="src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent.c" role="src" />
<file md5sum="d7eaa5bb5796864e5f2a8c6f49947213" name="src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent_arginfo.h" role="src" />
<file md5sum="ac09bf64c4098aa3d7e620a54c31fe37" name="src/MongoDB/Monitoring/ServerOpeningEvent.c" role="src" />
<file md5sum="683da17e1c4565b97d157ad85276dee5" name="src/MongoDB/Monitoring/ServerOpeningEvent_arginfo.h" role="src" />
<file md5sum="b2cb261dd4e8071a7d043972dffc4799" name="src/MongoDB/Monitoring/Subscriber.c" role="src" />
<file md5sum="0613b3123814c69c21a431c0b244b3ce" name="src/MongoDB/Monitoring/Subscriber_arginfo.h" role="src" />
<file md5sum="e3ab03e27ccf54329c4546ebdef99d10" name="src/MongoDB/Monitoring/TopologyChangedEvent.c" role="src" />
<file md5sum="a6e5079b3532056f20b86d491283d1a4" name="src/MongoDB/Monitoring/TopologyChangedEvent_arginfo.h" role="src" />
<file md5sum="23abfad8578e47dc51b8136aa1c4f9c0" name="src/MongoDB/Monitoring/TopologyClosedEvent.c" role="src" />
<file md5sum="1dd21f5f3ecd52194a3b9222b581a6aa" name="src/MongoDB/Monitoring/TopologyClosedEvent_arginfo.h" role="src" />
<file md5sum="fdf380622f0b0997727f475a2aa1001d" name="src/MongoDB/Monitoring/TopologyOpeningEvent.c" role="src" />
<file md5sum="fbd4ae5b9ea524670dd0a1472247de5f" name="src/MongoDB/Monitoring/TopologyOpeningEvent_arginfo.h" role="src" />
<file md5sum="b9d6c320c4c15f23725408466c3f99b4" name="src/MongoDB/Monitoring/functions.c" role="src" />
<file md5sum="dcbccf638a1d98dcf54a320cdea3e6c0" name="src/MongoDB/BulkWrite.c" role="src" />
<file md5sum="8290f94f1ef73a7b9aa0f3b84f7874c8" name="src/MongoDB/BulkWriteCommand.c" role="src" />
<file md5sum="eb1afa5b7c46fc67d4fa3e6bf0f6a839" name="src/MongoDB/BulkWriteCommand.h" role="src" />
<file md5sum="18fd40af94f9d00cf383b5721b067824" name="src/MongoDB/BulkWriteCommandResult.c" role="src" />
<file md5sum="6ef35428ca41e90911c9f319156fdd80" name="src/MongoDB/BulkWriteCommandResult.h" role="src" />
<file md5sum="60bd53f74ecfc21e4431ba3aa568f8e1" name="src/MongoDB/BulkWriteCommandResult_arginfo.h" role="src" />
<file md5sum="23b737360853914a5cbb2931543d7691" name="src/MongoDB/BulkWriteCommand_arginfo.h" role="src" />
<file md5sum="faa7e201c0761e0f37208034eeec0ccf" name="src/MongoDB/BulkWrite_arginfo.h" role="src" />
<file md5sum="e9cae3230f4fb849946324f2224057bd" name="src/MongoDB/ClientEncryption.c" role="src" />
<file md5sum="160fece5814c42a5379dae4a8686ff67" name="src/MongoDB/ClientEncryption.h" role="src" />
<file md5sum="e8930efcad9edc08f5be88f353c7e6c2" name="src/MongoDB/ClientEncryption_arginfo.h" role="src" />
<file md5sum="4fff09ccaddd83d5267f736094312562" name="src/MongoDB/Command.c" role="src" />
<file md5sum="05e89a37fdec11dd48252f35217c2e39" name="src/MongoDB/Command_arginfo.h" role="src" />
<file md5sum="c6842352e38e510c6129c48da009143f" name="src/MongoDB/Cursor.c" role="src" />
<file md5sum="6135ff0c218c575007aae59c71bd4306" name="src/MongoDB/Cursor.h" role="src" />
<file md5sum="620898101dd8d5227d7d6727c30d3283" name="src/MongoDB/CursorInterface.c" role="src" />
<file md5sum="f18d71d408038fc7e7cd694fcaa2cfa0" name="src/MongoDB/CursorInterface_arginfo.h" role="src" />
<file md5sum="890087533a35762d76bd4c9a365648df" name="src/MongoDB/Cursor_arginfo.h" role="src" />
<file md5sum="8a8b364a6180ca20cee147235c95ab2d" name="src/MongoDB/Manager.c" role="src" />
<file md5sum="fc7b47b24d347c2e48e782e3a31b0ca4" name="src/MongoDB/Manager_arginfo.h" role="src" />
<file md5sum="e19a4db6800de8f42afab8f8c032a682" name="src/MongoDB/Query.c" role="src" />
<file md5sum="a89e410479697726b10de0de03a6ee4c" name="src/MongoDB/Query.h" role="src" />
<file md5sum="ebab31c5d931bfed4bba544df6468007" name="src/MongoDB/Query_arginfo.h" role="src" />
<file md5sum="6f2966375ec6404eee4d544a74fbbc17" name="src/MongoDB/ReadConcern.c" role="src" />
<file md5sum="dfc43f39b619cba2223dfe0ec89a1317" name="src/MongoDB/ReadConcern.h" role="src" />
<file md5sum="d3daa1c04520ed378822dd3230a51aec" name="src/MongoDB/ReadConcern_arginfo.h" role="src" />
<file md5sum="3aa5472f5c43caf5889d11ef86e7607a" name="src/MongoDB/ReadPreference.c" role="src" />
<file md5sum="ab47ca59c435b301b76206bff8c00c4b" name="src/MongoDB/ReadPreference.h" role="src" />
<file md5sum="cf60efd8277a1bef53af46fb96563044" name="src/MongoDB/ReadPreference_arginfo.h" role="src" />
<file md5sum="c61642ed29f09ec4fe7637d16c3f6ef3" name="src/MongoDB/Server.c" role="src" />
<file md5sum="d88d4c2dbbc0801b2e193add88fbb282" name="src/MongoDB/Server.h" role="src" />
<file md5sum="8ac36109ead34bfdada99fcf603c02b3" name="src/MongoDB/ServerApi.c" role="src" />
<file md5sum="1552029cc01917b3b721efb8ac96926c" name="src/MongoDB/ServerApi_arginfo.h" role="src" />
<file md5sum="dc72679f56c0d314f731ea751ffa0896" name="src/MongoDB/ServerDescription.c" role="src" />
<file md5sum="901ef117189821306a5285dd658b6d8e" name="src/MongoDB/ServerDescription.h" role="src" />
<file md5sum="be6ace046bce98f2a05703a6f83dfe5d" name="src/MongoDB/ServerDescription_arginfo.h" role="src" />
<file md5sum="80bbb29fe34f3e07ec59d2a0c27e6156" name="src/MongoDB/Server_arginfo.h" role="src" />
<file md5sum="fd94290592ab02e232a4bc53fbd1405f" name="src/MongoDB/Session.c" role="src" />
<file md5sum="f223d4b60d1cc0d260b580753c9b4d71" name="src/MongoDB/Session.h" role="src" />
<file md5sum="b98473b601ec08d30ab2c7defe473332" name="src/MongoDB/Session_arginfo.h" role="src" />
<file md5sum="269b5b4f2513f7bc69963ba0a4751d8d" name="src/MongoDB/TopologyDescription.c" role="src" />
<file md5sum="cc97a8a3224fde58746283170a4c7389" name="src/MongoDB/TopologyDescription.h" role="src" />
<file md5sum="ddcf7d85e85e3e0910857778e4a30978" name="src/MongoDB/TopologyDescription_arginfo.h" role="src" />
<file md5sum="71214ac09aee7fc6c734366a6e7d1bc1" name="src/MongoDB/WriteConcern.c" role="src" />
<file md5sum="2b08c4db364d4a012ab7b2943fb8e568" name="src/MongoDB/WriteConcern.h" role="src" />
<file md5sum="f1984695caf3df1e9a6798d6e54c6bbf" name="src/MongoDB/WriteConcernError.c" role="src" />
<file md5sum="70a70d1c6a8a12fd030b24d34a9b100a" name="src/MongoDB/WriteConcernError.h" role="src" />
<file md5sum="54541f921d62b7c8b8455142f6b9aa58" name="src/MongoDB/WriteConcernError_arginfo.h" role="src" />
<file md5sum="faa250831236e578c2494ced32bb5a89" name="src/MongoDB/WriteConcern_arginfo.h" role="src" />
<file md5sum="b004c0d7ef16e3c120114b86556a4a94" name="src/MongoDB/WriteError.c" role="src" />
<file md5sum="01d7508976554f0ba21898394872214c" name="src/MongoDB/WriteError.h" role="src" />
<file md5sum="1534bed7281d6ae2cea612df7e8ffbea" name="src/MongoDB/WriteError_arginfo.h" role="src" />
<file md5sum="c4f89a299c64ccf829ff431b12abcb44" name="src/MongoDB/WriteResult.c" role="src" />
<file md5sum="8c7156fc7a16438f7b04d880cf7437f1" name="src/MongoDB/WriteResult.h" role="src" />
<file md5sum="841904d2df6178b67104996707c0d8d4" name="src/MongoDB/WriteResult_arginfo.h" role="src" />
<file md5sum="18265e0feab623aa81eafbf92e5830f6" name="src/contrib/php_array_api.h" role="src" />
<file md5sum="8d5d138780e961233c025681c991ec28" name="src/libmongoc/src/common/src/common-atomic-private.h" role="src" />
<file md5sum="4ef5363caf0a3e4c866abf98b854624e" name="src/libmongoc/src/common/src/common-atomic.c" role="src" />
<file md5sum="c7769fdb4c820238deef4b284250edb6" name="src/libmongoc/src/common/src/common-b64-private.h" role="src" />
<file md5sum="5372cadcda5af0aaf0ec5cc47a3cf26d" name="src/libmongoc/src/common/src/common-b64.c" role="src" />
<file md5sum="db20d66f4962a3d704246d3fb10a3aac" name="src/libmongoc/src/common/src/common-bits-private.h" role="src" />
<file md5sum="e49c9261e19b14bb6e4cfcda53edbac3" name="src/libmongoc/src/common/src/common-bson-dsl-private.h" role="src" />
<file md5sum="a8a94cf5b59fab681fc37085409718fa" name="src/libmongoc/src/common/src/common-cmp-private.h" role="src" />
<file md5sum="de3c3dfa7949127b9ca6bced2928b728" name="src/libmongoc/src/common/src/common-config.h" role="src" />
<file md5sum="619956e6cecc5eb8810b568529e2f63a" name="src/libmongoc/src/common/src/common-config.h.in" role="src" />
<file md5sum="e7952641258976b701a2653651a2e2dd" name="src/libmongoc/src/common/src/common-json-private.h" role="src" />
<file md5sum="499bbd4386d113063581c6eac2f1e277" name="src/libmongoc/src/common/src/common-json.c" role="src" />
<file md5sum="efef99a10c2b63cc99a9e5b8c35cb293" name="src/libmongoc/src/common/src/common-macros-private.h" role="src" />
<file md5sum="101051f42d18586915356c52c48069a8" name="src/libmongoc/src/common/src/common-md5-private.h" role="src" />
<file md5sum="03bb24e00b7013453cc6dc8f151e2663" name="src/libmongoc/src/common/src/common-md5.c" role="src" />
<file md5sum="aa5eace903458f1d2a65ecbcc9d48b79" name="src/libmongoc/src/common/src/common-oid-private.h" role="src" />
<file md5sum="a06bf82b62956856ddd69a90fb80b13a" name="src/libmongoc/src/common/src/common-oid.c" role="src" />
<file md5sum="3a48a66b4bd05c0120304ccc603e0b8f" name="src/libmongoc/src/common/src/common-prelude.h" role="src" />
<file md5sum="831585ade77038df801a296dce211b2a" name="src/libmongoc/src/common/src/common-string-private.h" role="src" />
<file md5sum="9ec95c285a69c066be07f82492bb2735" name="src/libmongoc/src/common/src/common-string.c" role="src" />
<file md5sum="9080da849c2dbfbea004d521eb9bbf12" name="src/libmongoc/src/common/src/common-thread-private.h" role="src" />
<file md5sum="04038be872cfe7a30977bc0c8cbef065" name="src/libmongoc/src/common/src/common-thread.c" role="src" />
<file md5sum="4a1d31da184b0b5157be0dda8bd282eb" name="src/libmongoc/src/common/src/common-utf8-private.h" role="src" />
<file md5sum="ffc011eff957abdff3b1b2dc3360c9ff" name="src/libmongoc/src/kms-message/src/kms_message/kms_azure_request.h" role="src" />
<file md5sum="178bd08ac73470d35b4986e388085161" name="src/libmongoc/src/kms-message/src/kms_message/kms_b64.h" role="src" />
<file md5sum="39ee9cf46b0439403a0f7c8073f583d5" name="src/libmongoc/src/kms-message/src/kms_message/kms_caller_identity_request.h" role="src" />
<file md5sum="8ebc97b8d9401873858ade801e9feb35" name="src/libmongoc/src/kms-message/src/kms_message/kms_decrypt_request.h" role="src" />
<file md5sum="d0fed9c2821dff65ae9dc6879ee881b6" name="src/libmongoc/src/kms-message/src/kms_message/kms_encrypt_request.h" role="src" />
<file md5sum="610a7df9b3f166d1173a890a19784b84" name="src/libmongoc/src/kms-message/src/kms_message/kms_gcp_request.h" role="src" />
<file md5sum="1522adee9e0ade465c313af38aa7aefe" name="src/libmongoc/src/kms-message/src/kms_message/kms_kmip_request.h" role="src" />
<file md5sum="98097ac94c63b8b4e3cabfd637a95315" name="src/libmongoc/src/kms-message/src/kms_message/kms_kmip_response.h" role="src" />
<file md5sum="0cd5c466ec235998c2a758540154ed75" name="src/libmongoc/src/kms-message/src/kms_message/kms_kmip_response_parser.h" role="src" />
<file md5sum="c1a35d0b49f3f920d16ffc84f4d8e373" name="src/libmongoc/src/kms-message/src/kms_message/kms_message.h" role="src" />
<file md5sum="cfef23bb3ac62cf8d3fbd8e08015f0c0" name="src/libmongoc/src/kms-message/src/kms_message/kms_message_defines.h" role="src" />
<file md5sum="5663ee4fe8bcca2dc395cd5be3617b44" name="src/libmongoc/src/kms-message/src/kms_message/kms_request.h" role="src" />
<file md5sum="ad85fcbd4c473f138818a4bd9e7f0815" name="src/libmongoc/src/kms-message/src/kms_message/kms_request_opt.h" role="src" />
<file md5sum="209083716262424fab84d670209755c8" name="src/libmongoc/src/kms-message/src/kms_message/kms_response.h" role="src" />
<file md5sum="6c5066d24cfbd1b4241fb854671503db" name="src/libmongoc/src/kms-message/src/kms_message/kms_response_parser.h" role="src" />
<file md5sum="e87486a63aa846e479f3bf1af7380038" name="src/libmongoc/src/kms-message/src/hexlify.c" role="src" />
<file md5sum="60664bb6d46c14b4eea28f15e6a082e5" name="src/libmongoc/src/kms-message/src/hexlify.h" role="src" />
<file md5sum="1e4af07511a196a91fd60a0e24a6e158" name="src/libmongoc/src/kms-message/src/kms_azure_request.c" role="src" />
<file md5sum="f464fe886184b4bdf04cc73eb17e24ef" name="src/libmongoc/src/kms-message/src/kms_b64.c" role="src" />
<file md5sum="29d5db2215a92ef6121c729f6c75ee00" name="src/libmongoc/src/kms-message/src/kms_caller_identity_request.c" role="src" />
<file md5sum="dc733fe6ab050e08cbd5689f1d2cba34" name="src/libmongoc/src/kms-message/src/kms_crypto.h" role="src" />
<file md5sum="1a549711223d3a9dc124951130fd0620" name="src/libmongoc/src/kms-message/src/kms_crypto_apple.c" role="src" />
<file md5sum="9876d4e3c0de2d0983ff5d68ff1555a4" name="src/libmongoc/src/kms-message/src/kms_crypto_libcrypto.c" role="src" />
<file md5sum="b8ecb9b69824d324900920d9b1a1db7d" name="src/libmongoc/src/kms-message/src/kms_crypto_none.c" role="src" />
<file md5sum="36ddddc32c7e2792bfb199b2000f5b0c" name="src/libmongoc/src/kms-message/src/kms_crypto_windows.c" role="src" />
<file md5sum="aba07d5c53233adfe5d8928b5ef92e06" name="src/libmongoc/src/kms-message/src/kms_decrypt_request.c" role="src" />
<file md5sum="65692a06262c9889f7ce0ae81928d390" name="src/libmongoc/src/kms-message/src/kms_encrypt_request.c" role="src" />
<file md5sum="d96caa47040b3d844be8720df0481477" name="src/libmongoc/src/kms-message/src/kms_endian_private.h" role="src" />
<file md5sum="7e00d14497770adaddad08e074ba80a6" name="src/libmongoc/src/kms-message/src/kms_gcp_request.c" role="src" />
<file md5sum="593d915279b88dcc90ccdc13562ade1d" name="src/libmongoc/src/kms-message/src/kms_kmip_item_type_private.h" role="src" />
<file md5sum="50d109ebf2a1a35f354ce4d77ad66327" name="src/libmongoc/src/kms-message/src/kms_kmip_reader_writer.c" role="src" />
<file md5sum="9a4ba49af76955cc7b5bf23ecca75ae3" name="src/libmongoc/src/kms-message/src/kms_kmip_reader_writer_private.h" role="src" />
<file md5sum="e26382512810f752e568e01ecf83d273" name="src/libmongoc/src/kms-message/src/kms_kmip_request.c" role="src" />
<file md5sum="ce4e975f079a2c7136909f2cc337f897" name="src/libmongoc/src/kms-message/src/kms_kmip_response.c" role="src" />
<file md5sum="ab89b217b929ac4340c9d22287185277" name="src/libmongoc/src/kms-message/src/kms_kmip_response_parser.c" role="src" />
<file md5sum="f64765a9c63171b8aa2c5fd7de738072" name="src/libmongoc/src/kms-message/src/kms_kmip_response_parser_private.h" role="src" />
<file md5sum="21898fd3923dfa059f2139a555643e14" name="src/libmongoc/src/kms-message/src/kms_kmip_result_reason_private.h" role="src" />
<file md5sum="8f826227b67ce2503aeb359cea5a3402" name="src/libmongoc/src/kms-message/src/kms_kmip_result_status_private.h" role="src" />
<file md5sum="e3cd5a25805733845177dc73abf6b11a" name="src/libmongoc/src/kms-message/src/kms_kmip_tag_type_private.h" role="src" />
<file md5sum="2a7f41d0b533d839384c449f05db13c5" name="src/libmongoc/src/kms-message/src/kms_kv_list.c" role="src" />
<file md5sum="69e374f65d9b21695d194e3495941f37" name="src/libmongoc/src/kms-message/src/kms_kv_list.h" role="src" />
<file md5sum="29d4c0130dec0a149b0065c0d3db6848" name="src/libmongoc/src/kms-message/src/kms_message.c" role="src" />
<file md5sum="c92ffd770a609bcecb9656af9c36317c" name="src/libmongoc/src/kms-message/src/kms_message_private.h" role="src" />
<file md5sum="f281a3def21d13d20c78836c3548315f" name="src/libmongoc/src/kms-message/src/kms_port.c" role="src" />
<file md5sum="6a768c38583f0f42f05e6da6d6f61dc4" name="src/libmongoc/src/kms-message/src/kms_port.h" role="src" />
<file md5sum="a43993d39a00a943aeba604f715a84d5" name="src/libmongoc/src/kms-message/src/kms_request.c" role="src" />
<file md5sum="fd15be17d87fa70a2bab1a0309b71b82" name="src/libmongoc/src/kms-message/src/kms_request_opt.c" role="src" />
<file md5sum="c7079940f8096ea3bce05d343de44481" name="src/libmongoc/src/kms-message/src/kms_request_opt_private.h" role="src" />
<file md5sum="1d8afba41df3771c71e52b89c006d1b7" name="src/libmongoc/src/kms-message/src/kms_request_str.c" role="src" />
<file md5sum="8943a55e4b590e6aaf6e7df818922699" name="src/libmongoc/src/kms-message/src/kms_request_str.h" role="src" />
<file md5sum="92b75e5851d90b8d28949ef18417c789" name="src/libmongoc/src/kms-message/src/kms_response.c" role="src" />
<file md5sum="f6ced5985dc5ce3009b2a2717268208d" name="src/libmongoc/src/kms-message/src/kms_response_parser.c" role="src" />
<file md5sum="dff15b5018efb6269a2a0269c5ddb798" name="src/libmongoc/src/kms-message/src/sort.c" role="src" />
<file md5sum="18f9bd055f6a60e7702603b6b8bf07d5" name="src/libmongoc/src/kms-message/src/sort.h" role="src" />
<file md5sum="2e991c298adbb696c584f5f85149b864" name="src/libmongoc/src/libbson/src/bson/bcon.c" role="src" />
<file md5sum="94538a79b0dc528b560d844e34f19947" name="src/libmongoc/src/libbson/src/bson/bcon.h" role="src" />
<file md5sum="21a687d151c2116bac5b4f469dfc665f" name="src/libmongoc/src/libbson/src/bson/bson-atomic.c" role="src" />
<file md5sum="a8717ee6ef098adb5c45bfd7c1fe8db8" name="src/libmongoc/src/libbson/src/bson/bson-atomic.h" role="src" />
<file md5sum="b49d3b11cf5c3edc4bb6d815daf82f2d" name="src/libmongoc/src/libbson/src/bson/bson-clock.c" role="src" />
<file md5sum="baa115830b76c0e46e66a582a3d0b1a3" name="src/libmongoc/src/libbson/src/bson/bson-clock.h" role="src" />
<file md5sum="8d76602f29623594940668f8a9464288" name="src/libmongoc/src/libbson/src/bson/bson-cmp.h" role="src" />
<file md5sum="d8175c9179d219c2ac3659941d39c1ac" name="src/libmongoc/src/libbson/src/bson/bson-compat.h" role="src" />
<file md5sum="8c6f64accb6307e2a97b3350be3c54d0" name="src/libmongoc/src/libbson/src/bson/bson-config.h" role="src" />
<file md5sum="af531055f8519c643d9c1a4bd6397f45" name="src/libmongoc/src/libbson/src/bson/bson-config.h.in" role="src" />
<file md5sum="774b1c66292efab4c671a29f0b805468" name="src/libmongoc/src/libbson/src/bson/bson-context-private.h" role="src" />
<file md5sum="bcd82ae3621e0b5d02f6f10067ed8f4c" name="src/libmongoc/src/libbson/src/bson/bson-context.c" role="src" />
<file md5sum="a6ce84cb1458ff1b995679809406cb85" name="src/libmongoc/src/libbson/src/bson/bson-context.h" role="src" />
<file md5sum="1fc8a2af71a89db893f604138d931ab2" name="src/libmongoc/src/libbson/src/bson/bson-decimal128.c" role="src" />
<file md5sum="c3c1b82ef507cd634de5c1159a4d4ee8" name="src/libmongoc/src/libbson/src/bson/bson-decimal128.h" role="src" />
<file md5sum="895bcf1078820ce2c89334c546de7c12" name="src/libmongoc/src/libbson/src/bson/bson-endian.h" role="src" />
- <file md5sum="3f343ce5fd2cc8dd54f2b898dbf712c9" name="src/libmongoc/src/libbson/src/bson/bson-error.c" role="src" />
+ <file md5sum="a380cb085ca56058ca53253339b409e9" name="src/libmongoc/src/libbson/src/bson/bson-error.c" role="src" />
<file md5sum="66c590c21cea4244a4a23f3a11004c95" name="src/libmongoc/src/libbson/src/bson/bson-error.h" role="src" />
<file md5sum="cae7d8858e2b2535d3467c16cca8dbfe" name="src/libmongoc/src/libbson/src/bson/bson-iso8601-private.h" role="src" />
<file md5sum="5c8cae279b6e32db853cb45a2acd57cb" name="src/libmongoc/src/libbson/src/bson/bson-iso8601.c" role="src" />
<file md5sum="94adb872b76d724cd38f58607addc428" name="src/libmongoc/src/libbson/src/bson/bson-iter.c" role="src" />
<file md5sum="00b44a340f4dfc31b8398afb64b104a6" name="src/libmongoc/src/libbson/src/bson/bson-iter.h" role="src" />
<file md5sum="671ee743879d55cb387a22822bcd04b8" name="src/libmongoc/src/libbson/src/bson/bson-json-private.h" role="src" />
<file md5sum="3114058a6bdf367e55bd7bd8f501f8a9" name="src/libmongoc/src/libbson/src/bson/bson-json.c" role="src" />
<file md5sum="678881318543a678942a58b3a9c805f8" name="src/libmongoc/src/libbson/src/bson/bson-json.h" role="src" />
<file md5sum="6469e122ae6151264163b40fe5b03f4e" name="src/libmongoc/src/libbson/src/bson/bson-keys.c" role="src" />
<file md5sum="d244a008321b301066cccfc219ab23b6" name="src/libmongoc/src/libbson/src/bson/bson-keys.h" role="src" />
<file md5sum="df64163505b4f2846151fa487c97546b" name="src/libmongoc/src/libbson/src/bson/bson-macros.h" role="src" />
<file md5sum="369ace6fc1dc485029adc990c669d41a" name="src/libmongoc/src/libbson/src/bson/bson-md5.c" role="src" />
<file md5sum="9eeb0d4aad2e51f99450fd954cc44bfe" name="src/libmongoc/src/libbson/src/bson/bson-md5.h" role="src" />
<file md5sum="b46f2156a9fbd1606098f36e73ee04a2" name="src/libmongoc/src/libbson/src/bson/bson-memory.c" role="src" />
<file md5sum="30e7a234f657ead5b690d63e66d55711" name="src/libmongoc/src/libbson/src/bson/bson-memory.h" role="src" />
<file md5sum="83e48d4ef4fd9c41ac326dc5d3651679" name="src/libmongoc/src/libbson/src/bson/bson-oid.c" role="src" />
<file md5sum="249c62aee2ffd2c5edb454be6b5cd7a6" name="src/libmongoc/src/libbson/src/bson/bson-oid.h" role="src" />
<file md5sum="2c42653a9d3625f02857352dd4d39bf9" name="src/libmongoc/src/libbson/src/bson/bson-prelude.h" role="src" />
<file md5sum="6e0f06532de6809fd418c86baacd48b1" name="src/libmongoc/src/libbson/src/bson/bson-private.h" role="src" />
<file md5sum="97c53cd764f69a22eef73dd14af57112" name="src/libmongoc/src/libbson/src/bson/bson-reader.c" role="src" />
<file md5sum="fe2539d9247600f62edf1d9de89dff19" name="src/libmongoc/src/libbson/src/bson/bson-reader.h" role="src" />
<file md5sum="5239b37b43d558815f882a7bbc6b1785" name="src/libmongoc/src/libbson/src/bson/bson-string.c" role="src" />
<file md5sum="af767afba4f5f7bea3641ed7ef0ca9fb" name="src/libmongoc/src/libbson/src/bson/bson-string.h" role="src" />
<file md5sum="5e925eb64a2048162ff1c9b014a83fbb" name="src/libmongoc/src/libbson/src/bson/bson-timegm-private.h" role="src" />
<file md5sum="c5440999133601cec2e931bf122541a6" name="src/libmongoc/src/libbson/src/bson/bson-timegm.c" role="src" />
- <file md5sum="0b8322aa9b3656527afbf5967373d845" name="src/libmongoc/src/libbson/src/bson/bson-types.h" role="src" />
+ <file md5sum="3d9ae9d9fc12e75395e01adc803c1300" name="src/libmongoc/src/libbson/src/bson/bson-types.h" role="src" />
<file md5sum="adb7995805d45f518c5b87a4676c521f" name="src/libmongoc/src/libbson/src/bson/bson-utf8.c" role="src" />
<file md5sum="8142dd67ad8cc94f8d54857881e2809c" name="src/libmongoc/src/libbson/src/bson/bson-utf8.h" role="src" />
<file md5sum="381ba573d2902e62addb73b9c8d35207" name="src/libmongoc/src/libbson/src/bson/bson-value.c" role="src" />
<file md5sum="ed3d9a7731531415ffe512e5cb2bc2b0" name="src/libmongoc/src/libbson/src/bson/bson-value.h" role="src" />
<file md5sum="e87cf558c0ec8c011a3d493281f59d43" name="src/libmongoc/src/libbson/src/bson/bson-version-functions.c" role="src" />
<file md5sum="7626c4729bf8fe9f925ed916b725d187" name="src/libmongoc/src/libbson/src/bson/bson-version-functions.h" role="src" />
- <file md5sum="b7b44090cfc7aa23c760ba10e681329d" name="src/libmongoc/src/libbson/src/bson/bson-version.h" role="src" />
+ <file md5sum="82eae81d9d3e058cecdacef92540a9ad" name="src/libmongoc/src/libbson/src/bson/bson-version.h" role="src" />
<file md5sum="b47c63ac799e8f8eaf8824cf9122a898" name="src/libmongoc/src/libbson/src/bson/bson-version.h.in" role="src" />
<file md5sum="a211f7a6693db0fc0aa8f57f241eec02" name="src/libmongoc/src/libbson/src/bson/bson-writer.c" role="src" />
<file md5sum="681fb286b0b4812d5d856cb5cd184489" name="src/libmongoc/src/libbson/src/bson/bson-writer.h" role="src" />
- <file md5sum="2b7b520acedcdf86b450a48082477a93" name="src/libmongoc/src/libbson/src/bson/bson.c" role="src" />
+ <file md5sum="fafbedd9b50dbfdd72f3080ccd05f6de" name="src/libmongoc/src/libbson/src/bson/bson.c" role="src" />
<file md5sum="a26a053cfdb023727f0544549fd55882" name="src/libmongoc/src/libbson/src/bson/bson.h" role="src" />
+ <file md5sum="7c7cdbd39a84d00e0b27ed4992e5550d" name="src/libmongoc/src/libbson/src/bson/validate-private.h" role="src" />
+ <file md5sum="dd0dace5e52819c2b5cd94edad5e2259" name="src/libmongoc/src/libbson/src/bson/validate.c" role="src" />
<file md5sum="c5383f84e9406fe841bc49dc6e3a1e0f" name="src/libmongoc/src/libbson/src/jsonsl/jsonsl.c" role="src" />
<file md5sum="e700e1d622d825ce49b4c87112b56a66" name="src/libmongoc/src/libbson/src/jsonsl/jsonsl.h" role="src" />
<file md5sum="107bf23325e98a03903f9ab045630e6d" name="src/libmongoc/src/libmongoc/src/mongoc/mcd-azure.c" role="src" />
<file md5sum="4db42c7dab4dfeb6aa05661be73b0a09" name="src/libmongoc/src/libmongoc/src/mongoc/mcd-azure.h" role="src" />
<file md5sum="b7c6385094e7107a724e5b81ffc6014e" name="src/libmongoc/src/libmongoc/src/mongoc/mcd-integer.h" role="src" />
<file md5sum="61b21c89af1f00afcda3251dcfe511f9" name="src/libmongoc/src/libmongoc/src/mongoc/mcd-nsinfo.c" role="src" />
<file md5sum="46a79b1a78aeeaa8457818f94f17da0c" name="src/libmongoc/src/libmongoc/src/mongoc/mcd-nsinfo.h" role="src" />
<file md5sum="63a8a30700282d74e380d6371603e3be" name="src/libmongoc/src/libmongoc/src/mongoc/mcd-rpc.c" role="src" />
<file md5sum="e666623b2a67fe23d4024e14da60b2a6" name="src/libmongoc/src/libmongoc/src/mongoc/mcd-rpc.h" role="src" />
<file md5sum="102560dc77c87642d454467bfb627efc" name="src/libmongoc/src/libmongoc/src/mongoc/mcd-time.h" role="src" />
<file md5sum="f74a1ac07fa98124386087b6d7660799" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-aggregate-private.h" role="src" />
<file md5sum="7d15349bba5fbaf399f30f29bc0ad1ba" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-aggregate.c" role="src" />
<file md5sum="991cfaffbaf2f17435f93e50f7a03ffc" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm-private.h" role="src" />
<file md5sum="ea54f0d35c7786e2ae557d648a241598" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm.c" role="src" />
<file md5sum="f22caa7f09e8072129a40d7d70b63e6a" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-apm.h" role="src" />
<file md5sum="d6d4c651e645e9a6887618a16571e301" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-array-private.h" role="src" />
<file md5sum="e8d29420ba861c837577b5ec707ccf5d" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-array.c" role="src" />
<file md5sum="6064c10fc2e7adf45a031a61f0e084c4" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-cmd-private.h" role="src" />
<file md5sum="c72ddf26c93124ce5d45f109a12fc0a2" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-cmd.c" role="src" />
<file md5sum="ea2ba497f12896b1f7b54d89cef523b7" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-async-private.h" role="src" />
<file md5sum="149cf82a5215fc5ae25c4745331a505b" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-async.c" role="src" />
<file md5sum="f77f0250976c5ee0da26c7dc982ee68c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-buffer-private.h" role="src" />
<file md5sum="f0711fde372f7b1b58506d48bb06ddf3" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-buffer.c" role="src" />
<file md5sum="bde4c9f536a618703a9529ec24e29a4e" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation-private.h" role="src" />
<file md5sum="150cde99a15c20f85ff57fc307f00d00" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation.c" role="src" />
<file md5sum="8a37a0ea9057ee5717513ddd93a7a7a7" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulk-operation.h" role="src" />
<file md5sum="6a44510371724821d8e106274df2f473" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulkwrite.c" role="src" />
<file md5sum="535a72272ee1961e0de810e875b7e0d3" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-bulkwrite.h" role="src" />
<file md5sum="914f93211b2870423840e73ed4e53473" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream-private.h" role="src" />
<file md5sum="a4f5bb5c589aa9032256c8ea20bd7657" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream.c" role="src" />
<file md5sum="a0ba686f7f78d3e8bafe255e8df2b10f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-change-stream.h" role="src" />
<file md5sum="8b3bb177feea96b35c6bc4266283710c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool-private.h" role="src" />
<file md5sum="22a19e5b4472b9413f7e3cceb725a0a6" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool.c" role="src" />
<file md5sum="0c7e6e5c81c85d92167f2f5c9c19905d" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-pool.h" role="src" />
<file md5sum="0e64f9c5489d3d145ea64b8a111b0436" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-private.h" role="src" />
<file md5sum="6f4079ddf3f9a4ecadee6f497d0a75f1" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session-private.h" role="src" />
<file md5sum="dc69bb76d550ce52cd762db43823a8f3" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session.c" role="src" />
<file md5sum="ff56af4296f47d78812110406c9a7836" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-session.h" role="src" />
<file md5sum="07adf783a314f8a8f89672ba94d3085f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption-private.h" role="src" />
- <file md5sum="8ea9e8ea1cebda5bed0d7f145c37774d" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.c" role="src" />
+ <file md5sum="cb0f5a3dcecfc3e0afa9c0e662c12736" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.c" role="src" />
<file md5sum="2159b38c793c159000d7d116890439c7" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client-side-encryption.h" role="src" />
- <file md5sum="a3ae5e84665a9790897c6dfe34ac2544" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.c" role="src" />
+ <file md5sum="770e3fa50fef8474649c50d66778c940" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.c" role="src" />
<file md5sum="b0fdd91057b226e48505b23c44c3df88" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-client.h" role="src" />
<file md5sum="6bd521e35b4de4249255904697983853" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-aws-private.h" role="src" />
<file md5sum="57e344614da01a37f8af19e24f9f51a5" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-aws.c" role="src" />
<file md5sum="37317b6378c553659f55e53e5376cff8" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-cyrus-private.h" role="src" />
<file md5sum="9b3add0171f5e904acaea8ab1b3c870a" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-cyrus.c" role="src" />
<file md5sum="766b00f6d1ea1b068d97f538a389425a" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-private.h" role="src" />
<file md5sum="0d4e3c1613e17f9e0971efe64c189880" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sasl-private.h" role="src" />
<file md5sum="3d3091d2cc60bc97f1e30a6f4788a823" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sasl.c" role="src" />
<file md5sum="da5b3db08f41d00ced0b779cbc61a410" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sspi-private.h" role="src" />
<file md5sum="193606031d1392c5fca6b31994db71de" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster-sspi.c" role="src" />
<file md5sum="0e2fa7ed5d94ee54d58db07adfebbb7c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cluster.c" role="src" />
<file md5sum="9df43fbd52993ad3c6117fb21a5a3c2d" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cmd-private.h" role="src" />
<file md5sum="1dd1b4ab78a3d052ccd085ff477f95e5" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cmd.c" role="src" />
<file md5sum="a396d860c74b0fbb2696bdcb5a74aaff" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection-private.h" role="src" />
<file md5sum="14cc7ac5c07a19408da77e68a11c013e" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection.c" role="src" />
<file md5sum="8ce4ff37de45be52070a27243f57ccd8" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-collection.h" role="src" />
<file md5sum="f5abb7e1cb6ade112b327abd0f85e6d9" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-compression-private.h" role="src" />
<file md5sum="69afebc8eb974fc5e99351091744c7f7" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-compression.c" role="src" />
<file md5sum="141d3bee46b24b0df036aefb703bd4f6" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h" role="src" />
<file md5sum="45ce1e8ab80791d6994b4f0d4f9b1fc4" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-config.h.in" role="src" />
<file md5sum="ee3de5dcf053ca26599e70581f35f10a" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters-private.h" role="src" />
<file md5sum="9f997c53b38ece2254a7215b34f99603" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters.c" role="src" />
<file md5sum="67fbdae6d242d8ff7a488e9d6ea9769c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-counters.defs" role="src" />
<file md5sum="a687030ff4be49fb887f41ae422aa52b" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypt-private.h" role="src" />
<file md5sum="6db12a1438cdcdd0034d47374e5da584" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypt.c" role="src" />
<file md5sum="7d2a51189e4abe1f79ee17c7e5d05f39" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-cng-private.h" role="src" />
<file md5sum="79a042280ea05afc48c28a26e359de16" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-cng.c" role="src" />
<file md5sum="f90af25332d4e00a99dfec23d937d00f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-common-crypto-private.h" role="src" />
<file md5sum="2c161a3620d5a936b7ae691dcbbf3210" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-common-crypto.c" role="src" />
<file md5sum="63a0cf5751d7c480f448a5fd01d5dc84" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-openssl-private.h" role="src" />
<file md5sum="2cde56c56a6b3170447b2915f651d441" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-openssl.c" role="src" />
<file md5sum="c2c41d8923144359dbb2e8ec87a4dbea" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto-private.h" role="src" />
<file md5sum="a2f481acb8ae40ccd992de8444a56fe3" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-crypto.c" role="src" />
<file md5sum="5195034a24794c713b011bce04526c6a" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-array.c" role="src" />
<file md5sum="647efefa7c1b3d1055aeec5d1cb02d38" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-change-stream.c" role="src" />
<file md5sum="8a523850b0b67b798f182b069eb88b0e" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-cmd-deprecated.c" role="src" />
<file md5sum="73245f9b2331139db09af8dd38a73dcd" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-cmd.c" role="src" />
<file md5sum="b286867b8badec32b537a76187f1041a" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find-cmd.c" role="src" />
<file md5sum="981449306f72b35b8d706dc20b6f4386" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find-opquery.c" role="src" />
<file md5sum="b5e6789604f341db9b8ea498d2fa5e34" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-find.c" role="src" />
<file md5sum="207d3a9f98ee8fff95d7fd684a52530d" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-legacy.c" role="src" />
<file md5sum="46790b936b171104ce7a5fc081f7543f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor-private.h" role="src" />
<file md5sum="2110d301ca0f64ce1898a04294c951d4" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor.c" role="src" />
<file md5sum="4d2a34b06b68c0cb17c9a5011f077343" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cursor.h" role="src" />
<file md5sum="19a354326881e58341ad091b375aa6d3" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cyrus-private.h" role="src" />
<file md5sum="987427ea030f88ece786e1d8f04e6664" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-cyrus.c" role="src" />
<file md5sum="1599aaf6282429b1eebe2c715084e0b1" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-database-private.h" role="src" />
<file md5sum="12cafb759fc95b13cb9cc64db65c6a55" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-database.c" role="src" />
<file md5sum="3abcde36f40034892b6edaf467663b2e" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-database.h" role="src" />
<file md5sum="878a2ee72f69bdd280f61233509f1971" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-deprioritized-servers-private.h" role="src" />
<file md5sum="359041d9ae2cf724baee0180d6f258cc" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-deprioritized-servers.c" role="src" />
<file md5sum="6dd837c1847b9981d49c0d161fda23a9" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-errno-private.h" role="src" />
- <file md5sum="0121da2bc205cfe79dc00914ad900d42" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-error-private.h" role="src" />
- <file md5sum="506273c2d7d90484fc6145e77cc023d1" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.c" role="src" />
+ <file md5sum="90694c5521f2209ca93a932858458ebb" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-error-private.h" role="src" />
+ <file md5sum="a0e04e4b272c271a9acaf5a4390491ba" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.c" role="src" />
<file md5sum="a790ed95bd9f39376d8d2f7bf371fc01" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-error.h" role="src" />
<file md5sum="9b923815adaef75d65b343d3b0a3e823" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify-private.h" role="src" />
<file md5sum="bc69eebd9ea2b23ba8691ede3f73ae58" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify.c" role="src" />
<file md5sum="a66730760d3ddf100a085e99777fd94f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-find-and-modify.h" role="src" />
<file md5sum="672a3c79cc20b3bcb52386d373e04994" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags-private.h" role="src" />
<file md5sum="f5de9fd4bc505e4963b3a0525ef9bc61" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags.c" role="src" />
<file md5sum="6d6b83c354df207d9504ace90a58ec13" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-flags.h" role="src" />
<file md5sum="bd2b06b6e0c976e0e0258e80ef6683d5" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-generation-map-private.h" role="src" />
<file md5sum="48236db00921f67d8e4a678b504a347f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-generation-map.c" role="src" />
<file md5sum="b0b354242c0950fe64521a6dc89a14b9" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-file-private.h" role="src" />
<file md5sum="852ae67e4c05f0532c8c03768d0d9ec0" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-file.c" role="src" />
<file md5sum="68fbb28c2b090060535a4d2951837208" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket-private.h" role="src" />
<file md5sum="b7ade556470d89370d9100464be2c386" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket.c" role="src" />
<file md5sum="8de94a8c9f3441adb6977afab5a0afd4" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-bucket.h" role="src" />
<file md5sum="ef93262ff040352b1f9059b70bd57679" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list-private.h" role="src" />
<file md5sum="6df133d750a86d4b3263c5164353865c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list.c" role="src" />
<file md5sum="dda4f026a3757053a3ad10be2dce150a" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-list.h" role="src" />
<file md5sum="787adc50949b050772d7aa23040d1a55" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page-private.h" role="src" />
<file md5sum="560497c223b4da272ec002d3fd6a9e31" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page.c" role="src" />
<file md5sum="509f3b1539b9dd6de15a175b215a09e8" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-page.h" role="src" />
<file md5sum="b240a635107c5612bd6bebb10dd1859f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file-private.h" role="src" />
<file md5sum="0c9cbe01746e28a87fcb85a08e09b981" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file.c" role="src" />
<file md5sum="57f704d7f5000c80ad0fa65e0a764f2b" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-file.h" role="src" />
<file md5sum="c9cfe6c226ca7338910818636c3f97b5" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs-private.h" role="src" />
<file md5sum="a5dabad88206ed144c6f8524e3d91fcc" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs.c" role="src" />
<file md5sum="3acffb4579f220627cb087205ce99a66" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-gridfs.h" role="src" />
<file md5sum="bbd2223c3ee5fbe3221b003625de3dc5" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-compiler-private.h" role="src" />
<file md5sum="5a5b5223097eec497e3739ac27661266" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-os-private.h" role="src" />
<file md5sum="44bcb471bcdb2cd340eae055d6d17d8c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake-private.h" role="src" />
- <file md5sum="5508af21476420cabc8645e615274c28" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.c" role="src" />
+ <file md5sum="b93acff997313d7988a653ef8ee302a6" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.c" role="src" />
<file md5sum="f4b4b76c46db6a1a5eebd37714de61d4" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-handshake.h" role="src" />
<file md5sum="a52c62bfebf7bbe8ea8ecf8499889ff0" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list-private.h" role="src" />
<file md5sum="ce276d784b0be857e48e3f2466bdf5cb" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list.c" role="src" />
<file md5sum="8fc325b659cec3e62fa65b069f1cb9cb" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-host-list.h" role="src" />
<file md5sum="fed805608d0f58354fea4822c8316eb8" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-http-private.h" role="src" />
<file md5sum="092760cd3372b266a6cb257055cfc263" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-http.c" role="src" />
<file md5sum="30af5b7cbae712efbcf5e1b57e4d9a39" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-index.c" role="src" />
<file md5sum="8dfbcc48a2ed638e7a7aaf205024fabd" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-index.h" role="src" />
<file md5sum="d430a67c052435594d9752b1b678ec4b" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-init.c" role="src" />
<file md5sum="4c94084109e73c3a907600a1b4f65d86" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-init.h" role="src" />
<file md5sum="386ad032d1533310b621c67ae0b4b3ca" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-interrupt-private.h" role="src" />
<file md5sum="3ddb242805f10eae38dcb1017f01899d" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-interrupt.c" role="src" />
<file md5sum="378e3b717d87cf84a4f327e935c3fa97" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-iovec.h" role="src" />
<file md5sum="f49d01ff4e7d574663c0d0edc4bcaf44" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-libressl-private.h" role="src" />
<file md5sum="d11aaf0d3352106e583185ea201959d4" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-libressl.c" role="src" />
<file md5sum="eb6b8dfdd0ddd2e9d3d87c874f2848d3" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-linux-distro-scanner-private.h" role="src" />
<file md5sum="ff2a9129d6f76d78b66b68cbf0c71199" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-linux-distro-scanner.c" role="src" />
<file md5sum="f6704c5ee2b2d9f801a822a7c9299dd1" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-list-private.h" role="src" />
<file md5sum="ff8fad37db71dfa6eec3de47ce781fff" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-list.c" role="src" />
<file md5sum="9f8d9e0f626f7b70b04de206936ec1e8" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-and-monitor-private.c" role="src" />
<file md5sum="d2d2e54f5b243fbdccd3d38ff7656a44" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-and-monitor-private.h" role="src" />
<file md5sum="b4a5be2e26a9057e9079fe751d24fd15" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-log-private.h" role="src" />
<file md5sum="deb0c62f6875efe52144bd49257b4e9b" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-log.c" role="src" />
<file md5sum="9d552afcb0ff8ea90b28d9816db7a64a" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-log.h" role="src" />
<file md5sum="2c5d086f934cc7796fd2e1f6100ea3cd" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-macros.h" role="src" />
<file md5sum="669395c17d851370d9a6c44d3f78e2a3" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-op-private.h" role="src" />
<file md5sum="f12bd83a495049a2c0c81315cfb0c752" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-op.c" role="src" />
<file md5sum="7e9e6574bcfda2e1935710627cd041c9" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher-private.h" role="src" />
<file md5sum="8cfb590bdad22f3122d32fcbed22bba5" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher.c" role="src" />
<file md5sum="a33aa5cb9daa01924620d44e4b24986e" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-matcher.h" role="src" />
<file md5sum="a77663e1782f5bd6e3bf4d29a2c170c1" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-memcmp-private.h" role="src" />
<file md5sum="40a1a866e21df1f45e24b5d641b456d5" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-memcmp.c" role="src" />
<file md5sum="8f6e9074547136bdcd5fad945700170d" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-ocsp-cache-private.h" role="src" />
<file md5sum="4f4ab35f68b7f06fd743ebeb1a6b4a8c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-ocsp-cache.c" role="src" />
<file md5sum="ed2992d365f66d81a4bba53f3f73af9a" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-opcode.c" role="src" />
<file md5sum="45a2f202aa9b11452d4e115eab61f90d" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-opcode.h" role="src" />
<file md5sum="928bab30e45871d3710eb8001a8ed7e3" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl-private.h" role="src" />
- <file md5sum="b7897ada5d07bc7b1392bb8681957fc2" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl.c" role="src" />
+ <file md5sum="04fbfecd04aa16a8c2cc5b396ef6664c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-openssl.c" role="src" />
<file md5sum="40ebdddec3ed127f671e52209b0e978c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-optional.c" role="src" />
<file md5sum="20b1cba35bfcb135952b28e5ce44d1a5" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-optional.h" role="src" />
<file md5sum="97c22a13f88a19204f358ce69fdc928d" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-helpers-private.h" role="src" />
<file md5sum="307b4374bebb2f56fd20effe87ecd90e" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-helpers.c" role="src" />
<file md5sum="30c6729ada91d8710bae6537f867a9d6" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts-private.h" role="src" />
<file md5sum="11152d0ca7ef44b543165d48f4a60700" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-opts.c" role="src" />
<file md5sum="94a345a71f80c0e3d70656feb62284cd" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-prelude.h" role="src" />
<file md5sum="8dbdd27a19d248f88dac1386fc8e37ff" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-queue-private.h" role="src" />
<file md5sum="55477a8df38b6ed6579c7cc2742b5ab4" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-queue.c" role="src" />
<file md5sum="7489180bd7818c9c11b35653f78fb330" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-cng.c" role="src" />
<file md5sum="455d022e1635c57fa4974b9e9afe4453" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-common-crypto.c" role="src" />
<file md5sum="587217bb3cf7a42625658b6b46e530ba" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-openssl.c" role="src" />
<file md5sum="6645f68612ded0cd0c30df0cf40af1e8" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand-private.h" role="src" />
<file md5sum="3bf2801b3022f4e118dc04f3c6165f44" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-rand.h" role="src" />
<file md5sum="5969a4e0c732eb1679222557ec4364ca" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern-private.h" role="src" />
<file md5sum="c8b9aecfe96affab46bb28b771de8f20" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern.c" role="src" />
<file md5sum="3df80ddd427f42b29480534573037f61" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-concern.h" role="src" />
<file md5sum="60449987bb2bf04468b656f0d6dac632" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs-private.h" role="src" />
<file md5sum="5793ad17cc6dea119cdf78e1ed023844" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs.c" role="src" />
<file md5sum="abd0cc850e3a2f8e825d9d103bd5e9a6" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-read-prefs.h" role="src" />
<file md5sum="f6b3cce2dcef1650951c8f694fd7e7e9" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-rpc-private.h" role="src" />
<file md5sum="75e43f3d59f90ca9094dfd70a5fd4101" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-rpc.c" role="src" />
<file md5sum="e9811cd3fc766d0415b5f514b0be9119" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-sasl-private.h" role="src" />
<file md5sum="d13373442f23e535ff6724955a404c75" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-sasl.c" role="src" />
<file md5sum="d66e0c3f158f65f163263a39e5bb9827" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram-private.h" role="src" />
<file md5sum="356e8538bd494e889591c295d096257d" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram.c" role="src" />
- <file md5sum="f456d553922641ce079c8358b73e2e14" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel-private.h" role="src" />
- <file md5sum="01b4e2b2a071725982d3d1a1aa183c1e" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel.c" role="src" />
+ <file md5sum="9ca3d2b6878485c509d09fdbdec26d25" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel-private.h" role="src" />
+ <file md5sum="706662911975f9c4a8dbc9bb58bf88fb" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-channel.c" role="src" />
<file md5sum="62952629a3601cdda53fb5f10acdb11e" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-transport-private.h" role="src" />
<file md5sum="1e493ede6ba10164b2dd919a877acaa3" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-secure-transport.c" role="src" />
<file md5sum="744d0a63a5958ecde5686ec6c75e64bb" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api-private.h" role="src" />
<file md5sum="614dfff288d308369f4a0b2934e47d6c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api.c" role="src" />
<file md5sum="5c5a73c1c26ffb5c69414279611d0791" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-api.h" role="src" />
<file md5sum="f601e7fca697152edea5bdee6d6e57ab" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description-private.h" role="src" />
<file md5sum="29757e3b043b5b204759cc6789f9d409" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description.c" role="src" />
<file md5sum="96532c20a0c2b6c0da87ebf2296a0f38" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-description.h" role="src" />
<file md5sum="f45832b6d845d4473a8262359d4c1c20" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-monitor-private.h" role="src" />
<file md5sum="abd7665f77ec03761e21c989c8c40058" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-monitor.c" role="src" />
<file md5sum="d1c3b137e3a5158c39594eab77563479" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-stream-private.h" role="src" />
<file md5sum="facdcd86b82d518389204f4430f759f1" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-server-stream.c" role="src" />
<file md5sum="c0884e82cad228e046d1adbca382806b" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-set-private.h" role="src" />
<file md5sum="ae7ea547d061ddd2b03ddd33a43f3336" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-set.c" role="src" />
<file md5sum="6af7a5d99b77086246d15d428ebdf8fd" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-shared-private.h" role="src" />
<file md5sum="76e917deb8f8f7a112e929a199a30f49" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-shared.c" role="src" />
<file md5sum="8b8c383174859350d1980a1d6b1d60d2" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-sleep.h" role="src" />
<file md5sum="3a7b540fcf988ee93f3808cafe018463" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket-private.h" role="src" />
<file md5sum="eba9dc9657335d2d23e45ebccaaa4133" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket.c" role="src" />
<file md5sum="f56c25a05eed1122c80eb58d13c6242f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-socket.h" role="src" />
<file md5sum="26fbdcf6cc22e129578c21920ac258ed" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl-private.h" role="src" />
<file md5sum="29ee3fd9cfdc24894cad74365a914576" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl.c" role="src" />
<file md5sum="09228dec89de7b0a91762153b12adbbd" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-ssl.h" role="src" />
<file md5sum="84f9561d10ce462699c4defc0895e714" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi-private.h" role="src" />
- <file md5sum="1108a51d8f76448fd2d573fa3c6e5d12" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi.c" role="src" />
+ <file md5sum="af93460c4a40ab6143ff504e663b3515" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-sspi.c" role="src" />
<file md5sum="f798bf3285af9db3d2dd28f5845e9cc4" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-buffered.c" role="src" />
<file md5sum="4410dd658fe5fb5bbc86d37b3118dcec" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-buffered.h" role="src" />
<file md5sum="01da77dc4841919f0daae5e630bcb951" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-file.c" role="src" />
<file md5sum="fa26aca0dfc3d40aa9b82be790dd901f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-file.h" role="src" />
<file md5sum="61fd008914c88228844c083c361b997b" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-download-private.h" role="src" />
<file md5sum="089d73e7795cdc7a236b1b4a48de8486" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-download.c" role="src" />
<file md5sum="07aa0af78f2111bc0042a34d4a6849c5" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-upload-private.h" role="src" />
<file md5sum="5e181a6bf915fa8c625d423820fd6272" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs-upload.c" role="src" />
<file md5sum="32d305a739ed8a25683202574262e081" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs.c" role="src" />
<file md5sum="b80ca98b508f7fc1587573f857673ba8" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-gridfs.h" role="src" />
<file md5sum="3ef5ca2e53cb3a7e69ec74a7ae2a3c18" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-private.h" role="src" />
<file md5sum="b814ded5e440b63e1d1bbef96b910559" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-socket.c" role="src" />
<file md5sum="fe32b6723e9dbb7c57914cc1c79a052b" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-socket.h" role="src" />
<file md5sum="a5f35b30b8b2a75e96c2d33208708341" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl-private.h" role="src" />
<file md5sum="b00593cd81edfca7e5d4a1c22c3576d8" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl.c" role="src" />
<file md5sum="253d7462744eaf0d2319223f2681dc92" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-libressl.h" role="src" />
<file md5sum="267637fbf5afb15b026354e55fa86bfd" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-bio-private.h" role="src" />
<file md5sum="d0efafe522aa92194b249772113499e7" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-bio.c" role="src" />
<file md5sum="03ed470a68d30e8e1b6081904eac680d" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl-private.h" role="src" />
- <file md5sum="975d890ff90dafff6c908946474599ce" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.c" role="src" />
+ <file md5sum="889ef998af7d463d95869187aa0c5e2f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.c" role="src" />
<file md5sum="cd14a482a1be5651469b7d4f98205a6f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-openssl.h" role="src" />
<file md5sum="9e8cfc9f1ac14f5eac9e62d9fc82e14c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-private.h" role="src" />
- <file md5sum="7a6f7f2d17b65310e5c07efc3f17fd6b" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel-private.h" role="src" />
- <file md5sum="6aa9f9171446edb8787ca5860a2093cf" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.c" role="src" />
+ <file md5sum="1424428cae7217f454542aa6f345c946" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel-private.h" role="src" />
+ <file md5sum="2c7ea3228969b18d7a84b82d58001444" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.c" role="src" />
<file md5sum="55b489bda4cf0a5f408a96f31f8a804f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-channel.h" role="src" />
<file md5sum="b6e8d98e4b49562daab8be79b71492a3" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport-private.h" role="src" />
<file md5sum="07c3d524da9a2dde68606098ea48a667" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport.c" role="src" />
<file md5sum="b8c9a63ae86e076f0b0c54dd9389fac9" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls-secure-transport.h" role="src" />
<file md5sum="bbfbe0c5e1f45fb268fff7ab7f0ac983" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls.c" role="src" />
<file md5sum="722f265383c8a9407ef629d9005f2da3" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream-tls.h" role="src" />
<file md5sum="236aac4441d2bb12263229d23f98bcd5" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream.c" role="src" />
<file md5sum="873f57b470e91ee636fcf70a0ae2e7e0" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-stream.h" role="src" />
<file md5sum="2e7e65c2c9c5a240bb1bd050526df3ba" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log-private.h" role="src" />
<file md5sum="3c25bdaa49a46d60f784d042226885ab" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log.c" role="src" />
<file md5sum="cfb69996468137fe8e3faf08e6dadd28" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-structured-log.h" role="src" />
<file md5sum="05cb64de5eb1a3ec7571bccea876cb0e" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-thread-private.h" role="src" />
<file md5sum="2a94a355dfaf49f21d2986fbd5dc5a7b" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-timeout-private.h" role="src" />
<file md5sum="aecfbaaf5f6dddd07969aa440eefcd47" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-timeout.c" role="src" />
<file md5sum="b4aaebe8eb5809c81cfc9774ce1c3d4c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-background-monitoring-private.h" role="src" />
<file md5sum="132f7caa7c370185c4ba6ad7efc790f9" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-background-monitoring.c" role="src" />
<file md5sum="ee920fc7e29932dd238a311929030075" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-apm-private.h" role="src" />
<file md5sum="274cf882fbc92e8b5632695127aba2df" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-apm.c" role="src" />
<file md5sum="639fad572cbfdaafb0c941a2efd96450" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description-private.h" role="src" />
<file md5sum="028ecf1a8f7f28a02f18e671c1df7f01" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description.c" role="src" />
<file md5sum="7de828c695845b4fd4616b7dfacdcac2" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-description.h" role="src" />
<file md5sum="b7a2dd3937dfa6041706e1a86986219b" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-private.h" role="src" />
<file md5sum="200f67d855f289b5d270af05a32cefce" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-scanner-private.h" role="src" />
<file md5sum="3d1e3ada140ecd03fcb14b9240432b3f" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology-scanner.c" role="src" />
<file md5sum="a56ae7c4875fba3c05da935523a9ca28" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-topology.c" role="src" />
<file md5sum="eedc18c9ebe7bd3233f1c050e76259e0" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-trace-private.h" role="src" />
<file md5sum="e89a6af65e9b898a8e6c3d2cfb646877" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-ts-pool-private.h" role="src" />
<file md5sum="a6161c75a2c276f77d486ea20774a079" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-ts-pool.c" role="src" />
<file md5sum="9afaad4064a213d7fd925e298cdeeb95" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri-private.h" role="src" />
<file md5sum="08ce37c5e6a3147bcfacea339f67c059" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri.c" role="src" />
<file md5sum="c2b88093f22907042c819abb9e640f9c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-uri.h" role="src" />
<file md5sum="af6cbf96ebf0d620ba06c2277351ca80" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-util-private.h" role="src" />
- <file md5sum="aeeb2b828f8e910db20720eb8aa16c73" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-util.c" role="src" />
+ <file md5sum="28631c43c7814e896075cabc9aaf5872" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-util.c" role="src" />
<file md5sum="e657811a048738b30192d910b428a4fa" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-version-functions.c" role="src" />
<file md5sum="9cb029f51540bb828acd37c896354a61" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-version-functions.h" role="src" />
- <file md5sum="a628bf62d50165a756857e1f20e1f114" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h" role="src" />
+ <file md5sum="0ec1b67971521a2b0975f0bd1dd680b6" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h" role="src" />
<file md5sum="079ea4d9b4f700a8a2b466c2588cf88c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-version.h.in" role="src" />
<file md5sum="0636a73c53ae222f4d22ee9e8f6eef63" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-command-private.h" role="src" />
<file md5sum="9a068de9a9d36373c625a1a49f303901" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-command.c" role="src" />
<file md5sum="b26445ae3cdb15aeb298b45715991d51" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern-private.h" role="src" />
<file md5sum="867c6602f3c2bd71dfcababea758863c" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern.c" role="src" />
<file md5sum="7cd8bb6b81287412cb796ba0b3caf4cf" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc-write-concern.h" role="src" />
<file md5sum="169b26bb131c074d07a2c813ccbd16bc" name="src/libmongoc/src/libmongoc/src/mongoc/mongoc.h" role="src" />
<file md5sum="f9d93f1ef72269fca5efc4e8e34ff6d1" name="src/libmongoc/src/libmongoc/src/mongoc/service-gcp.c" role="src" />
<file md5sum="3979506ddd513d8d7f792f07dff9baeb" name="src/libmongoc/src/libmongoc/src/mongoc/service-gcp.h" role="src" />
<file md5sum="f97452a858a2f22a168016bd68c05178" name="src/libmongoc/src/libmongoc/src/mongoc/uthash.h" role="src" />
<file md5sum="bdfaf1366fff5f890f7f83e3be58551f" name="src/libmongoc/src/libmongoc/src/mongoc/utlist.h" role="src" />
<file md5sum="a94c951db85f6f8620ea499dbbac41d9" name="src/libmongoc/src/utf8proc-2.8.0/utf8proc.c" role="src" />
<file md5sum="fc4a06fecad45716af5b1a5bd21ad689" name="src/libmongoc/src/utf8proc-2.8.0/utf8proc.h" role="src" />
<file md5sum="68c4131e3dbb7ca4facfae88b864f90e" name="src/libmongoc/src/utf8proc-2.8.0/utf8proc_data.c" role="src" />
<file md5sum="5c2d774b2ea5505093daa744580123fb" name="src/libmongoc/src/uthash/uthash-2.3.0/uthash.h" role="src" />
<file md5sum="09693351d290452327e081b62600c29d" name="src/libmongoc/src/uthash/uthash-2.3.0/utlist.h" role="src" />
<file md5sum="cea51e08d9b176c6bf8b5820169d4102" name="src/libmongoc/src/zlib-1.3.1/adler32.c" role="src" />
<file md5sum="b0b5688c87d809bb32d0923dbef28ee6" name="src/libmongoc/src/zlib-1.3.1/compress.c" role="src" />
<file md5sum="47f7b459ecb8e1cc0240d9ae8dda8e6e" name="src/libmongoc/src/zlib-1.3.1/crc32.c" role="src" />
<file md5sum="0ce0ac9394905aa53ed0a915620d9e5d" name="src/libmongoc/src/zlib-1.3.1/crc32.h" role="src" />
<file md5sum="66b59a69012d6f7b6367b9aaa12e6e61" name="src/libmongoc/src/zlib-1.3.1/deflate.c" role="src" />
<file md5sum="ee581a435edb549eafd3debd13405e10" name="src/libmongoc/src/zlib-1.3.1/deflate.h" role="src" />
<file md5sum="83049e4eaab1319f7ed94f15e7de5c4c" name="src/libmongoc/src/zlib-1.3.1/gzclose.c" role="src" />
<file md5sum="87cb921cd718b1d70b1b5e53531f7877" name="src/libmongoc/src/zlib-1.3.1/gzguts.h" role="src" />
<file md5sum="b4425988f5aa88d1a99e3fb4383ec204" name="src/libmongoc/src/zlib-1.3.1/gzlib.c" role="src" />
<file md5sum="1c8f8dfe08e58d6088a3b6c9bf4160bd" name="src/libmongoc/src/zlib-1.3.1/gzread.c" role="src" />
<file md5sum="fc122bb96017e7a19828e04a1b3dd564" name="src/libmongoc/src/zlib-1.3.1/gzwrite.c" role="src" />
<file md5sum="1b8a0a4ebb220896e2610d292b821ce0" name="src/libmongoc/src/zlib-1.3.1/infback.c" role="src" />
<file md5sum="1846b459fac461ded03f741f4953dc00" name="src/libmongoc/src/zlib-1.3.1/inffast.c" role="src" />
<file md5sum="6c907e4d7c65aff48183101b66a6133b" name="src/libmongoc/src/zlib-1.3.1/inffast.h" role="src" />
<file md5sum="7fa3e91804601b6618c915b76a8dc332" name="src/libmongoc/src/zlib-1.3.1/inffixed.h" role="src" />
<file md5sum="c300e231ec51960c347b95b07345f9d7" name="src/libmongoc/src/zlib-1.3.1/inflate.c" role="src" />
<file md5sum="819fb5556d0c65ba2577ee379b4641c0" name="src/libmongoc/src/zlib-1.3.1/inflate.h" role="src" />
<file md5sum="605a4056f9d01d94f0d53042af8f614b" name="src/libmongoc/src/zlib-1.3.1/inftrees.c" role="src" />
<file md5sum="9c8651504da6794ab1989db9a6ed082e" name="src/libmongoc/src/zlib-1.3.1/inftrees.h" role="src" />
<file md5sum="38161dcf9aaa70fb60bd9a2cb7fcc2b9" name="src/libmongoc/src/zlib-1.3.1/trees.c" role="src" />
<file md5sum="51fdcb3e2ccf60ca13c06920c89296a3" name="src/libmongoc/src/zlib-1.3.1/trees.h" role="src" />
<file md5sum="c76e0f7b934ca6695d453b1b51aa3112" name="src/libmongoc/src/zlib-1.3.1/uncompr.c" role="src" />
<file md5sum="055ee783ff2ea41a7e1be73baab1ee05" name="src/libmongoc/src/zlib-1.3.1/zconf.h" role="src" />
<file md5sum="055ee783ff2ea41a7e1be73baab1ee05" name="src/libmongoc/src/zlib-1.3.1/zconf.h.in" role="src" />
<file md5sum="fbab4a455b2970c36a44c9464c9625e4" name="src/libmongoc/src/zlib-1.3.1/zlib.h" role="src" />
<file md5sum="ef9f3b09085209c0193ab0686e1edd5b" name="src/libmongoc/src/zlib-1.3.1/zutil.c" role="src" />
<file md5sum="992eed746c2cd971e8d8af2b67941e1f" name="src/libmongoc/src/zlib-1.3.1/zutil.h" role="src" />
- <file md5sum="f8106a5f7d11bd05eb2357ac351f972d" name="src/libmongoc/VERSION_CURRENT" role="src" />
+ <file md5sum="f24ddc338d7d2d0cfc3667cc1191cf08" name="src/libmongoc/VERSION_CURRENT" role="src" />
<file md5sum="d51d8a5b18b24ceb8373aed513d74e63" name="src/libmongocrypt-compat/mongocrypt/mongocrypt.h" role="src" />
<file md5sum="5f1539690df7aa8a72c495ef456aec0c" name="src/libmongocrypt-compat/mongocrypt-export.h" role="src" />
<file md5sum="ffc011eff957abdff3b1b2dc3360c9ff" name="src/libmongocrypt/kms-message/src/kms_message/kms_azure_request.h" role="src" />
<file md5sum="178bd08ac73470d35b4986e388085161" name="src/libmongocrypt/kms-message/src/kms_message/kms_b64.h" role="src" />
<file md5sum="39ee9cf46b0439403a0f7c8073f583d5" name="src/libmongocrypt/kms-message/src/kms_message/kms_caller_identity_request.h" role="src" />
<file md5sum="8ebc97b8d9401873858ade801e9feb35" name="src/libmongocrypt/kms-message/src/kms_message/kms_decrypt_request.h" role="src" />
<file md5sum="d0fed9c2821dff65ae9dc6879ee881b6" name="src/libmongocrypt/kms-message/src/kms_message/kms_encrypt_request.h" role="src" />
<file md5sum="610a7df9b3f166d1173a890a19784b84" name="src/libmongocrypt/kms-message/src/kms_message/kms_gcp_request.h" role="src" />
<file md5sum="1522adee9e0ade465c313af38aa7aefe" name="src/libmongocrypt/kms-message/src/kms_message/kms_kmip_request.h" role="src" />
<file md5sum="98097ac94c63b8b4e3cabfd637a95315" name="src/libmongocrypt/kms-message/src/kms_message/kms_kmip_response.h" role="src" />
<file md5sum="0cd5c466ec235998c2a758540154ed75" name="src/libmongocrypt/kms-message/src/kms_message/kms_kmip_response_parser.h" role="src" />
<file md5sum="c1a35d0b49f3f920d16ffc84f4d8e373" name="src/libmongocrypt/kms-message/src/kms_message/kms_message.h" role="src" />
<file md5sum="cfef23bb3ac62cf8d3fbd8e08015f0c0" name="src/libmongocrypt/kms-message/src/kms_message/kms_message_defines.h" role="src" />
<file md5sum="5663ee4fe8bcca2dc395cd5be3617b44" name="src/libmongocrypt/kms-message/src/kms_message/kms_request.h" role="src" />
<file md5sum="ad85fcbd4c473f138818a4bd9e7f0815" name="src/libmongocrypt/kms-message/src/kms_message/kms_request_opt.h" role="src" />
<file md5sum="209083716262424fab84d670209755c8" name="src/libmongocrypt/kms-message/src/kms_message/kms_response.h" role="src" />
<file md5sum="6c5066d24cfbd1b4241fb854671503db" name="src/libmongocrypt/kms-message/src/kms_message/kms_response_parser.h" role="src" />
<file md5sum="e87486a63aa846e479f3bf1af7380038" name="src/libmongocrypt/kms-message/src/hexlify.c" role="src" />
<file md5sum="60664bb6d46c14b4eea28f15e6a082e5" name="src/libmongocrypt/kms-message/src/hexlify.h" role="src" />
<file md5sum="1e4af07511a196a91fd60a0e24a6e158" name="src/libmongocrypt/kms-message/src/kms_azure_request.c" role="src" />
<file md5sum="f464fe886184b4bdf04cc73eb17e24ef" name="src/libmongocrypt/kms-message/src/kms_b64.c" role="src" />
<file md5sum="29d5db2215a92ef6121c729f6c75ee00" name="src/libmongocrypt/kms-message/src/kms_caller_identity_request.c" role="src" />
<file md5sum="dc733fe6ab050e08cbd5689f1d2cba34" name="src/libmongocrypt/kms-message/src/kms_crypto.h" role="src" />
<file md5sum="1a549711223d3a9dc124951130fd0620" name="src/libmongocrypt/kms-message/src/kms_crypto_apple.c" role="src" />
<file md5sum="9876d4e3c0de2d0983ff5d68ff1555a4" name="src/libmongocrypt/kms-message/src/kms_crypto_libcrypto.c" role="src" />
<file md5sum="b8ecb9b69824d324900920d9b1a1db7d" name="src/libmongocrypt/kms-message/src/kms_crypto_none.c" role="src" />
<file md5sum="bbbf713e38e08b8046229dd15a657ab8" name="src/libmongocrypt/kms-message/src/kms_crypto_windows.c" role="src" />
<file md5sum="aba07d5c53233adfe5d8928b5ef92e06" name="src/libmongocrypt/kms-message/src/kms_decrypt_request.c" role="src" />
<file md5sum="65692a06262c9889f7ce0ae81928d390" name="src/libmongocrypt/kms-message/src/kms_encrypt_request.c" role="src" />
<file md5sum="d96caa47040b3d844be8720df0481477" name="src/libmongocrypt/kms-message/src/kms_endian_private.h" role="src" />
<file md5sum="7e00d14497770adaddad08e074ba80a6" name="src/libmongocrypt/kms-message/src/kms_gcp_request.c" role="src" />
<file md5sum="593d915279b88dcc90ccdc13562ade1d" name="src/libmongocrypt/kms-message/src/kms_kmip_item_type_private.h" role="src" />
<file md5sum="50d109ebf2a1a35f354ce4d77ad66327" name="src/libmongocrypt/kms-message/src/kms_kmip_reader_writer.c" role="src" />
<file md5sum="9a4ba49af76955cc7b5bf23ecca75ae3" name="src/libmongocrypt/kms-message/src/kms_kmip_reader_writer_private.h" role="src" />
<file md5sum="e26382512810f752e568e01ecf83d273" name="src/libmongocrypt/kms-message/src/kms_kmip_request.c" role="src" />
<file md5sum="ce4e975f079a2c7136909f2cc337f897" name="src/libmongocrypt/kms-message/src/kms_kmip_response.c" role="src" />
<file md5sum="ab89b217b929ac4340c9d22287185277" name="src/libmongocrypt/kms-message/src/kms_kmip_response_parser.c" role="src" />
<file md5sum="f64765a9c63171b8aa2c5fd7de738072" name="src/libmongocrypt/kms-message/src/kms_kmip_response_parser_private.h" role="src" />
<file md5sum="21898fd3923dfa059f2139a555643e14" name="src/libmongocrypt/kms-message/src/kms_kmip_result_reason_private.h" role="src" />
<file md5sum="8f826227b67ce2503aeb359cea5a3402" name="src/libmongocrypt/kms-message/src/kms_kmip_result_status_private.h" role="src" />
<file md5sum="e3cd5a25805733845177dc73abf6b11a" name="src/libmongocrypt/kms-message/src/kms_kmip_tag_type_private.h" role="src" />
<file md5sum="2a7f41d0b533d839384c449f05db13c5" name="src/libmongocrypt/kms-message/src/kms_kv_list.c" role="src" />
<file md5sum="69e374f65d9b21695d194e3495941f37" name="src/libmongocrypt/kms-message/src/kms_kv_list.h" role="src" />
<file md5sum="c2189649bce27380a9b07897662901e0" name="src/libmongocrypt/kms-message/src/kms_message.c" role="src" />
<file md5sum="e9c29bb4048e79de614284c77414888f" name="src/libmongocrypt/kms-message/src/kms_message_private.h" role="src" />
<file md5sum="f281a3def21d13d20c78836c3548315f" name="src/libmongocrypt/kms-message/src/kms_port.c" role="src" />
<file md5sum="6a768c38583f0f42f05e6da6d6f61dc4" name="src/libmongocrypt/kms-message/src/kms_port.h" role="src" />
<file md5sum="c627ca26536d393842c2e158dc2eb9c7" name="src/libmongocrypt/kms-message/src/kms_request.c" role="src" />
<file md5sum="fd15be17d87fa70a2bab1a0309b71b82" name="src/libmongocrypt/kms-message/src/kms_request_opt.c" role="src" />
<file md5sum="c7079940f8096ea3bce05d343de44481" name="src/libmongocrypt/kms-message/src/kms_request_opt_private.h" role="src" />
<file md5sum="1d8afba41df3771c71e52b89c006d1b7" name="src/libmongocrypt/kms-message/src/kms_request_str.c" role="src" />
<file md5sum="8943a55e4b590e6aaf6e7df818922699" name="src/libmongocrypt/kms-message/src/kms_request_str.h" role="src" />
<file md5sum="92b75e5851d90b8d28949ef18417c789" name="src/libmongocrypt/kms-message/src/kms_response.c" role="src" />
<file md5sum="f6ced5985dc5ce3009b2a2717268208d" name="src/libmongocrypt/kms-message/src/kms_response_parser.c" role="src" />
<file md5sum="dff15b5018efb6269a2a0269c5ddb798" name="src/libmongocrypt/kms-message/src/sort.c" role="src" />
<file md5sum="18f9bd055f6a60e7702603b6b8bf07d5" name="src/libmongocrypt/kms-message/src/sort.h" role="src" />
<file md5sum="3ac8424f141513ead5f00a87b617bcd0" name="src/libmongocrypt/src/crypto/cng.c" role="src" />
<file md5sum="d447760e0757d37460f33edd35f4e721" name="src/libmongocrypt/src/crypto/commoncrypto.c" role="src" />
<file md5sum="503c28153b757bdfeaa290578701d39e" name="src/libmongocrypt/src/crypto/libcrypto.c" role="src" />
<file md5sum="e9c081f95024633fa2d5ffbb2e04fe16" name="src/libmongocrypt/src/crypto/none.c" role="src" />
<file md5sum="3fa8b3ebbf333e3feae03c58dff8a7be" name="src/libmongocrypt/src/mlib/endian.h" role="src" />
<file md5sum="2d7dc78d3df39aea35816406beafa01b" name="src/libmongocrypt/src/mlib/error.h" role="src" />
<file md5sum="2b50002fef2f60e074dcc79571b12199" name="src/libmongocrypt/src/mlib/int128.h" role="src" />
<file md5sum="509cd04b1a2559cb64c2b6920b8cddb3" name="src/libmongocrypt/src/mlib/macros.h" role="src" />
<file md5sum="b3a524c0cbd9e0f0e0edfeae04974eea" name="src/libmongocrypt/src/mlib/path.h" role="src" />
<file md5sum="23c6292c47cf19bac82823c793b3e5c1" name="src/libmongocrypt/src/mlib/str.h" role="src" />
<file md5sum="e4fda5158a681c96467131a2ad1e659c" name="src/libmongocrypt/src/mlib/thread.h" role="src" />
<file md5sum="9dbd0440750ffc0ef2bb8135f0d75900" name="src/libmongocrypt/src/mlib/user-check.h" role="src" />
<file md5sum="9c0cd74b3c026396ed50fd40839c1a26" name="src/libmongocrypt/src/mlib/windows-lean.h" role="src" />
<file md5sum="5fb6f3b8415556ff5694c7c52207caee" name="src/libmongocrypt/src/os_posix/os_dll.c" role="src" />
<file md5sum="f7dec90cf8f0979d483f519bff304e57" name="src/libmongocrypt/src/os_posix/os_mutex.c" role="src" />
<file md5sum="75f49c83b3beb515ceaf9c17f5742c38" name="src/libmongocrypt/src/os_win/os_dll.c" role="src" />
<file md5sum="16e57d2c27c267fdadfb2659e309ed7b" name="src/libmongocrypt/src/os_win/os_mutex.c" role="src" />
<file md5sum="a1cd86aabe9892ba2ef25ffca2e39821" name="src/libmongocrypt/src/mc-array-private.h" role="src" />
<file md5sum="39d4da69cb8ece52d44305e7474cf15d" name="src/libmongocrypt/src/mc-array.c" role="src" />
<file md5sum="b62233f5e7e2571030c1cf2578076051" name="src/libmongocrypt/src/mc-check-conversions-private.h" role="src" />
<file md5sum="986c515e605f89c01df5a3eb22b57584" name="src/libmongocrypt/src/mc-cmp-private.h" role="src" />
<file md5sum="7545339a44fa4b897e1a0ac38b21e3fc" name="src/libmongocrypt/src/mc-dec128.h" role="src" />
<file md5sum="bfc605e8a8a44077009fb07adce3f969" name="src/libmongocrypt/src/mc-efc-private.h" role="src" />
<file md5sum="3c76e4d68c9b7878b837533e9b4da88e" name="src/libmongocrypt/src/mc-efc.c" role="src" />
<file md5sum="952a4d1f34d3f1e7a429915bce1c2bb8" name="src/libmongocrypt/src/mc-fle-blob-subtype-private.h" role="src" />
<file md5sum="f892d3c13f8125675b59d2af099d010d" name="src/libmongocrypt/src/mc-fle2-encryption-placeholder-private.h" role="src" />
<file md5sum="71255ae09ead17c19c6cf0c8e2f7dc9c" name="src/libmongocrypt/src/mc-fle2-encryption-placeholder.c" role="src" />
<file md5sum="4ab263795d16ba3e0195d4fa4308c37c" name="src/libmongocrypt/src/mc-fle2-find-equality-payload-private-v2.h" role="src" />
<file md5sum="bba6d97092fe0f578fd454913e39ccb0" name="src/libmongocrypt/src/mc-fle2-find-equality-payload-private.h" role="src" />
<file md5sum="7852db255d41eb0ce9009106cfd9871f" name="src/libmongocrypt/src/mc-fle2-find-equality-payload-v2.c" role="src" />
<file md5sum="63874aa04b837d7b2316563b81978e4b" name="src/libmongocrypt/src/mc-fle2-find-equality-payload.c" role="src" />
<file md5sum="7bfa9006afa0a701442f3b538dcc2d5b" name="src/libmongocrypt/src/mc-fle2-find-range-payload-private-v2.h" role="src" />
<file md5sum="4ffcfbc62cfcf694579165292c6e8db9" name="src/libmongocrypt/src/mc-fle2-find-range-payload-private.h" role="src" />
<file md5sum="c4653f64fce270ed8f7580eeff97a023" name="src/libmongocrypt/src/mc-fle2-find-range-payload-v2.c" role="src" />
<file md5sum="9e1c2f8c30bdba999f5f079b4bf19afb" name="src/libmongocrypt/src/mc-fle2-find-range-payload.c" role="src" />
<file md5sum="e8ea4957b65199dfce016892857e70fb" name="src/libmongocrypt/src/mc-fle2-insert-update-payload-private-v2.h" role="src" />
<file md5sum="2eed2b0f9058122b349f79a0c884bb55" name="src/libmongocrypt/src/mc-fle2-insert-update-payload-private.h" role="src" />
<file md5sum="6a74d21a100f5e31042210d88ceabc92" name="src/libmongocrypt/src/mc-fle2-insert-update-payload-v2.c" role="src" />
<file md5sum="93945c871a9cab8310e136c903c8d628" name="src/libmongocrypt/src/mc-fle2-insert-update-payload.c" role="src" />
<file md5sum="b1c632b398dfe6ef3b9adf2d540b6687" name="src/libmongocrypt/src/mc-fle2-payload-iev-private-v2.h" role="src" />
<file md5sum="ed21ac038797e0032a6a17789aa9fb39" name="src/libmongocrypt/src/mc-fle2-payload-iev-private.h" role="src" />
<file md5sum="401f6db24bc46e76347ceff88d161476" name="src/libmongocrypt/src/mc-fle2-payload-iev-v2.c" role="src" />
<file md5sum="8c380a4197a79a8312479d24c46640ba" name="src/libmongocrypt/src/mc-fle2-payload-iev.c" role="src" />
<file md5sum="a4f1cdd59a1e9039d280faf1ee2b51fd" name="src/libmongocrypt/src/mc-fle2-payload-uev-common-private.h" role="src" />
<file md5sum="59e8fdacb1cc6bbb2c73477a6f8b922e" name="src/libmongocrypt/src/mc-fle2-payload-uev-common.c" role="src" />
<file md5sum="aeb2f7a3056bfd2f0810908217edb06c" name="src/libmongocrypt/src/mc-fle2-payload-uev-private.h" role="src" />
<file md5sum="a1e92c0ffe810ae25690b94c24803ea3" name="src/libmongocrypt/src/mc-fle2-payload-uev-v2-private.h" role="src" />
<file md5sum="c78b82a72987ba22671a4d92e425297c" name="src/libmongocrypt/src/mc-fle2-payload-uev-v2.c" role="src" />
<file md5sum="1730e9904bf6bd2d003e363eae254cb5" name="src/libmongocrypt/src/mc-fle2-payload-uev.c" role="src" />
<file md5sum="ac581acbe89c603b79fd95465e023829" name="src/libmongocrypt/src/mc-fle2-range-operator-private.h" role="src" />
<file md5sum="6297b3fe9cf66b8a900294112c17f33f" name="src/libmongocrypt/src/mc-fle2-rfds-private.h" role="src" />
<file md5sum="61b35ec7ef5d278f1b70884fe6bea51e" name="src/libmongocrypt/src/mc-fle2-rfds.c" role="src" />
<file md5sum="7bc995ab73edc94db0f602431f27bcf8" name="src/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block-private.h" role="src" />
<file md5sum="3fc005993b34c47df1ec2e5a8a58a248" name="src/libmongocrypt/src/mc-fle2-tag-and-encrypted-metadata-block.c" role="src" />
<file md5sum="645b1dc64ab766c5e275a6f8d861a616" name="src/libmongocrypt/src/mc-optional-private.h" role="src" />
<file md5sum="49ad01503a6984f64d2e73f71ba28814" name="src/libmongocrypt/src/mc-range-edge-generation-private.h" role="src" />
<file md5sum="feede482b6b9da858ebd65fe499aadcd" name="src/libmongocrypt/src/mc-range-edge-generation.c" role="src" />
<file md5sum="bde78629625301e437d5b1dc1c61257f" name="src/libmongocrypt/src/mc-range-encoding-private.h" role="src" />
<file md5sum="685ed7482b27d38e93fb5d96bd5c3897" name="src/libmongocrypt/src/mc-range-encoding.c" role="src" />
<file md5sum="c0e6862f243b80efa7afa0808e27a845" name="src/libmongocrypt/src/mc-range-mincover-generator.template.h" role="src" />
<file md5sum="e263f1f21d4275391015bf9a9f2f4a19" name="src/libmongocrypt/src/mc-range-mincover-private.h" role="src" />
<file md5sum="86e5363c9b9ce5d6d8fdc764ac9240ab" name="src/libmongocrypt/src/mc-range-mincover.c" role="src" />
<file md5sum="ccb82065f1e4fdd484e825e10f7f05ea" name="src/libmongocrypt/src/mc-rangeopts-private.h" role="src" />
<file md5sum="0b5612a2434569bc14bdfa3e438f6861" name="src/libmongocrypt/src/mc-rangeopts.c" role="src" />
<file md5sum="0d859d06f094d6212fc6d55b4cd15bed" name="src/libmongocrypt/src/mc-reader-private.h" role="src" />
<file md5sum="89739eaf5dcf208db01120e79dc774eb" name="src/libmongocrypt/src/mc-reader.c" role="src" />
<file md5sum="222a416539760c303676e7a3d9f3f2ba" name="src/libmongocrypt/src/mc-tokens-private.h" role="src" />
<file md5sum="948a9e37d4c4fb75be345b9c19604011" name="src/libmongocrypt/src/mc-tokens.c" role="src" />
<file md5sum="b3008b1750223382085b66517dc3a908" name="src/libmongocrypt/src/mc-writer-private.h" role="src" />
<file md5sum="b5afdc80b0568f83f84aa6afbf0cf0f6" name="src/libmongocrypt/src/mc-writer.c" role="src" />
<file md5sum="960d3838ab19c75af6b2fe321a9fe171" name="src/libmongocrypt/src/mongo_crypt-v1.h" role="src" />
<file md5sum="f591b24307fd3273754998de7740f662" name="src/libmongocrypt/src/mongocrypt-binary-private.h" role="src" />
<file md5sum="ea8b4942e64aef9260535684b298a10a" name="src/libmongocrypt/src/mongocrypt-binary.c" role="src" />
<file md5sum="25f20f04cb13cac9e154d80651a5a8b5" name="src/libmongocrypt/src/mongocrypt-buffer-private.h" role="src" />
<file md5sum="869744078bc345a9a4c88a9d13e3af45" name="src/libmongocrypt/src/mongocrypt-buffer.c" role="src" />
<file md5sum="3ed17f811203aca389e0da69f67a902a" name="src/libmongocrypt/src/mongocrypt-cache-collinfo-private.h" role="src" />
<file md5sum="ed637b780aa383cd0c8433b01824e6d2" name="src/libmongocrypt/src/mongocrypt-cache-collinfo.c" role="src" />
<file md5sum="1602b032675f483d5010f7cf40698b31" name="src/libmongocrypt/src/mongocrypt-cache-key-private.h" role="src" />
<file md5sum="d24a251eafb3bbeb884895ddbe64d18a" name="src/libmongocrypt/src/mongocrypt-cache-key.c" role="src" />
<file md5sum="50d3371a8ae6f67dae7d6e64aedc0121" name="src/libmongocrypt/src/mongocrypt-cache-oauth-private.h" role="src" />
<file md5sum="8548a36fe54506d221b565040c08bf19" name="src/libmongocrypt/src/mongocrypt-cache-oauth.c" role="src" />
<file md5sum="b0d6745d6fcc03206c56d522302d0683" name="src/libmongocrypt/src/mongocrypt-cache-private.h" role="src" />
<file md5sum="e7f7da5a397b35b8a31d5caa4bc62d01" name="src/libmongocrypt/src/mongocrypt-cache.c" role="src" />
<file md5sum="18515fe718cbeb4f8167185bffc8e97c" name="src/libmongocrypt/src/mongocrypt-ciphertext-private.h" role="src" />
<file md5sum="251344561088eb6f585e869e7c19217a" name="src/libmongocrypt/src/mongocrypt-ciphertext.c" role="src" />
<file md5sum="01e44ce4e1c4c192a4a32d0a68e37eed" name="src/libmongocrypt/src/mongocrypt-compat.h" role="src" />
<file md5sum="81ee84e6f805f20cd141b96587b06757" name="src/libmongocrypt/src/mongocrypt-config.h" role="src" />
<file md5sum="da03665c049ef6d8f82f588830c73532" name="src/libmongocrypt/src/mongocrypt-config.h.in" role="src" />
<file md5sum="ba97ca66fe231ec9b2b9dd9091b6228e" name="src/libmongocrypt/src/mongocrypt-crypto-private.h" role="src" />
<file md5sum="cef3d9e9a6e56347a99f7e45467d02f0" name="src/libmongocrypt/src/mongocrypt-crypto.c" role="src" />
<file md5sum="329a95c5011d4e5027dcb2a56d66e0f2" name="src/libmongocrypt/src/mongocrypt-ctx-datakey.c" role="src" />
<file md5sum="7aa9d553966c4ab7707aec2cc8ac3e26" name="src/libmongocrypt/src/mongocrypt-ctx-decrypt.c" role="src" />
<file md5sum="a98133084b0a59caebb1774b4babd553" name="src/libmongocrypt/src/mongocrypt-ctx-encrypt.c" role="src" />
<file md5sum="f6d274c2fe86ca720b53f27b8dba0758" name="src/libmongocrypt/src/mongocrypt-ctx-private.h" role="src" />
<file md5sum="b77c3c5b316cef820e72b462cf661d2d" name="src/libmongocrypt/src/mongocrypt-ctx-rewrap-many-datakey.c" role="src" />
<file md5sum="f2891728ccb0add1abc394c33b3c0d66" name="src/libmongocrypt/src/mongocrypt-ctx.c" role="src" />
<file md5sum="124c5911979bad462bebf9669426a5bd" name="src/libmongocrypt/src/mongocrypt-dll-private.h" role="src" />
<file md5sum="ebc53bfc73c08bb99e7c203567013f63" name="src/libmongocrypt/src/mongocrypt-endian-private.h" role="src" />
<file md5sum="326e58b8431b39a0eee4c6c599ce863f" name="src/libmongocrypt/src/mongocrypt-endpoint-private.h" role="src" />
<file md5sum="f68df389f00fb2715fdda175e2ac5d52" name="src/libmongocrypt/src/mongocrypt-endpoint.c" role="src" />
<file md5sum="5f440c62aa1caa82bf9181964fc8916a" name="src/libmongocrypt/src/mongocrypt-kek-private.h" role="src" />
<file md5sum="52e091933de3af3af82fe5b1f032048a" name="src/libmongocrypt/src/mongocrypt-kek.c" role="src" />
<file md5sum="93565598f5d3e70a66318439e2c5fe28" name="src/libmongocrypt/src/mongocrypt-key-broker-private.h" role="src" />
<file md5sum="89225668982c18272674abc1c4790a84" name="src/libmongocrypt/src/mongocrypt-key-broker.c" role="src" />
<file md5sum="afcadb2ebae5f404204a4163c8244ce6" name="src/libmongocrypt/src/mongocrypt-key-private.h" role="src" />
<file md5sum="2275eecb6b238d848fbb8372763df956" name="src/libmongocrypt/src/mongocrypt-key.c" role="src" />
<file md5sum="0ed3c1c62b00f3ef4548365dd496c8ec" name="src/libmongocrypt/src/mongocrypt-kms-ctx-private.h" role="src" />
<file md5sum="db9b2f0317391e66209adfd68807e5e9" name="src/libmongocrypt/src/mongocrypt-kms-ctx.c" role="src" />
<file md5sum="801676eb46bb4cd160bc677e208fd793" name="src/libmongocrypt/src/mongocrypt-log-private.h" role="src" />
<file md5sum="beb7e0b69f363166fe5a123f21098756" name="src/libmongocrypt/src/mongocrypt-log.c" role="src" />
<file md5sum="55dde9934b59991f68777ffef054745d" name="src/libmongocrypt/src/mongocrypt-marking-private.h" role="src" />
<file md5sum="4c39d0e2fd0f19f070882b6d03fec43c" name="src/libmongocrypt/src/mongocrypt-marking.c" role="src" />
<file md5sum="6df239ff1383acbb7fb6946cb47758bf" name="src/libmongocrypt/src/mongocrypt-mutex-private.h" role="src" />
<file md5sum="9b75c0aebae053a740893949c56e9b95" name="src/libmongocrypt/src/mongocrypt-opts-private.h" role="src" />
<file md5sum="be482757adbd9b602cf69097027f2c70" name="src/libmongocrypt/src/mongocrypt-opts.c" role="src" />
<file md5sum="310aa37c47dbf25c486026684bf05c3b" name="src/libmongocrypt/src/mongocrypt-private.h" role="src" />
<file md5sum="86b851d13a6d51e436c09b961be8dee2" name="src/libmongocrypt/src/mongocrypt-status-private.h" role="src" />
<file md5sum="a6554580d43531969e70dd01d4002f13" name="src/libmongocrypt/src/mongocrypt-status.c" role="src" />
<file md5sum="b8fc7157461901e9db6c6445805134cc" name="src/libmongocrypt/src/mongocrypt-traverse-util-private.h" role="src" />
<file md5sum="50143472bdcff54e56596770c1975c79" name="src/libmongocrypt/src/mongocrypt-traverse-util.c" role="src" />
<file md5sum="fcb08a36335d6d88c3dfbe23060c0142" name="src/libmongocrypt/src/mongocrypt-util-private.h" role="src" />
<file md5sum="3d87bc0de03c09303bb9c2af6b6b8271" name="src/libmongocrypt/src/mongocrypt-util.c" role="src" />
<file md5sum="334915b96f6fb3c14978b3005a814351" name="src/libmongocrypt/src/mongocrypt.c" role="src" />
<file md5sum="8581e2f173c20c8f3fd7dbb700464375" name="src/libmongocrypt/src/mongocrypt.h" role="src" />
<file md5sum="bac2df5bff521bdd5b43dae786e9918e" name="src/LIBMONGOCRYPT_VERSION_CURRENT" role="src" />
- <file md5sum="f8106a5f7d11bd05eb2357ac351f972d" name="src/LIBMONGOC_VERSION_CURRENT" role="src" />
+ <file md5sum="f24ddc338d7d2d0cfc3667cc1191cf08" name="src/LIBMONGOC_VERSION_CURRENT" role="src" />
<file md5sum="a1957be414805c545d827294d4f866ff" name="src/functions_arginfo.h" role="src" />
<file md5sum="4eafb7a12b659e48105c696f406161b1" name="src/phongo_apm.c" role="src" />
<file md5sum="77a9ea21f15bc0112af0540372bbb10f" name="src/phongo_apm.h" role="src" />
<file md5sum="c1ebaa75872f988de4747b27b1214704" name="src/phongo_atomic.c" role="src" />
<file md5sum="9b7e196a0e4438ee60abaa2f65b5d7bf" name="src/phongo_atomic.h" role="src" />
<file md5sum="531019c1d991456672c8ebf012e50622" name="src/phongo_bson.c" role="src" />
<file md5sum="58735818a5df1a9d533549bedd182865" name="src/phongo_bson.h" role="src" />
<file md5sum="ce3933ca5e62a0ec42917c088d65d011" name="src/phongo_bson_encode.c" role="src" />
<file md5sum="0c2d200db86273153ece963fec599195" name="src/phongo_bson_encode.h" role="src" />
<file md5sum="a170540e77878d7c7b19932f093282f3" name="src/phongo_classes.h" role="src" />
<file md5sum="87ed551ef80304f0ff9cc12c5eac66cc" name="src/phongo_client.c" role="src" />
<file md5sum="02a717bdeddb957cd16505a29eb8285c" name="src/phongo_client.h" role="src" />
<file md5sum="e1359a0456b33faa978f9275928b3ae4" name="src/phongo_compat.c" role="src" />
<file md5sum="ec9df0b365335f4cc3a9c6bbe2bfffbe" name="src/phongo_compat.h" role="src" />
<file md5sum="73b4ddb727956cf6ad56f2d019bff0eb" name="src/phongo_error.c" role="src" />
<file md5sum="136d20717f05027d7b90dd327460cbaf" name="src/phongo_error.h" role="src" />
<file md5sum="3547a3c2b7999715488add37390e5211" name="src/phongo_execute.c" role="src" />
<file md5sum="10fbaafb5ec80592feb6d0266a1890e2" name="src/phongo_execute.h" role="src" />
<file md5sum="59e465a147d74ba4b28ffecdfc85c1bf" name="src/phongo_ini.c" role="src" />
<file md5sum="0022955075b74e8480a29968a9b1fc2c" name="src/phongo_ini.h" role="src" />
<file md5sum="a559479c4a35c6b24bc7aaf0762a77e6" name="src/phongo_log.c" role="src" />
<file md5sum="b152a41e24c169b154c145d88fec7a53" name="src/phongo_log.h" role="src" />
<file md5sum="3216635a72a48218fc1d04e92900ab84" name="src/phongo_structs.h" role="src" />
<file md5sum="c76fca73145f76807ddb7e9a0cbcbdde" name="src/phongo_util.c" role="src" />
<file md5sum="0424534cc970f347aad0841098499620" name="src/phongo_util.h" role="src" />
<file md5sum="ca2c5031647b050893a81fef62317af2" name="tests/apm/bug0950-001.phpt" role="test" />
<file md5sum="ac49ecbadec528e0c4c779ae371ec6e0" name="tests/apm/bug0950-002.phpt" role="test" />
<file md5sum="bb48e35916a6fe95853670998bcc25f2" name="tests/apm/commandFailedEvent-001.phpt" role="test" />
<file md5sum="7c11442ee372181292e6ac8bb41feb50" name="tests/apm/commandFailedEvent-002.phpt" role="test" />
<file md5sum="53fedf7ed330a9df8129b0733e7d1534" name="tests/apm/commandFailedEvent-debug-001.phpt" role="test" />
<file md5sum="e2f6a6cd638c2d7441fedb540d5e699d" name="tests/apm/commandFailedEvent-getReply-001.phpt" role="test" />
<file md5sum="33f0fd0d4fe74e1928696adaaf8c060a" name="tests/apm/commandFailedEvent-getServerConnectionId-001.phpt" role="test" />
<file md5sum="9ff8cd76bcb5c67f2b25b6a082f5f2ac" name="tests/apm/commandFailedEvent-getServiceId-001.phpt" role="test" />
<file md5sum="62915505a26e5a39f65aed8e39cb41b4" name="tests/apm/commandFailedEvent-getServiceId-002.phpt" role="test" />
<file md5sum="c3ae1f1178a51d5b12cc486dd7ed162a" name="tests/apm/commandStartedEvent-001.phpt" role="test" />
<file md5sum="5364476cc8ad732326b85fa204050d25" name="tests/apm/commandStartedEvent-002.phpt" role="test" />
<file md5sum="f370f6503116bad8a548534a57f71e5e" name="tests/apm/commandStartedEvent-debug-001.phpt" role="test" />
<file md5sum="e69771c40ac38f7812615f309c93f72e" name="tests/apm/commandStartedEvent-getServerConnectionId-001.phpt" role="test" />
<file md5sum="6fe9970408f2adece14e9e5bd786401e" name="tests/apm/commandStartedEvent-getServiceId-001.phpt" role="test" />
<file md5sum="a49d45e514f2d748d9b1376e8cd73841" name="tests/apm/commandStartedEvent-getServiceId-002.phpt" role="test" />
<file md5sum="d7907173cc111b57a5960053a62f772b" name="tests/apm/commandSucceededEvent-001.phpt" role="test" />
<file md5sum="0a670be3be4d34c598fa51338dfcb7dd" name="tests/apm/commandSucceededEvent-002.phpt" role="test" />
<file md5sum="bc45c0396de330eed3511ec2d08dfd76" name="tests/apm/commandSucceededEvent-debug-001.phpt" role="test" />
<file md5sum="d5a11c30f4915632a4f15f1686c5fd8b" name="tests/apm/commandSucceededEvent-getServerConnectionId-001.phpt" role="test" />
<file md5sum="55163bebca760d63aa6f0c05036ea3db" name="tests/apm/commandSucceededEvent-getServiceId-001.phpt" role="test" />
<file md5sum="5c1cb73ab65177f29e00f53fabdf2fbf" name="tests/apm/commandSucceededEvent-getServiceId-002.phpt" role="test" />
<file md5sum="1189a9a0e147d5d442c9662f5ceb94e2" name="tests/apm/monitoring-addSubscriber-001.phpt" role="test" />
<file md5sum="ffa34b0faa26b4b3ff134e3e40782292" name="tests/apm/monitoring-addSubscriber-002.phpt" role="test" />
<file md5sum="8a925264177b435bcfeb045b1099eb39" name="tests/apm/monitoring-addSubscriber-003.phpt" role="test" />
<file md5sum="ca36943639ec50e6ea768309430f1bbf" name="tests/apm/monitoring-addSubscriber-004.phpt" role="test" />
<file md5sum="7b647f5ac8558eab19820924abd036cf" name="tests/apm/monitoring-removeSubscriber-001.phpt" role="test" />
<file md5sum="42675a6c7a5f95427c1e8cf2314ffba9" name="tests/apm/monitoring-removeSubscriber-002.phpt" role="test" />
<file md5sum="07c3b289663daff6376f002451bca98e" name="tests/apm/serverChangedEvent-001.phpt" role="test" />
<file md5sum="d46e79a12534439607c3d3270fb1a68c" name="tests/apm/serverClosedEvent-001.phpt" role="test" />
<file md5sum="95c25bd6ebf4e30e0a7812a52ff9c117" name="tests/apm/serverHeartbeatFailedEvent-001.phpt" role="test" />
<file md5sum="e62e516ba55c573f9c09aae111accbd6" name="tests/apm/serverHeartbeatStartedEvent-001.phpt" role="test" />
<file md5sum="39d485cd2bdf496a5a08aed6a900172f" name="tests/apm/serverHeartbeatSucceededEvent-001.phpt" role="test" />
<file md5sum="721afca55baa494a4a8468bdd1a3ed5c" name="tests/apm/serverOpeningEvent-001.phpt" role="test" />
<file md5sum="023bcab9d010aed805d54fdf0ce14e30" name="tests/apm/topologyChangedEvent-001.phpt" role="test" />
<file md5sum="69460132730ce989791caa05d154fdba" name="tests/apm/topologyClosedEvent-001.phpt" role="test" />
<file md5sum="01acee5f4f25d4234f03b56b373b7c8c" name="tests/apm/topologyOpeningEvent-001.phpt" role="test" />
<file md5sum="472f648d2e134b568d192ce624ddd0f1" name="tests/apm/topologyOpeningEvent-002.phpt" role="test" />
<file md5sum="1e7547138f963da568f5687a0edb94b4" name="tests/bson-corpus/array-decodeError-001.phpt" role="test" />
<file md5sum="5426a70f18c5d6dedf360886d786e07e" name="tests/bson-corpus/array-decodeError-002.phpt" role="test" />
<file md5sum="94ce1ba0bbdca27d624f64accc8dfc80" name="tests/bson-corpus/array-decodeError-003.phpt" role="test" />
<file md5sum="1515bf0afbb8fb899ae0aa1003f3c03c" name="tests/bson-corpus/array-valid-001.phpt" role="test" />
<file md5sum="94713da546cc4b0ad2c5cba33ff15907" name="tests/bson-corpus/array-valid-002.phpt" role="test" />
<file md5sum="c89ac3a6155f2b72626e6a5c205d4098" name="tests/bson-corpus/array-valid-003.phpt" role="test" />
<file md5sum="6d78d4964d126879f5eb75048f2dc7e9" name="tests/bson-corpus/array-valid-004.phpt" role="test" />
<file md5sum="b4b65379ae59e50709fe334933ce827a" name="tests/bson-corpus/array-valid-005.phpt" role="test" />
<file md5sum="c6740d03f2e4df8ca6bce1ce96356947" name="tests/bson-corpus/binary-decodeError-001.phpt" role="test" />
<file md5sum="005748a69471fff3c615059a796f1bb5" name="tests/bson-corpus/binary-decodeError-002.phpt" role="test" />
<file md5sum="6af3e997274e1487bf47fe549cc747d0" name="tests/bson-corpus/binary-decodeError-003.phpt" role="test" />
<file md5sum="ae343c29c288680f7a78b6b19e10bc98" name="tests/bson-corpus/binary-decodeError-004.phpt" role="test" />
<file md5sum="e76dff48121c30014e28b5589618cd83" name="tests/bson-corpus/binary-decodeError-005.phpt" role="test" />
<file md5sum="a238dc302011b312847010bd3eef6116" name="tests/bson-corpus/binary-parseError-001.phpt" role="test" />
<file md5sum="c686536586347ac08936b107999f65db" name="tests/bson-corpus/binary-parseError-002.phpt" role="test" />
<file md5sum="47e957a7dc6f9a1e3d1bccfbcaacdc82" name="tests/bson-corpus/binary-parseError-003.phpt" role="test" />
<file md5sum="e800c64afd4f643ef485d98c35c1e286" name="tests/bson-corpus/binary-parseError-004.phpt" role="test" />
<file md5sum="2cfcb78f1005fdf3d121331ab70ddf80" name="tests/bson-corpus/binary-parseError-005.phpt" role="test" />
<file md5sum="efd91b6800250aa842ad35ab055194a9" name="tests/bson-corpus/binary-valid-001.phpt" role="test" />
<file md5sum="f05301b9f2ceeadd899f01520d7cf57b" name="tests/bson-corpus/binary-valid-002.phpt" role="test" />
<file md5sum="17c4b7a7582494b8a01b6ef6dcf2c7e9" name="tests/bson-corpus/binary-valid-003.phpt" role="test" />
<file md5sum="095d95705c3fcd2c93e3f32cd402f99c" name="tests/bson-corpus/binary-valid-004.phpt" role="test" />
<file md5sum="6313de7f3497c6d7bc774ceef53dbb00" name="tests/bson-corpus/binary-valid-005.phpt" role="test" />
<file md5sum="5507760425736ed66db5aadb515f02a9" name="tests/bson-corpus/binary-valid-006.phpt" role="test" />
<file md5sum="956055e286b2f04ba96cbbb53fb59e3d" name="tests/bson-corpus/binary-valid-007.phpt" role="test" />
<file md5sum="e20b97d171092a19385cd7700dcf92bc" name="tests/bson-corpus/binary-valid-008.phpt" role="test" />
<file md5sum="71517280a84a8c9fa3cc9a5a7637e1d9" name="tests/bson-corpus/binary-valid-009.phpt" role="test" />
<file md5sum="c8f3356a246e622f655723dcf0f315c0" name="tests/bson-corpus/binary-valid-010.phpt" role="test" />
<file md5sum="8ecfc5fb863d8eeaf4370e15709f1092" name="tests/bson-corpus/binary-valid-011.phpt" role="test" />
<file md5sum="c98229cfcc5e6c58e43e757b55c9d945" name="tests/bson-corpus/binary-valid-012.phpt" role="test" />
<file md5sum="9fd3da4e9e0297c02cdbc06b86b76933" name="tests/bson-corpus/binary-valid-013.phpt" role="test" />
<file md5sum="73ce7566e825c94c5ab3368a0967f5cc" name="tests/bson-corpus/binary-valid-014.phpt" role="test" />
<file md5sum="c948186b30cbe86bc358e0b2522b3872" name="tests/bson-corpus/binary-valid-015.phpt" role="test" />
<file md5sum="b2c934efd08f03f98e7de8c39020352e" name="tests/bson-corpus/binary-valid-016.phpt" role="test" />
<file md5sum="b21bc9c15cc9ab5ccdb840cb8edf06bd" name="tests/bson-corpus/binary-valid-017.phpt" role="test" />
<file md5sum="14e65999d1cea936a54a7f20e76df54b" name="tests/bson-corpus/binary-valid-018.phpt" role="test" />
<file md5sum="ad65f2500b977509011c6ebe40ce30ad" name="tests/bson-corpus/binary-valid-019.phpt" role="test" />
<file md5sum="fe394b03f560bf2a5b58d88e3a8c389a" name="tests/bson-corpus/binary-valid-020.phpt" role="test" />
<file md5sum="f7c1dde29606ef110f13e34f610e76df" name="tests/bson-corpus/boolean-decodeError-001.phpt" role="test" />
<file md5sum="c3c77686c5476d5d0b06ecc620770169" name="tests/bson-corpus/boolean-decodeError-002.phpt" role="test" />
<file md5sum="e27fe7f82660276055c9bda3023d7206" name="tests/bson-corpus/boolean-valid-001.phpt" role="test" />
<file md5sum="fee6342396713809bd4119f32a2ec1bb" name="tests/bson-corpus/boolean-valid-002.phpt" role="test" />
<file md5sum="66fc55fd78507155f116963765706025" name="tests/bson-corpus/code-decodeError-001.phpt" role="test" />
<file md5sum="4b42b166494cf7722087c9b704de2327" name="tests/bson-corpus/code-decodeError-002.phpt" role="test" />
<file md5sum="c2aae4bc1673543cac2977be2b716da5" name="tests/bson-corpus/code-decodeError-003.phpt" role="test" />
<file md5sum="fb5c5a2fe0fa0f8416d6155a5c0d5866" name="tests/bson-corpus/code-decodeError-004.phpt" role="test" />
<file md5sum="2a8516adaa1aed9f93090429d140f2c9" name="tests/bson-corpus/code-decodeError-005.phpt" role="test" />
<file md5sum="bfd5a7ab4c439fd2eef09d16c5ff97bc" name="tests/bson-corpus/code-decodeError-006.phpt" role="test" />
<file md5sum="bfca5c3fa92d0b87cc429608edd93691" name="tests/bson-corpus/code-decodeError-007.phpt" role="test" />
<file md5sum="b778c6694f9d9238f6fa02583fa165cc" name="tests/bson-corpus/code-valid-001.phpt" role="test" />
<file md5sum="7c3b9ec3c058986362c58b4d75e85da1" name="tests/bson-corpus/code-valid-002.phpt" role="test" />
<file md5sum="fd4f5298eeb3920a7a5831ce94302f51" name="tests/bson-corpus/code-valid-003.phpt" role="test" />
<file md5sum="c3fb49392753b9251ccb360620607ff9" name="tests/bson-corpus/code-valid-004.phpt" role="test" />
<file md5sum="468b06e11101fc3080451e51fc825293" name="tests/bson-corpus/code-valid-005.phpt" role="test" />
<file md5sum="7f8143691829c5407128c7aafba78999" name="tests/bson-corpus/code-valid-006.phpt" role="test" />
<file md5sum="0ad065507bcba520c0a60be5e14114d7" name="tests/bson-corpus/code_w_scope-decodeError-001.phpt" role="test" />
<file md5sum="d8edbb1447d6af8e4644b2402d5200b4" name="tests/bson-corpus/code_w_scope-decodeError-002.phpt" role="test" />
<file md5sum="7a0e9c077a272f3fc106fdcc2a6c0716" name="tests/bson-corpus/code_w_scope-decodeError-003.phpt" role="test" />
<file md5sum="7e6f4e930e693674c9d291136c496852" name="tests/bson-corpus/code_w_scope-decodeError-004.phpt" role="test" />
<file md5sum="7f8fd5823fffa3aa0b43196a6e6b5d04" name="tests/bson-corpus/code_w_scope-decodeError-005.phpt" role="test" />
<file md5sum="01b0ef5733e1728a37525f96931c46e8" name="tests/bson-corpus/code_w_scope-decodeError-006.phpt" role="test" />
<file md5sum="75b1cae6e2908b6862dadfbc264450ca" name="tests/bson-corpus/code_w_scope-decodeError-007.phpt" role="test" />
<file md5sum="8e7c0248aebcfb37ca2d6face6401ffd" name="tests/bson-corpus/code_w_scope-decodeError-008.phpt" role="test" />
<file md5sum="e8994a7797067b259ef0e127317bf95f" name="tests/bson-corpus/code_w_scope-decodeError-009.phpt" role="test" />
<file md5sum="6b2051d0c3ce1ffbec50d863b085d6ad" name="tests/bson-corpus/code_w_scope-decodeError-010.phpt" role="test" />
<file md5sum="bf6c89bcd6c1a0761ad890fa1069eac3" name="tests/bson-corpus/code_w_scope-decodeError-011.phpt" role="test" />
<file md5sum="ec5b9794dde840d35e5e30413222a96a" name="tests/bson-corpus/code_w_scope-valid-001.phpt" role="test" />
<file md5sum="fd38a74bdfbfd41c988e950cc2c80174" name="tests/bson-corpus/code_w_scope-valid-002.phpt" role="test" />
<file md5sum="52173c39f2b38f889d12919b2280e585" name="tests/bson-corpus/code_w_scope-valid-003.phpt" role="test" />
<file md5sum="b354d2dc291e9adfb5949d60986960f0" name="tests/bson-corpus/code_w_scope-valid-004.phpt" role="test" />
<file md5sum="5eb3a24e62657faf114c0dd51e74b431" name="tests/bson-corpus/code_w_scope-valid-005.phpt" role="test" />
<file md5sum="61f880b192f11a149333ad2ddc24fb00" name="tests/bson-corpus/datetime-decodeError-001.phpt" role="test" />
<file md5sum="2b7ed01e3b5f89e207ee4f9f84d3d201" name="tests/bson-corpus/datetime-valid-001.phpt" role="test" />
<file md5sum="4f7402483e75eddda91656b3e1089363" name="tests/bson-corpus/datetime-valid-002.phpt" role="test" />
<file md5sum="15436d363a15f1cc3768ec17e5dd8a18" name="tests/bson-corpus/datetime-valid-003.phpt" role="test" />
<file md5sum="b0d062872fd81150d30a3900edb3043d" name="tests/bson-corpus/datetime-valid-004.phpt" role="test" />
<file md5sum="faed11f7d7873786e1b4158ab5fbaf4e" name="tests/bson-corpus/datetime-valid-005.phpt" role="test" />
<file md5sum="352bd6681e20ced0eb35ad46ea2afee1" name="tests/bson-corpus/dbpointer-decodeError-001.phpt" role="test" />
<file md5sum="7c673df8eec3b8d26f34315bf1799a66" name="tests/bson-corpus/dbpointer-decodeError-002.phpt" role="test" />
<file md5sum="2115b428fa12deed08f24d0e9cca3f34" name="tests/bson-corpus/dbpointer-decodeError-003.phpt" role="test" />
<file md5sum="86731c9d25cfc5e9526bd5715f8c7ff9" name="tests/bson-corpus/dbpointer-decodeError-004.phpt" role="test" />
<file md5sum="308ae8099beef0ea8c973ae2be4e6d49" name="tests/bson-corpus/dbpointer-decodeError-005.phpt" role="test" />
<file md5sum="47eb0f08a60f8ae116700af0dc9218a2" name="tests/bson-corpus/dbpointer-decodeError-006.phpt" role="test" />
<file md5sum="6b8ece946c770e0b92b452145e364ade" name="tests/bson-corpus/dbpointer-valid-001.phpt" role="test" />
<file md5sum="c8d618816f6ecff2a2c873c2073919d9" name="tests/bson-corpus/dbpointer-valid-002.phpt" role="test" />
<file md5sum="27e9db76304e6e6163ae029b52eda9b1" name="tests/bson-corpus/dbpointer-valid-003.phpt" role="test" />
<file md5sum="055660660c1e52ffbd286825613fa746" name="tests/bson-corpus/dbref-valid-001.phpt" role="test" />
<file md5sum="fbf589444675719813667ffd8817c2aa" name="tests/bson-corpus/dbref-valid-002.phpt" role="test" />
<file md5sum="188a5097a4501a21b93862cc915fe725" name="tests/bson-corpus/dbref-valid-003.phpt" role="test" />
<file md5sum="d5400b91d2472c88678d27ee5efbf686" name="tests/bson-corpus/dbref-valid-004.phpt" role="test" />
<file md5sum="437550534c1f51674f04daebedddd451" name="tests/bson-corpus/dbref-valid-005.phpt" role="test" />
<file md5sum="a2f398b3ade4744d3085f7457641f3ae" name="tests/bson-corpus/dbref-valid-006.phpt" role="test" />
<file md5sum="93c7f12a9cced899e46d2faddd793873" name="tests/bson-corpus/dbref-valid-007.phpt" role="test" />
<file md5sum="132028ea592ef557448cdba9b834ec37" name="tests/bson-corpus/dbref-valid-008.phpt" role="test" />
<file md5sum="4f3b3a34f64bd8ccefe4fbbb9cb81047" name="tests/bson-corpus/dbref-valid-009.phpt" role="test" />
<file md5sum="70d0c0cdc503351422bae425b3942221" name="tests/bson-corpus/decimal128-1-valid-001.phpt" role="test" />
<file md5sum="37e26d12cbe352144545f6a93bcf9ea1" name="tests/bson-corpus/decimal128-1-valid-002.phpt" role="test" />
<file md5sum="82027ec4ea132f001af0e4b5bd31cfe9" name="tests/bson-corpus/decimal128-1-valid-003.phpt" role="test" />
<file md5sum="bc48a8ec94cf384007da99415cd1dd7f" name="tests/bson-corpus/decimal128-1-valid-004.phpt" role="test" />
<file md5sum="5604bedfc7729f0ec55bc7673d84a6c0" name="tests/bson-corpus/decimal128-1-valid-005.phpt" role="test" />
<file md5sum="892e0923b7f9b500c8b56f7d6d265464" name="tests/bson-corpus/decimal128-1-valid-006.phpt" role="test" />
<file md5sum="1d031a7aaff9fdeb70cc3f66c22fef24" name="tests/bson-corpus/decimal128-1-valid-007.phpt" role="test" />
<file md5sum="1135ad7d52e211c62618218fdafc3346" name="tests/bson-corpus/decimal128-1-valid-008.phpt" role="test" />
<file md5sum="e9d46a63fd430bbc79a348ec9e2bd492" name="tests/bson-corpus/decimal128-1-valid-009.phpt" role="test" />
<file md5sum="eedfce556c25fc1ffbeb68fc4b980a38" name="tests/bson-corpus/decimal128-1-valid-010.phpt" role="test" />
<file md5sum="89cf59ab1a84f5b1e8281762c78fa613" name="tests/bson-corpus/decimal128-1-valid-011.phpt" role="test" />
<file md5sum="cdd67f4b9c867bb7add854b76207da02" name="tests/bson-corpus/decimal128-1-valid-012.phpt" role="test" />
<file md5sum="cd4405b90412a44acde50a48a521e759" name="tests/bson-corpus/decimal128-1-valid-013.phpt" role="test" />
<file md5sum="d791f2c6eb02de0f8f9fcec6f9dfad88" name="tests/bson-corpus/decimal128-1-valid-014.phpt" role="test" />
<file md5sum="539ffbb1d2c51b4b94fc0bfb5f3d415a" name="tests/bson-corpus/decimal128-1-valid-015.phpt" role="test" />
<file md5sum="afd56c27c4c9114bd7c513325d09df17" name="tests/bson-corpus/decimal128-1-valid-016.phpt" role="test" />
<file md5sum="c770174015cdbe0b3831be9df84699b7" name="tests/bson-corpus/decimal128-1-valid-017.phpt" role="test" />
<file md5sum="7d639e030b70abd8ead5ac266fdc6f5c" name="tests/bson-corpus/decimal128-1-valid-018.phpt" role="test" />
<file md5sum="eda9b2ee4bf4f3f8f6bddfb4e55eddf4" name="tests/bson-corpus/decimal128-1-valid-019.phpt" role="test" />
<file md5sum="33bb43a5d2339f20623f14bdd67713bc" name="tests/bson-corpus/decimal128-1-valid-020.phpt" role="test" />
<file md5sum="10dca06306497a0c9c92322b0fb45d67" name="tests/bson-corpus/decimal128-1-valid-021.phpt" role="test" />
<file md5sum="a2ff8c4bd6a6d2a496393cb21068ce43" name="tests/bson-corpus/decimal128-1-valid-022.phpt" role="test" />
<file md5sum="c52940c4991346fc9a27ced77dcf3db1" name="tests/bson-corpus/decimal128-1-valid-023.phpt" role="test" />
<file md5sum="5011054657b546213dd85a892b536965" name="tests/bson-corpus/decimal128-1-valid-024.phpt" role="test" />
<file md5sum="b3d5907cab1cf2137d3cbce7c3a4f3b3" name="tests/bson-corpus/decimal128-1-valid-025.phpt" role="test" />
<file md5sum="3a3f6e4418e41891d8d680b1f9eab655" name="tests/bson-corpus/decimal128-1-valid-026.phpt" role="test" />
<file md5sum="daf5ac7834c26aa7a2f4997adaac124a" name="tests/bson-corpus/decimal128-1-valid-027.phpt" role="test" />
<file md5sum="4598e0594e7ba8ea6f520d633b0dd0ae" name="tests/bson-corpus/decimal128-1-valid-028.phpt" role="test" />
<file md5sum="7a3ed9dcb238f599a2fc8d7f0f573e49" name="tests/bson-corpus/decimal128-1-valid-029.phpt" role="test" />
<file md5sum="00445bfbf157cdd3ccf65c767d8a391d" name="tests/bson-corpus/decimal128-1-valid-030.phpt" role="test" />
<file md5sum="effa1f7d9eda86199efd93129dfa6fc5" name="tests/bson-corpus/decimal128-1-valid-031.phpt" role="test" />
<file md5sum="a92adf42c06b9a6c821e84d064c7745e" name="tests/bson-corpus/decimal128-1-valid-032.phpt" role="test" />
<file md5sum="153bca4ce42839ebe58967f16ae90428" name="tests/bson-corpus/decimal128-1-valid-033.phpt" role="test" />
<file md5sum="509998f0accd50e2501d0da0db91514e" name="tests/bson-corpus/decimal128-1-valid-034.phpt" role="test" />
<file md5sum="84b92c292ea62d47bffbefe707c10fdb" name="tests/bson-corpus/decimal128-1-valid-035.phpt" role="test" />
<file md5sum="501c8785f9b04bd547a3773d33c4d30c" name="tests/bson-corpus/decimal128-1-valid-036.phpt" role="test" />
<file md5sum="618934a0cf5bd15c4de5c37193a4f0ce" name="tests/bson-corpus/decimal128-1-valid-037.phpt" role="test" />
<file md5sum="34cc3c900550cce797455166891a2c7c" name="tests/bson-corpus/decimal128-1-valid-038.phpt" role="test" />
<file md5sum="4243338d6d541510f3610b4ef9010380" name="tests/bson-corpus/decimal128-1-valid-039.phpt" role="test" />
<file md5sum="5de6357a421d2ad15d307bfe3998df79" name="tests/bson-corpus/decimal128-1-valid-040.phpt" role="test" />
<file md5sum="7d8f6e6bc6d9f021ad8f72bc36d98eeb" name="tests/bson-corpus/decimal128-1-valid-041.phpt" role="test" />
<file md5sum="a673d8a164bd5cb3753e7cf9f4dbfa21" name="tests/bson-corpus/decimal128-1-valid-042.phpt" role="test" />
<file md5sum="d965d00298e2b79e46459a17a58c489d" name="tests/bson-corpus/decimal128-1-valid-043.phpt" role="test" />
<file md5sum="203bd0ea41a34d16c70ef65722a842ad" name="tests/bson-corpus/decimal128-1-valid-044.phpt" role="test" />
<file md5sum="50e3414af902637d224828496e28a5e3" name="tests/bson-corpus/decimal128-1-valid-045.phpt" role="test" />
<file md5sum="1c07e2612d795b2d9273d4574b065549" name="tests/bson-corpus/decimal128-1-valid-046.phpt" role="test" />
<file md5sum="c7eb10a36c4822b096797bbc4f7e2fb7" name="tests/bson-corpus/decimal128-1-valid-047.phpt" role="test" />
<file md5sum="9e534b37aa175aecc6973f7adfb15ac8" name="tests/bson-corpus/decimal128-1-valid-048.phpt" role="test" />
<file md5sum="0f2f049c2caaf824a0016b72c7b09390" name="tests/bson-corpus/decimal128-1-valid-049.phpt" role="test" />
<file md5sum="08d50bbb163a44f31b7a9f1f2e99c8bd" name="tests/bson-corpus/decimal128-1-valid-050.phpt" role="test" />
<file md5sum="f264df4f1c16e7b360beaceda2805ff6" name="tests/bson-corpus/decimal128-1-valid-051.phpt" role="test" />
<file md5sum="d34045c265616a9a71897f63ca7b4633" name="tests/bson-corpus/decimal128-1-valid-052.phpt" role="test" />
<file md5sum="7374188aae99a6d5d79a29cfd849f824" name="tests/bson-corpus/decimal128-1-valid-053.phpt" role="test" />
<file md5sum="05da0fcc9c66ccf37332db502ee18f5d" name="tests/bson-corpus/decimal128-1-valid-054.phpt" role="test" />
<file md5sum="b355636196f1d2083a8bf4d72c7196a6" name="tests/bson-corpus/decimal128-1-valid-055.phpt" role="test" />
<file md5sum="f7d8dbc77cf1909259c40e2adf813e8f" name="tests/bson-corpus/decimal128-1-valid-056.phpt" role="test" />
<file md5sum="4a65ce419b98493efe6e2eab514a3723" name="tests/bson-corpus/decimal128-1-valid-057.phpt" role="test" />
<file md5sum="71a16040d0e993222ab2e647233a20af" name="tests/bson-corpus/decimal128-1-valid-058.phpt" role="test" />
<file md5sum="c1670bc66dd3305d3f1929997d6f9123" name="tests/bson-corpus/decimal128-1-valid-059.phpt" role="test" />
<file md5sum="b1f5d62a250344d69fa079c9284a24a6" name="tests/bson-corpus/decimal128-1-valid-060.phpt" role="test" />
<file md5sum="6886c070dfd20edb65eff5b0cdc824be" name="tests/bson-corpus/decimal128-2-valid-001.phpt" role="test" />
<file md5sum="ebe7cafda73d2ef0b9ad46afe55eaf98" name="tests/bson-corpus/decimal128-2-valid-002.phpt" role="test" />
<file md5sum="c6bb429e6a7db6c816aa6996211ec110" name="tests/bson-corpus/decimal128-2-valid-003.phpt" role="test" />
<file md5sum="c23e3aa46b0f9e8cc2e53d7bfbdd68d0" name="tests/bson-corpus/decimal128-2-valid-004.phpt" role="test" />
<file md5sum="ea86af28dbd6ec53ec0f597273f7d41b" name="tests/bson-corpus/decimal128-2-valid-005.phpt" role="test" />
<file md5sum="fe512a263c2c2b2e00db8c26e4e74f3a" name="tests/bson-corpus/decimal128-2-valid-006.phpt" role="test" />
<file md5sum="358fdccd30a3853beb5c7a38981daf64" name="tests/bson-corpus/decimal128-2-valid-007.phpt" role="test" />
<file md5sum="e0183aa694a9a3d742b3780d7221e947" name="tests/bson-corpus/decimal128-2-valid-008.phpt" role="test" />
<file md5sum="7b3a9a057dd750ac51c61d3cf192e608" name="tests/bson-corpus/decimal128-2-valid-009.phpt" role="test" />
<file md5sum="7a662022e2693a083a07358893b7a698" name="tests/bson-corpus/decimal128-2-valid-010.phpt" role="test" />
<file md5sum="bd28bfbd9cb90778715ec7b19181376d" name="tests/bson-corpus/decimal128-2-valid-011.phpt" role="test" />
<file md5sum="596ece3f76cff0571b0b6d8805ebd6d1" name="tests/bson-corpus/decimal128-2-valid-012.phpt" role="test" />
<file md5sum="c995b9682ddf4093421a5f943add947d" name="tests/bson-corpus/decimal128-2-valid-013.phpt" role="test" />
<file md5sum="5817c3e8f5c5d0dc61a69678bc5fddc4" name="tests/bson-corpus/decimal128-2-valid-014.phpt" role="test" />
<file md5sum="da96a3327b205bd1453d07ccdb2755b6" name="tests/bson-corpus/decimal128-2-valid-015.phpt" role="test" />
<file md5sum="ac4cd2908c4e881af0e7e1f89823161f" name="tests/bson-corpus/decimal128-2-valid-016.phpt" role="test" />
<file md5sum="69dd94fd663803cbadca3e4b674d9d97" name="tests/bson-corpus/decimal128-2-valid-017.phpt" role="test" />
<file md5sum="f745e511795a75cdecd04bb873e5c6bb" name="tests/bson-corpus/decimal128-2-valid-018.phpt" role="test" />
<file md5sum="34624cded99172e1219c1d05cf5b03dd" name="tests/bson-corpus/decimal128-2-valid-019.phpt" role="test" />
<file md5sum="2efa113ebfe03cd7e14797216a80e804" name="tests/bson-corpus/decimal128-2-valid-020.phpt" role="test" />
<file md5sum="5038e19c4e6ff1935ddb6c61322020c6" name="tests/bson-corpus/decimal128-2-valid-021.phpt" role="test" />
<file md5sum="5780171d17e96530caa2e2e5c4e826a3" name="tests/bson-corpus/decimal128-2-valid-022.phpt" role="test" />
<file md5sum="692c9a349391e9a0e3b3098c9264cefc" name="tests/bson-corpus/decimal128-2-valid-023.phpt" role="test" />
<file md5sum="9b55b01cb8a370176aec41c109e945cb" name="tests/bson-corpus/decimal128-2-valid-024.phpt" role="test" />
<file md5sum="81c723891c746e06a6f48faec72a889f" name="tests/bson-corpus/decimal128-2-valid-025.phpt" role="test" />
<file md5sum="33d179a7e4a4ce13f24bd302978a5379" name="tests/bson-corpus/decimal128-2-valid-026.phpt" role="test" />
<file md5sum="81d9e54d939b0ee7f233bdfe2795e683" name="tests/bson-corpus/decimal128-2-valid-027.phpt" role="test" />
<file md5sum="279da82224f4bac44d4ab7e858d1e871" name="tests/bson-corpus/decimal128-2-valid-028.phpt" role="test" />
<file md5sum="09a7b85409b3ed18607f54a4f6514989" name="tests/bson-corpus/decimal128-2-valid-029.phpt" role="test" />
<file md5sum="dd12bcae8fae5debc6e8a789ffd3155e" name="tests/bson-corpus/decimal128-2-valid-030.phpt" role="test" />
<file md5sum="20cea346a01014a177e8e324eb361909" name="tests/bson-corpus/decimal128-2-valid-031.phpt" role="test" />
<file md5sum="1dd6fb3139bd2d899f051f10aa330554" name="tests/bson-corpus/decimal128-2-valid-032.phpt" role="test" />
<file md5sum="8ed78566329a47849dd88186b97cce2f" name="tests/bson-corpus/decimal128-2-valid-033.phpt" role="test" />
<file md5sum="4290415695caf5b7c0f7f9f4d390551a" name="tests/bson-corpus/decimal128-2-valid-034.phpt" role="test" />
<file md5sum="f4fa3899a5e5003753698b693524e17d" name="tests/bson-corpus/decimal128-2-valid-035.phpt" role="test" />
<file md5sum="c7b0ac22414f4d5d79b270651eff5cfa" name="tests/bson-corpus/decimal128-2-valid-036.phpt" role="test" />
<file md5sum="4512635ef56a82cb53e08fda6743b93d" name="tests/bson-corpus/decimal128-2-valid-037.phpt" role="test" />
<file md5sum="8e9190ffa4c24c25b5f290c4921d7c11" name="tests/bson-corpus/decimal128-2-valid-038.phpt" role="test" />
<file md5sum="12efa6dc4b70158d2b568c0e96b72290" name="tests/bson-corpus/decimal128-2-valid-039.phpt" role="test" />
<file md5sum="2aae22b070f53af335a170b5e929b57b" name="tests/bson-corpus/decimal128-2-valid-040.phpt" role="test" />
<file md5sum="3075030d137a90b54fe634729830ef79" name="tests/bson-corpus/decimal128-2-valid-041.phpt" role="test" />
<file md5sum="3a5925af138112fc0369186feb65c707" name="tests/bson-corpus/decimal128-2-valid-042.phpt" role="test" />
<file md5sum="3b5e74cc186aa9517b394cf3d5aaf5c2" name="tests/bson-corpus/decimal128-2-valid-043.phpt" role="test" />
<file md5sum="62b94a9ebc53bf4cdb2a13f62ff1222b" name="tests/bson-corpus/decimal128-2-valid-044.phpt" role="test" />
<file md5sum="b31e2c98cf033295e7f3a631f6959da9" name="tests/bson-corpus/decimal128-2-valid-045.phpt" role="test" />
<file md5sum="f2391841b84d4ba023f52d97309f0102" name="tests/bson-corpus/decimal128-2-valid-046.phpt" role="test" />
<file md5sum="9b6c26d1db301c74bf395df4c4309456" name="tests/bson-corpus/decimal128-2-valid-047.phpt" role="test" />
<file md5sum="ffb3bb7d55546f6ad0ea4e563fe31d02" name="tests/bson-corpus/decimal128-2-valid-048.phpt" role="test" />
<file md5sum="8091cca7ea300eba4c105d4da84754b9" name="tests/bson-corpus/decimal128-2-valid-049.phpt" role="test" />
<file md5sum="7346ca9d62ea4421e8751c7e814c7d3f" name="tests/bson-corpus/decimal128-2-valid-050.phpt" role="test" />
<file md5sum="bf84fcb4f65565a1265b1907f9c2eff6" name="tests/bson-corpus/decimal128-2-valid-051.phpt" role="test" />
<file md5sum="6d35b96bf947b21d7e4a8eb9af5cc385" name="tests/bson-corpus/decimal128-2-valid-052.phpt" role="test" />
<file md5sum="e8a20f682769efc6c92d9e857cd3a9f6" name="tests/bson-corpus/decimal128-2-valid-053.phpt" role="test" />
<file md5sum="b273c31f639e4020d04368210a2f3eae" name="tests/bson-corpus/decimal128-2-valid-054.phpt" role="test" />
<file md5sum="e83aa4b6ba77f95ad70d1fa0b8d1420d" name="tests/bson-corpus/decimal128-2-valid-055.phpt" role="test" />
<file md5sum="914f58e8833a5394050470bbd5489bc4" name="tests/bson-corpus/decimal128-2-valid-056.phpt" role="test" />
<file md5sum="f5c460b7491678c3935c0bc00b2012fc" name="tests/bson-corpus/decimal128-2-valid-057.phpt" role="test" />
<file md5sum="1ee2f7aa76fc9096cb10c8022a5823b9" name="tests/bson-corpus/decimal128-2-valid-058.phpt" role="test" />
<file md5sum="75447e3d5e23437c9ddbee43687a96aa" name="tests/bson-corpus/decimal128-2-valid-059.phpt" role="test" />
<file md5sum="ca819f305924be6c2d07a1d2cdffcaec" name="tests/bson-corpus/decimal128-2-valid-060.phpt" role="test" />
<file md5sum="99c039a1463192e6a83711bafd9277c1" name="tests/bson-corpus/decimal128-2-valid-061.phpt" role="test" />
<file md5sum="838a638a01609aee5519d38178b5cec3" name="tests/bson-corpus/decimal128-2-valid-062.phpt" role="test" />
<file md5sum="dbe912d6c2540a41bb47bdbd2dc4f277" name="tests/bson-corpus/decimal128-2-valid-063.phpt" role="test" />
<file md5sum="9dfb307597be9378d6f17fd021613fc7" name="tests/bson-corpus/decimal128-2-valid-064.phpt" role="test" />
<file md5sum="0eb97edf1018bb886e6051236a7e404d" name="tests/bson-corpus/decimal128-2-valid-065.phpt" role="test" />
<file md5sum="b446693e31de6cbc1850cea06693ec58" name="tests/bson-corpus/decimal128-2-valid-066.phpt" role="test" />
<file md5sum="5c6681f739a1928e26699ddca1952ff3" name="tests/bson-corpus/decimal128-2-valid-067.phpt" role="test" />
<file md5sum="f55ee843ada2cc2e15e44bfc3fb4aa76" name="tests/bson-corpus/decimal128-2-valid-068.phpt" role="test" />
<file md5sum="5174d68fa8f0bdbb6db5c352c11a3685" name="tests/bson-corpus/decimal128-2-valid-069.phpt" role="test" />
<file md5sum="69d2a46b1b44d566e6d18d48ce029406" name="tests/bson-corpus/decimal128-2-valid-070.phpt" role="test" />
<file md5sum="2ac2ccbd8cb23bf5e44331c50b581a6e" name="tests/bson-corpus/decimal128-2-valid-071.phpt" role="test" />
<file md5sum="f1f218392cfa908b2ca55e1b32e03ad7" name="tests/bson-corpus/decimal128-2-valid-072.phpt" role="test" />
<file md5sum="8b83828c8307d77853d9dc0d96e71f23" name="tests/bson-corpus/decimal128-2-valid-073.phpt" role="test" />
<file md5sum="ce636b5e75260e0746ddb035ba20de04" name="tests/bson-corpus/decimal128-2-valid-074.phpt" role="test" />
<file md5sum="91489b8a1be4939f849f1256f1d6952f" name="tests/bson-corpus/decimal128-2-valid-075.phpt" role="test" />
<file md5sum="b91e20481b12bf439cc6e86d554602b4" name="tests/bson-corpus/decimal128-2-valid-076.phpt" role="test" />
<file md5sum="e82f7e786bc30e57adefcdf1c31cc4ba" name="tests/bson-corpus/decimal128-2-valid-077.phpt" role="test" />
<file md5sum="6233e0ea2aa089f3d5bf64a2953c4fd7" name="tests/bson-corpus/decimal128-2-valid-078.phpt" role="test" />
<file md5sum="3a88e594cbaafbe18435d7c4fc7880d3" name="tests/bson-corpus/decimal128-2-valid-079.phpt" role="test" />
<file md5sum="68bd0c7d8510d5b051176e6d8f8828d0" name="tests/bson-corpus/decimal128-2-valid-080.phpt" role="test" />
<file md5sum="d6c8e922fb26e28a5fd43fcfd4ab4c07" name="tests/bson-corpus/decimal128-2-valid-081.phpt" role="test" />
<file md5sum="be7fcbaff7ab3a356d6bebe48f18a626" name="tests/bson-corpus/decimal128-2-valid-082.phpt" role="test" />
<file md5sum="292ebfdece76b7200075b7a3e878fe70" name="tests/bson-corpus/decimal128-2-valid-083.phpt" role="test" />
<file md5sum="d6f6723f3dc54f2be5ac8f55fe61eee2" name="tests/bson-corpus/decimal128-2-valid-084.phpt" role="test" />
<file md5sum="e7fe0a14ed36796b3c9d0dd070fccf57" name="tests/bson-corpus/decimal128-2-valid-085.phpt" role="test" />
<file md5sum="ee75c435a828d5ede2a9d6a72c9e1e5e" name="tests/bson-corpus/decimal128-2-valid-086.phpt" role="test" />
<file md5sum="878821d3e1a6d12e58a1dcbff3c62b98" name="tests/bson-corpus/decimal128-2-valid-087.phpt" role="test" />
<file md5sum="d9c1153f70d345e8bbc7db0e4b3c3c9c" name="tests/bson-corpus/decimal128-2-valid-088.phpt" role="test" />
<file md5sum="597f7e52b0990e746e65ca06807894ef" name="tests/bson-corpus/decimal128-2-valid-089.phpt" role="test" />
<file md5sum="dab76d1616473c7a46a2a12efa3ed078" name="tests/bson-corpus/decimal128-2-valid-090.phpt" role="test" />
<file md5sum="1c72ec11dca94412b855d1d8fca0f218" name="tests/bson-corpus/decimal128-2-valid-091.phpt" role="test" />
<file md5sum="db1f2ae7f696fc2f3e2c4df7507584a0" name="tests/bson-corpus/decimal128-2-valid-092.phpt" role="test" />
<file md5sum="99d19136b72a590fa500e9022106c613" name="tests/bson-corpus/decimal128-2-valid-093.phpt" role="test" />
<file md5sum="19ef078878fd42752fd2c7f2bc490d8f" name="tests/bson-corpus/decimal128-2-valid-094.phpt" role="test" />
<file md5sum="64d0ba079b2730ac81a8229c9f50b8aa" name="tests/bson-corpus/decimal128-2-valid-095.phpt" role="test" />
<file md5sum="b1e2127b77ba70512cbe9a810ed5cbd4" name="tests/bson-corpus/decimal128-2-valid-096.phpt" role="test" />
<file md5sum="5f63aca170e9ec7f3a458fc0d49a1bf3" name="tests/bson-corpus/decimal128-2-valid-097.phpt" role="test" />
<file md5sum="2dfde48d8e83f1845b4878654b1f29f9" name="tests/bson-corpus/decimal128-2-valid-098.phpt" role="test" />
<file md5sum="11d9038122197611b7be1962e511ebf6" name="tests/bson-corpus/decimal128-2-valid-099.phpt" role="test" />
<file md5sum="6e6954d5da610157da85f787468f5011" name="tests/bson-corpus/decimal128-2-valid-100.phpt" role="test" />
<file md5sum="e4ac0734e23a89244f99cca111079f4d" name="tests/bson-corpus/decimal128-2-valid-101.phpt" role="test" />
<file md5sum="5caf3f6345fa529e205b2556ce068741" name="tests/bson-corpus/decimal128-2-valid-102.phpt" role="test" />
<file md5sum="079110ebbead15fc2d1edc1c33609c47" name="tests/bson-corpus/decimal128-2-valid-103.phpt" role="test" />
<file md5sum="f333e1d3b1d82eee09d36934dadab490" name="tests/bson-corpus/decimal128-2-valid-104.phpt" role="test" />
<file md5sum="7ce6dc892473f1cc5d9b4ac19f4a3d36" name="tests/bson-corpus/decimal128-2-valid-105.phpt" role="test" />
<file md5sum="e4e0ddf1a1e2e4e4d4be4bc528d86363" name="tests/bson-corpus/decimal128-2-valid-106.phpt" role="test" />
<file md5sum="f064badcdb7a855e2fe687c5d8fbb308" name="tests/bson-corpus/decimal128-2-valid-107.phpt" role="test" />
<file md5sum="248fc965094a2f3a6bfe25c4bb2e6158" name="tests/bson-corpus/decimal128-2-valid-108.phpt" role="test" />
<file md5sum="3aef13e0c70c7c4b3bac7b1c108b0b6d" name="tests/bson-corpus/decimal128-2-valid-109.phpt" role="test" />
<file md5sum="d8b41e17ec1f2973051819eb484a4bce" name="tests/bson-corpus/decimal128-2-valid-110.phpt" role="test" />
<file md5sum="b9feb88a66d1a47917d3f795cffd10c5" name="tests/bson-corpus/decimal128-2-valid-111.phpt" role="test" />
<file md5sum="e75fd52d3d0aef1512eec4a977f10059" name="tests/bson-corpus/decimal128-2-valid-112.phpt" role="test" />
<file md5sum="ed8ccc7670791b80f6bd60918c92ee90" name="tests/bson-corpus/decimal128-2-valid-113.phpt" role="test" />
<file md5sum="1ce44361ec13453f2adbeb817bcb90e0" name="tests/bson-corpus/decimal128-2-valid-114.phpt" role="test" />
<file md5sum="092805969b923b8244d49fe34007b8d4" name="tests/bson-corpus/decimal128-2-valid-115.phpt" role="test" />
<file md5sum="29cc704f72e2fe7d65004c006ab718d9" name="tests/bson-corpus/decimal128-2-valid-116.phpt" role="test" />
<file md5sum="374314cf21c8a7aa595854fd215dd402" name="tests/bson-corpus/decimal128-2-valid-117.phpt" role="test" />
<file md5sum="ecd169a8997e2b1684ad126826ee2cb1" name="tests/bson-corpus/decimal128-2-valid-118.phpt" role="test" />
<file md5sum="7323bec4d464c266ff485b3aeab380ad" name="tests/bson-corpus/decimal128-2-valid-119.phpt" role="test" />
<file md5sum="596bee046cfa55b9abdc3088201a5f3a" name="tests/bson-corpus/decimal128-2-valid-120.phpt" role="test" />
<file md5sum="ce5a5abd9f315b1d17510e739fdc9def" name="tests/bson-corpus/decimal128-2-valid-121.phpt" role="test" />
<file md5sum="972118c623d9cbbdb32c86b11f282c95" name="tests/bson-corpus/decimal128-2-valid-122.phpt" role="test" />
<file md5sum="43c9b23391cd40444a1bc0c4184dbd80" name="tests/bson-corpus/decimal128-2-valid-123.phpt" role="test" />
<file md5sum="2d5d53083b2f97c304434a497659268e" name="tests/bson-corpus/decimal128-2-valid-124.phpt" role="test" />
<file md5sum="83adb74d077357280737af3454c60bfb" name="tests/bson-corpus/decimal128-2-valid-125.phpt" role="test" />
<file md5sum="6ed2274d8648c34540454c10855f4aac" name="tests/bson-corpus/decimal128-2-valid-126.phpt" role="test" />
<file md5sum="c72e104e5354f97ed71f3ee2ef85480a" name="tests/bson-corpus/decimal128-2-valid-127.phpt" role="test" />
<file md5sum="f9f951dd77b4cd353d525e67e722e9ca" name="tests/bson-corpus/decimal128-2-valid-128.phpt" role="test" />
<file md5sum="0db79f289a2a25d6f6f0b6cbbe4aa836" name="tests/bson-corpus/decimal128-2-valid-129.phpt" role="test" />
<file md5sum="d714f74ae95de70ffb434a1bbf66ddba" name="tests/bson-corpus/decimal128-2-valid-130.phpt" role="test" />
<file md5sum="d20d7895896d5dae2cd35d9f02b4308c" name="tests/bson-corpus/decimal128-2-valid-131.phpt" role="test" />
<file md5sum="42758cc60e7f9c39e64ec9e08589d033" name="tests/bson-corpus/decimal128-2-valid-132.phpt" role="test" />
<file md5sum="d3ea22a731ed66c1c59c5fb070c08de0" name="tests/bson-corpus/decimal128-2-valid-133.phpt" role="test" />
<file md5sum="115b515f2ce58bcf55a9ab533652b3fd" name="tests/bson-corpus/decimal128-2-valid-134.phpt" role="test" />
<file md5sum="cd0f5e211437a5a7606e3379deec795f" name="tests/bson-corpus/decimal128-2-valid-135.phpt" role="test" />
<file md5sum="9681837c2d9e05e668b6cee995b2962d" name="tests/bson-corpus/decimal128-2-valid-136.phpt" role="test" />
<file md5sum="193394e2ea1e5d36ebbc805cbd524be0" name="tests/bson-corpus/decimal128-2-valid-137.phpt" role="test" />
<file md5sum="e4f659de2e08ce0cc1912a5da3d063c9" name="tests/bson-corpus/decimal128-2-valid-138.phpt" role="test" />
<file md5sum="0e90fe680245e56cc5b1565c18a347d0" name="tests/bson-corpus/decimal128-2-valid-139.phpt" role="test" />
<file md5sum="63bdbd10bf86e9d6ea7dbd94ff95e865" name="tests/bson-corpus/decimal128-2-valid-140.phpt" role="test" />
<file md5sum="0cda664012417779d9881342536104f0" name="tests/bson-corpus/decimal128-2-valid-141.phpt" role="test" />
<file md5sum="d2b0ce12b2101271cc3bfbe17d8edd78" name="tests/bson-corpus/decimal128-2-valid-142.phpt" role="test" />
<file md5sum="e56884162b5650ed6424e39a2ec15243" name="tests/bson-corpus/decimal128-2-valid-143.phpt" role="test" />
<file md5sum="fea9341dd80ffcdb47c256a84605840f" name="tests/bson-corpus/decimal128-2-valid-144.phpt" role="test" />
<file md5sum="a59cd1cde6378a1431496482864fbac3" name="tests/bson-corpus/decimal128-2-valid-145.phpt" role="test" />
<file md5sum="4e38d2a1c4e9ee9ef79dbac2512556ce" name="tests/bson-corpus/decimal128-2-valid-146.phpt" role="test" />
<file md5sum="0a7105a9c6e6f5d39b0b7d60c45b64a4" name="tests/bson-corpus/decimal128-2-valid-147.phpt" role="test" />
<file md5sum="c70d01f2244424b3c80f8cee558d90dd" name="tests/bson-corpus/decimal128-2-valid-148.phpt" role="test" />
<file md5sum="b08b51fec7a94b71cdc56cd74825e502" name="tests/bson-corpus/decimal128-2-valid-149.phpt" role="test" />
<file md5sum="c9ddb5f8eb8d5d839e9577346a70860a" name="tests/bson-corpus/decimal128-2-valid-150.phpt" role="test" />
<file md5sum="fe8062174b7a95a744632b8a39831c76" name="tests/bson-corpus/decimal128-2-valid-151.phpt" role="test" />
<file md5sum="dbc6cca18f17936b03ba9e0488894562" name="tests/bson-corpus/decimal128-2-valid-152.phpt" role="test" />
<file md5sum="54a197ff75cf26525f1d4a2731074184" name="tests/bson-corpus/decimal128-2-valid-153.phpt" role="test" />
<file md5sum="b3f7abfb17aef23b068bbc88abe09d92" name="tests/bson-corpus/decimal128-2-valid-154.phpt" role="test" />
<file md5sum="49ff683f2e4ff206575f2540d62d9939" name="tests/bson-corpus/decimal128-2-valid-155.phpt" role="test" />
<file md5sum="9c47453cc892829db8f10ede9a524d04" name="tests/bson-corpus/decimal128-2-valid-156.phpt" role="test" />
<file md5sum="335b2ee5400427a297cd159dfcd8f8b9" name="tests/bson-corpus/decimal128-2-valid-157.phpt" role="test" />
<file md5sum="285061fa1c44ed9bbf4e7677c16dfbdb" name="tests/bson-corpus/decimal128-3-valid-001.phpt" role="test" />
<file md5sum="71e816a512d0617ffb56083f9b253a43" name="tests/bson-corpus/decimal128-3-valid-002.phpt" role="test" />
<file md5sum="2a22fa5987c475c6ef136be9fd35dbe8" name="tests/bson-corpus/decimal128-3-valid-003.phpt" role="test" />
<file md5sum="e818dde2299e57e66daacf15dcd0c487" name="tests/bson-corpus/decimal128-3-valid-004.phpt" role="test" />
<file md5sum="bad325f55d41c2cabc2878932fb1af96" name="tests/bson-corpus/decimal128-3-valid-005.phpt" role="test" />
<file md5sum="707a5e22cdb5ea9dd7b56be0670c8065" name="tests/bson-corpus/decimal128-3-valid-006.phpt" role="test" />
<file md5sum="767412d1a7d808c4ad64332831352f88" name="tests/bson-corpus/decimal128-3-valid-007.phpt" role="test" />
<file md5sum="523b29c71b6662ded756802453b2efa0" name="tests/bson-corpus/decimal128-3-valid-008.phpt" role="test" />
<file md5sum="e885ac93a47321231328c3c288446842" name="tests/bson-corpus/decimal128-3-valid-009.phpt" role="test" />
<file md5sum="8edeb6b1d7cae3f361b187e73deea098" name="tests/bson-corpus/decimal128-3-valid-010.phpt" role="test" />
<file md5sum="09d75cebf55c6f2de98f2b32737353a2" name="tests/bson-corpus/decimal128-3-valid-011.phpt" role="test" />
<file md5sum="99c4d5dd30476828dc6024fb2e02a3c9" name="tests/bson-corpus/decimal128-3-valid-012.phpt" role="test" />
<file md5sum="762ea5994e873349e92b1759ad9fc222" name="tests/bson-corpus/decimal128-3-valid-013.phpt" role="test" />
<file md5sum="efa31de5dbc98e6d5e5b737407e13b33" name="tests/bson-corpus/decimal128-3-valid-014.phpt" role="test" />
<file md5sum="635bd16bcaadb3ce39f15fd5ecdbc6e8" name="tests/bson-corpus/decimal128-3-valid-015.phpt" role="test" />
<file md5sum="3b85e1cd604098694b1915b34031a727" name="tests/bson-corpus/decimal128-3-valid-016.phpt" role="test" />
<file md5sum="8819b3917f648a0fb4af27b03bf7c803" name="tests/bson-corpus/decimal128-3-valid-017.phpt" role="test" />
<file md5sum="36f0f60f4fa723876a33605783c99b15" name="tests/bson-corpus/decimal128-3-valid-018.phpt" role="test" />
<file md5sum="4b2f6a300b7c10e2f544f80f30d30d9f" name="tests/bson-corpus/decimal128-3-valid-019.phpt" role="test" />
<file md5sum="ffc701937d485d9eadb2a4a4a92665fe" name="tests/bson-corpus/decimal128-3-valid-020.phpt" role="test" />
<file md5sum="e38b0ff8f351068e3e166a6dbf621f15" name="tests/bson-corpus/decimal128-3-valid-021.phpt" role="test" />
<file md5sum="65cd782c3febf16d0f5733ff2bfafc96" name="tests/bson-corpus/decimal128-3-valid-022.phpt" role="test" />
<file md5sum="7bf4bcba014e524bc5b45b69e4d8ddef" name="tests/bson-corpus/decimal128-3-valid-023.phpt" role="test" />
<file md5sum="0df4ed3e8b33df779d0c1f0bb25ca864" name="tests/bson-corpus/decimal128-3-valid-024.phpt" role="test" />
<file md5sum="6f9b4206e689827c20eb1a8c39707592" name="tests/bson-corpus/decimal128-3-valid-025.phpt" role="test" />
<file md5sum="b5635f91adcbe5910c9845853c3000e8" name="tests/bson-corpus/decimal128-3-valid-026.phpt" role="test" />
<file md5sum="bc898da6ef93934ecb11b531c3b4c319" name="tests/bson-corpus/decimal128-3-valid-027.phpt" role="test" />
<file md5sum="388247160d0cf976b3d2f731aad836b3" name="tests/bson-corpus/decimal128-3-valid-028.phpt" role="test" />
<file md5sum="ae9bcfa0c72cb120f8954aba150fb0d3" name="tests/bson-corpus/decimal128-3-valid-029.phpt" role="test" />
<file md5sum="72f213804114eaf08b32ba30fdfaf563" name="tests/bson-corpus/decimal128-3-valid-030.phpt" role="test" />
<file md5sum="53697e75afe49541f6cd07588db9a4a5" name="tests/bson-corpus/decimal128-3-valid-031.phpt" role="test" />
<file md5sum="37e1fbad65836304d09913c7237becbe" name="tests/bson-corpus/decimal128-3-valid-032.phpt" role="test" />
<file md5sum="38be2a72668f7ecec231b5cb2143aa7c" name="tests/bson-corpus/decimal128-3-valid-033.phpt" role="test" />
<file md5sum="b684b9b00e1d48faf6c7157c213fe44e" name="tests/bson-corpus/decimal128-3-valid-034.phpt" role="test" />
<file md5sum="beacdb41ee2a019231d731f9978595d2" name="tests/bson-corpus/decimal128-3-valid-035.phpt" role="test" />
<file md5sum="4a28435b044639d1feabbe4574bc640c" name="tests/bson-corpus/decimal128-3-valid-036.phpt" role="test" />
<file md5sum="4b27da376aa5016d6a15a8350b4a8896" name="tests/bson-corpus/decimal128-3-valid-037.phpt" role="test" />
<file md5sum="42ea9bf74f5e119c116ac66353e7a336" name="tests/bson-corpus/decimal128-3-valid-038.phpt" role="test" />
<file md5sum="e2e632a6da598f5df6b9c4f2e69583c9" name="tests/bson-corpus/decimal128-3-valid-039.phpt" role="test" />
<file md5sum="26042ea0a9e57c199541cac0c73cf9df" name="tests/bson-corpus/decimal128-3-valid-040.phpt" role="test" />
<file md5sum="bcfe2333a27268b6f688b35711ed5949" name="tests/bson-corpus/decimal128-3-valid-041.phpt" role="test" />
<file md5sum="bf87106fbdb666c1d8101c76b5135e06" name="tests/bson-corpus/decimal128-3-valid-042.phpt" role="test" />
<file md5sum="d985f2378ebe13f286f0473bc00007ea" name="tests/bson-corpus/decimal128-3-valid-043.phpt" role="test" />
<file md5sum="9489d13ae932c7a274a5b0d3a8aee6bc" name="tests/bson-corpus/decimal128-3-valid-044.phpt" role="test" />
<file md5sum="6cf1f73f1d504c8b16a497fc4e936034" name="tests/bson-corpus/decimal128-3-valid-045.phpt" role="test" />
<file md5sum="7314d5967b8e0b58362c198d4097160c" name="tests/bson-corpus/decimal128-3-valid-046.phpt" role="test" />
<file md5sum="cea8a9ccef84c9bd977d65fd3f0c357f" name="tests/bson-corpus/decimal128-3-valid-047.phpt" role="test" />
<file md5sum="251ff6888529eceed901032a5a07350b" name="tests/bson-corpus/decimal128-3-valid-048.phpt" role="test" />
<file md5sum="60a49ba345ada492a53d0d6d0260d52e" name="tests/bson-corpus/decimal128-3-valid-049.phpt" role="test" />
<file md5sum="dd6c4bd00ae508089a04fe0cc0d46675" name="tests/bson-corpus/decimal128-3-valid-050.phpt" role="test" />
<file md5sum="4d4a12fabbf42d7eae1ae3816589d289" name="tests/bson-corpus/decimal128-3-valid-051.phpt" role="test" />
<file md5sum="5b591c7767672ad4f047f6ac7f1d1470" name="tests/bson-corpus/decimal128-3-valid-052.phpt" role="test" />
<file md5sum="f450bb3ba19ebbea98cb8aff47234e3f" name="tests/bson-corpus/decimal128-3-valid-053.phpt" role="test" />
<file md5sum="50de062de6a62d1b04f52683c409cf9a" name="tests/bson-corpus/decimal128-3-valid-054.phpt" role="test" />
<file md5sum="26223c9c10d8d81f626067dfd157cc66" name="tests/bson-corpus/decimal128-3-valid-055.phpt" role="test" />
<file md5sum="833f85ee40bc2b91ac0f83ac7c2911b7" name="tests/bson-corpus/decimal128-3-valid-056.phpt" role="test" />
<file md5sum="ade35aaa551f08d1db97f192f8935278" name="tests/bson-corpus/decimal128-3-valid-057.phpt" role="test" />
<file md5sum="e6096314e28a61263272383178e521cb" name="tests/bson-corpus/decimal128-3-valid-058.phpt" role="test" />
<file md5sum="f86af89d99f6aae8e2bf8758f3e323b0" name="tests/bson-corpus/decimal128-3-valid-059.phpt" role="test" />
<file md5sum="708d05c9f44a6b6910b0f586d4ea2a48" name="tests/bson-corpus/decimal128-3-valid-060.phpt" role="test" />
<file md5sum="ccef8893bad70c1dd01b012323e41a6e" name="tests/bson-corpus/decimal128-3-valid-061.phpt" role="test" />
<file md5sum="3d01b591b30d0fd551880c86d041ff15" name="tests/bson-corpus/decimal128-3-valid-062.phpt" role="test" />
<file md5sum="a9ffeda3e0c040f3918caa5bbe4eed92" name="tests/bson-corpus/decimal128-3-valid-063.phpt" role="test" />
<file md5sum="712882f545526a817f8cac0f396816f1" name="tests/bson-corpus/decimal128-3-valid-064.phpt" role="test" />
<file md5sum="a13606e8d6a51a91e94b002abf7569ac" name="tests/bson-corpus/decimal128-3-valid-065.phpt" role="test" />
<file md5sum="7bd9c1869f822e1697ab3186fff5ccac" name="tests/bson-corpus/decimal128-3-valid-066.phpt" role="test" />
<file md5sum="42ff6622baa9102dfdab5b4e9219e56c" name="tests/bson-corpus/decimal128-3-valid-067.phpt" role="test" />
<file md5sum="53a12d608c3b6ae3b229282331be4613" name="tests/bson-corpus/decimal128-3-valid-068.phpt" role="test" />
<file md5sum="4d4449891e57385f0a8683106745a6bf" name="tests/bson-corpus/decimal128-3-valid-069.phpt" role="test" />
<file md5sum="b9b353bcef79999222c7bb1e110b1d73" name="tests/bson-corpus/decimal128-3-valid-070.phpt" role="test" />
<file md5sum="b73056684bff62c373e92a2052b9c8fc" name="tests/bson-corpus/decimal128-3-valid-071.phpt" role="test" />
<file md5sum="88a3792345b74c97b88efd93c9bc7e86" name="tests/bson-corpus/decimal128-3-valid-072.phpt" role="test" />
<file md5sum="028321889f48c222c5a50909f54dfba6" name="tests/bson-corpus/decimal128-3-valid-073.phpt" role="test" />
<file md5sum="1220eb5830e06f6b1ebc0e92fb3a0217" name="tests/bson-corpus/decimal128-3-valid-074.phpt" role="test" />
<file md5sum="0b048118c5d2bec5990328f0b44e6b7c" name="tests/bson-corpus/decimal128-3-valid-075.phpt" role="test" />
<file md5sum="d159a63ea062cefce36c083af3f92e09" name="tests/bson-corpus/decimal128-3-valid-076.phpt" role="test" />
<file md5sum="6ebd27d79eb45617037b834a18f1a397" name="tests/bson-corpus/decimal128-3-valid-077.phpt" role="test" />
<file md5sum="ac557749d93ac364f7b7ac1924d7a139" name="tests/bson-corpus/decimal128-3-valid-078.phpt" role="test" />
<file md5sum="9179543cf5dde27908d35b421bafe092" name="tests/bson-corpus/decimal128-3-valid-079.phpt" role="test" />
<file md5sum="1d8995462753bef9a55e3e2a0b1cb8c7" name="tests/bson-corpus/decimal128-3-valid-080.phpt" role="test" />
<file md5sum="36191dd9cb54d47ad07aebf88a0ec450" name="tests/bson-corpus/decimal128-3-valid-081.phpt" role="test" />
<file md5sum="720ddc8130be016b5d743c91389b2308" name="tests/bson-corpus/decimal128-3-valid-082.phpt" role="test" />
<file md5sum="eba1d9851f97087e303f81150daf8acc" name="tests/bson-corpus/decimal128-3-valid-083.phpt" role="test" />
<file md5sum="74ea62a30d2ab023407992b7f6b868e1" name="tests/bson-corpus/decimal128-3-valid-084.phpt" role="test" />
<file md5sum="9cb2e9f4a6114a8a41f4fe0cf5a4b597" name="tests/bson-corpus/decimal128-3-valid-085.phpt" role="test" />
<file md5sum="38faf6b70499448cb39c7ec4693ebe2f" name="tests/bson-corpus/decimal128-3-valid-086.phpt" role="test" />
<file md5sum="ac98dfa8966deffa83814bd660e5116d" name="tests/bson-corpus/decimal128-3-valid-087.phpt" role="test" />
<file md5sum="afdd50ddddde4367798977f3e93d48a1" name="tests/bson-corpus/decimal128-3-valid-088.phpt" role="test" />
<file md5sum="c28ee80f93c0b5120d1374402164d803" name="tests/bson-corpus/decimal128-3-valid-089.phpt" role="test" />
<file md5sum="6a28fded11fbdd2f6fd2a37404fe8e1a" name="tests/bson-corpus/decimal128-3-valid-090.phpt" role="test" />
<file md5sum="6499665b64b2cda5c2caa835c3268b80" name="tests/bson-corpus/decimal128-3-valid-091.phpt" role="test" />
<file md5sum="e513b00463484e7eb6c206d81e7fe685" name="tests/bson-corpus/decimal128-3-valid-092.phpt" role="test" />
<file md5sum="98b719ddd62f5438ffa268724f57a7a6" name="tests/bson-corpus/decimal128-3-valid-093.phpt" role="test" />
<file md5sum="c8236e535105211a46f04c1d9085a956" name="tests/bson-corpus/decimal128-3-valid-094.phpt" role="test" />
<file md5sum="85c68ae6e45740cd54065e02c9aed1ea" name="tests/bson-corpus/decimal128-3-valid-095.phpt" role="test" />
<file md5sum="04a8b02c46373a3cdb504cd20c7a4065" name="tests/bson-corpus/decimal128-3-valid-096.phpt" role="test" />
<file md5sum="769410961825578ccddeffb5c037bbd9" name="tests/bson-corpus/decimal128-3-valid-097.phpt" role="test" />
<file md5sum="b416670da1fed453dcc181a0b4ca4265" name="tests/bson-corpus/decimal128-3-valid-098.phpt" role="test" />
<file md5sum="1c854bc86a5febf071aa30244e9d6158" name="tests/bson-corpus/decimal128-3-valid-099.phpt" role="test" />
<file md5sum="a2ae1aacb4293213ab44de1e4b467d6a" name="tests/bson-corpus/decimal128-3-valid-100.phpt" role="test" />
<file md5sum="f959fb91014e6db6aa7740156e3c415a" name="tests/bson-corpus/decimal128-3-valid-101.phpt" role="test" />
<file md5sum="870b07bd7b870c341266a0f32b0b4ad0" name="tests/bson-corpus/decimal128-3-valid-102.phpt" role="test" />
<file md5sum="2cf3e736ab17b799a600f097e2c207eb" name="tests/bson-corpus/decimal128-3-valid-103.phpt" role="test" />
<file md5sum="5ac5352cfe68b43850524f1258403996" name="tests/bson-corpus/decimal128-3-valid-104.phpt" role="test" />
<file md5sum="f88895c63eeeebcd2f04d03ae4836d46" name="tests/bson-corpus/decimal128-3-valid-105.phpt" role="test" />
<file md5sum="59c88a24b01330d40cbfb588f19f3172" name="tests/bson-corpus/decimal128-3-valid-106.phpt" role="test" />
<file md5sum="ccfd2869199b30a391a9778f6dae8c3a" name="tests/bson-corpus/decimal128-3-valid-107.phpt" role="test" />
<file md5sum="0c8a6d82d7e87c57ae1ca772db47613c" name="tests/bson-corpus/decimal128-3-valid-108.phpt" role="test" />
<file md5sum="8582b2a91ff2603ec41157bcbfe196b8" name="tests/bson-corpus/decimal128-3-valid-109.phpt" role="test" />
<file md5sum="732a1f025e3ae5d80a80a86e90a536e5" name="tests/bson-corpus/decimal128-3-valid-110.phpt" role="test" />
<file md5sum="c98ca02fc53d63ac85a11fc4af7cd31b" name="tests/bson-corpus/decimal128-3-valid-111.phpt" role="test" />
<file md5sum="089bb95ab89e85234feefd511897021f" name="tests/bson-corpus/decimal128-3-valid-112.phpt" role="test" />
<file md5sum="4a63fd31b9eb3ff7e00d8204216acfe5" name="tests/bson-corpus/decimal128-3-valid-113.phpt" role="test" />
<file md5sum="0aff30ba8a67813d40be4f4ddc32fe45" name="tests/bson-corpus/decimal128-3-valid-114.phpt" role="test" />
<file md5sum="3254d5489f515f7ea3f0c3fdffdfac0a" name="tests/bson-corpus/decimal128-3-valid-115.phpt" role="test" />
<file md5sum="c1a9d66b36ee5854b8f05426eb2593d9" name="tests/bson-corpus/decimal128-3-valid-116.phpt" role="test" />
<file md5sum="40519827c1acc93ccfdc79914cab4c44" name="tests/bson-corpus/decimal128-3-valid-117.phpt" role="test" />
<file md5sum="f2a7118530558db91c5af45cce414414" name="tests/bson-corpus/decimal128-3-valid-118.phpt" role="test" />
<file md5sum="ceb4919c0ba27c559fc8289e1d0a8a1f" name="tests/bson-corpus/decimal128-3-valid-119.phpt" role="test" />
<file md5sum="e1114e8d95af2aae260a34d9cc130d59" name="tests/bson-corpus/decimal128-3-valid-120.phpt" role="test" />
<file md5sum="1f80e6da7fc5aa97e8e0fe221fe72b4c" name="tests/bson-corpus/decimal128-3-valid-121.phpt" role="test" />
<file md5sum="1039f322acce0dd32a67c4a1be835f1d" name="tests/bson-corpus/decimal128-3-valid-122.phpt" role="test" />
<file md5sum="9e718c1821be1dce3919661b69b86f78" name="tests/bson-corpus/decimal128-3-valid-123.phpt" role="test" />
<file md5sum="edcda87f242e7aa05885b79ebe8356bd" name="tests/bson-corpus/decimal128-3-valid-124.phpt" role="test" />
<file md5sum="fbc61ecd900b31e916a80a41840ae7d2" name="tests/bson-corpus/decimal128-3-valid-125.phpt" role="test" />
<file md5sum="80aa079e149f647bf1b42371633fad50" name="tests/bson-corpus/decimal128-3-valid-126.phpt" role="test" />
<file md5sum="94ce8b2c5180bbcbc1115d716cfd22ac" name="tests/bson-corpus/decimal128-3-valid-127.phpt" role="test" />
<file md5sum="8f746a5301433896e6ce0f06448f84cb" name="tests/bson-corpus/decimal128-3-valid-128.phpt" role="test" />
<file md5sum="28fd05b37eb2937ec30b7657e65c3239" name="tests/bson-corpus/decimal128-3-valid-129.phpt" role="test" />
<file md5sum="16ed4f19d2c1179b7a9bd6cb1bea5cbe" name="tests/bson-corpus/decimal128-3-valid-130.phpt" role="test" />
<file md5sum="9e9f5b2a501d49448eb49a5bb4e5c145" name="tests/bson-corpus/decimal128-3-valid-131.phpt" role="test" />
<file md5sum="fc2516ab5fc97c767379cd2ce3664703" name="tests/bson-corpus/decimal128-3-valid-132.phpt" role="test" />
<file md5sum="b10a9a9e1fd53de1ceaad9bd76ba5820" name="tests/bson-corpus/decimal128-3-valid-133.phpt" role="test" />
<file md5sum="e3121b9f3762ad5f5e664b8aed2ce790" name="tests/bson-corpus/decimal128-3-valid-134.phpt" role="test" />
<file md5sum="4ac42094f4c6a1702697c88242bf6b22" name="tests/bson-corpus/decimal128-3-valid-135.phpt" role="test" />
<file md5sum="05e3c130ccbe2b4cfa889c32a14d9281" name="tests/bson-corpus/decimal128-3-valid-136.phpt" role="test" />
<file md5sum="b83f8cb4a55308e7c5a866b8e0432286" name="tests/bson-corpus/decimal128-3-valid-137.phpt" role="test" />
<file md5sum="bc7dcfa4b9ff96159dca442ccbfa6f58" name="tests/bson-corpus/decimal128-3-valid-138.phpt" role="test" />
<file md5sum="fdbf8af63147eaf8de4f355f893d82f0" name="tests/bson-corpus/decimal128-3-valid-139.phpt" role="test" />
<file md5sum="3ea4b9196ea0fde3e97531d50497e078" name="tests/bson-corpus/decimal128-3-valid-140.phpt" role="test" />
<file md5sum="548ebf8890210ed924e732e0bb56f268" name="tests/bson-corpus/decimal128-3-valid-141.phpt" role="test" />
<file md5sum="85621a9f6896c13336cc0ad57a178c36" name="tests/bson-corpus/decimal128-3-valid-142.phpt" role="test" />
<file md5sum="dd982fb56f56a2c22df77baeeef5a169" name="tests/bson-corpus/decimal128-3-valid-143.phpt" role="test" />
<file md5sum="e79c06fbd30f5cc500f558d091be2ff6" name="tests/bson-corpus/decimal128-3-valid-144.phpt" role="test" />
<file md5sum="905022562637a0fdf6e29c9f7081f06a" name="tests/bson-corpus/decimal128-3-valid-145.phpt" role="test" />
<file md5sum="85d99996a9edfbf0d1aee337a79807b7" name="tests/bson-corpus/decimal128-3-valid-146.phpt" role="test" />
<file md5sum="4d0b8d01353a0b140f63de1b3249dd1a" name="tests/bson-corpus/decimal128-3-valid-147.phpt" role="test" />
<file md5sum="688b3a5a6145886c0f4dcab0473ce503" name="tests/bson-corpus/decimal128-3-valid-148.phpt" role="test" />
<file md5sum="51102075cbdcc099b594c18b2ec5e804" name="tests/bson-corpus/decimal128-3-valid-149.phpt" role="test" />
<file md5sum="2ce179c33ab369756a3cf2b3ecb83d8f" name="tests/bson-corpus/decimal128-3-valid-150.phpt" role="test" />
<file md5sum="928be20883705fd5fd66e16a652358b2" name="tests/bson-corpus/decimal128-3-valid-151.phpt" role="test" />
<file md5sum="2ac14de8c9f338e2d109b65e1fe9b105" name="tests/bson-corpus/decimal128-3-valid-152.phpt" role="test" />
<file md5sum="8c6851e48419285cc4c41d101e60fa9e" name="tests/bson-corpus/decimal128-3-valid-153.phpt" role="test" />
<file md5sum="82ca8e037fd8ed557fb5276ca2f61511" name="tests/bson-corpus/decimal128-3-valid-154.phpt" role="test" />
<file md5sum="475a1a9f289178ad62c93bfbd211f05d" name="tests/bson-corpus/decimal128-3-valid-155.phpt" role="test" />
<file md5sum="9a35ce310e71145f363a2860b7dc15da" name="tests/bson-corpus/decimal128-3-valid-156.phpt" role="test" />
<file md5sum="dc7986da32ee64e79b78b96217d3910e" name="tests/bson-corpus/decimal128-3-valid-157.phpt" role="test" />
<file md5sum="022eab8694de0e478d59877dd23f3a60" name="tests/bson-corpus/decimal128-3-valid-158.phpt" role="test" />
<file md5sum="2255b591ad9260f3c1ca3c45cd2b9b5f" name="tests/bson-corpus/decimal128-3-valid-159.phpt" role="test" />
<file md5sum="549b36ad3bed3591ff6fcaaee7045313" name="tests/bson-corpus/decimal128-3-valid-160.phpt" role="test" />
<file md5sum="852918f6ad248bc0f2ab5cf0304a4ee5" name="tests/bson-corpus/decimal128-3-valid-161.phpt" role="test" />
<file md5sum="15087fca2e55ab6baa1832609f34ee48" name="tests/bson-corpus/decimal128-3-valid-162.phpt" role="test" />
<file md5sum="4fa5b2b2eecee85bc486722080a2084b" name="tests/bson-corpus/decimal128-3-valid-163.phpt" role="test" />
<file md5sum="23b802f336aea83ebdaedc295cce5a14" name="tests/bson-corpus/decimal128-3-valid-164.phpt" role="test" />
<file md5sum="4aef62831fa0040c1c9244306aed1a7b" name="tests/bson-corpus/decimal128-3-valid-165.phpt" role="test" />
<file md5sum="d294b55c0f5313be509da95c2013a0a7" name="tests/bson-corpus/decimal128-3-valid-166.phpt" role="test" />
<file md5sum="e98a837b3ec3163c840c87af9ab6f9ad" name="tests/bson-corpus/decimal128-3-valid-167.phpt" role="test" />
<file md5sum="d5a4004eb1f2a3305356886dc13e07a6" name="tests/bson-corpus/decimal128-3-valid-168.phpt" role="test" />
<file md5sum="640a7e5f5c96a11079c90695371af9b9" name="tests/bson-corpus/decimal128-3-valid-169.phpt" role="test" />
<file md5sum="b3d815c60e47a7752ce8398e1af99760" name="tests/bson-corpus/decimal128-3-valid-170.phpt" role="test" />
<file md5sum="1209501eba550a7225d10d000d852f64" name="tests/bson-corpus/decimal128-3-valid-171.phpt" role="test" />
<file md5sum="c6b2b546a5ee1715ac8c4a4311035506" name="tests/bson-corpus/decimal128-3-valid-172.phpt" role="test" />
<file md5sum="ad9556bcc698107e38ceb1fc21a99271" name="tests/bson-corpus/decimal128-3-valid-173.phpt" role="test" />
<file md5sum="fcce3b1c961ee40f0a38c8268688a95d" name="tests/bson-corpus/decimal128-3-valid-174.phpt" role="test" />
<file md5sum="93cba83b0a67c0cef8fe130a8952b997" name="tests/bson-corpus/decimal128-3-valid-175.phpt" role="test" />
<file md5sum="48997373a82deeb3d6247a3a8f69c9e5" name="tests/bson-corpus/decimal128-3-valid-176.phpt" role="test" />
<file md5sum="2c21780484c66d146b6c302b6a9ef24d" name="tests/bson-corpus/decimal128-3-valid-177.phpt" role="test" />
<file md5sum="3c4f3fd0776cea8c85eb0566bd3eecf9" name="tests/bson-corpus/decimal128-3-valid-178.phpt" role="test" />
<file md5sum="9e47fa141e942425e40198e81cc58e21" name="tests/bson-corpus/decimal128-3-valid-179.phpt" role="test" />
<file md5sum="0a9b1e1d8237e9d2fc59eab65541eab7" name="tests/bson-corpus/decimal128-3-valid-180.phpt" role="test" />
<file md5sum="fb0e3b45bf9b37a69389463de602637b" name="tests/bson-corpus/decimal128-3-valid-181.phpt" role="test" />
<file md5sum="083f6f7e7d6ab8a25296e3ae8dab4431" name="tests/bson-corpus/decimal128-3-valid-182.phpt" role="test" />
<file md5sum="9c724ce427dcd09269506b9a5186e454" name="tests/bson-corpus/decimal128-3-valid-183.phpt" role="test" />
<file md5sum="6e981891fed29665088fbe135f41e655" name="tests/bson-corpus/decimal128-3-valid-184.phpt" role="test" />
<file md5sum="1b3a8aef835d217bc49606bcc74fd0c7" name="tests/bson-corpus/decimal128-3-valid-185.phpt" role="test" />
<file md5sum="0d3f20ee42be45f3f813a48eb786d4ec" name="tests/bson-corpus/decimal128-3-valid-186.phpt" role="test" />
<file md5sum="140615ad56a7df27dc5bf2556188742d" name="tests/bson-corpus/decimal128-3-valid-187.phpt" role="test" />
<file md5sum="712ad83f86e9448b83cff049278ba028" name="tests/bson-corpus/decimal128-3-valid-188.phpt" role="test" />
<file md5sum="360022ce16ac4511202806dc03e14fde" name="tests/bson-corpus/decimal128-3-valid-189.phpt" role="test" />
<file md5sum="5dd3670e50ea9ff970b8476ca60d83b8" name="tests/bson-corpus/decimal128-3-valid-190.phpt" role="test" />
<file md5sum="73046337955ec3bae9d0922daffcd427" name="tests/bson-corpus/decimal128-3-valid-191.phpt" role="test" />
<file md5sum="c462a78d6f40aedfd7b58940763a6c20" name="tests/bson-corpus/decimal128-3-valid-192.phpt" role="test" />
<file md5sum="9b8f91fc1501e576ab24f52be1e30ba1" name="tests/bson-corpus/decimal128-3-valid-193.phpt" role="test" />
<file md5sum="a532a4e29824ce0b627b5b143b65d0fe" name="tests/bson-corpus/decimal128-3-valid-194.phpt" role="test" />
<file md5sum="01a19f560dc8db673af080d0c6b5941b" name="tests/bson-corpus/decimal128-3-valid-195.phpt" role="test" />
<file md5sum="bd778de3e6c2cfa858cfd3a8bf37e811" name="tests/bson-corpus/decimal128-3-valid-196.phpt" role="test" />
<file md5sum="cb28728c07fc1cd0aa0982a14c20ffc2" name="tests/bson-corpus/decimal128-3-valid-197.phpt" role="test" />
<file md5sum="6950698eb6bd66b2165c26f14964bc53" name="tests/bson-corpus/decimal128-3-valid-198.phpt" role="test" />
<file md5sum="8597c30c2e1fa1d18e0245ce8581c6e0" name="tests/bson-corpus/decimal128-3-valid-199.phpt" role="test" />
<file md5sum="ceee2fbcfd57fc0de2acb9e9701e3260" name="tests/bson-corpus/decimal128-3-valid-200.phpt" role="test" />
<file md5sum="9330fdce1696d89426d812395807dd11" name="tests/bson-corpus/decimal128-3-valid-201.phpt" role="test" />
<file md5sum="ce9aa05b4a206216695d5d3d7dac15e5" name="tests/bson-corpus/decimal128-3-valid-202.phpt" role="test" />
<file md5sum="82988ead7eb7158ff08504203255d4ce" name="tests/bson-corpus/decimal128-3-valid-203.phpt" role="test" />
<file md5sum="5211151734cb7845f6ca881c4822f2af" name="tests/bson-corpus/decimal128-3-valid-204.phpt" role="test" />
<file md5sum="08872007e8a4d43559cd029905a0ea7a" name="tests/bson-corpus/decimal128-3-valid-205.phpt" role="test" />
<file md5sum="8a352ac08b09c3702a7cb9f94ca3782c" name="tests/bson-corpus/decimal128-3-valid-206.phpt" role="test" />
<file md5sum="0ed1395d851d6fd7c8ec955e7d6abef6" name="tests/bson-corpus/decimal128-3-valid-207.phpt" role="test" />
<file md5sum="b912be6a449bd362f1d8d0ab300b95d9" name="tests/bson-corpus/decimal128-3-valid-208.phpt" role="test" />
<file md5sum="6ee07b45fbb74d4c559ccbe35efc293c" name="tests/bson-corpus/decimal128-3-valid-209.phpt" role="test" />
<file md5sum="21ea04fa3cb5725b3e04fa14c05bb778" name="tests/bson-corpus/decimal128-3-valid-210.phpt" role="test" />
<file md5sum="ff27ad73fed31adabb9d4069bf677b6a" name="tests/bson-corpus/decimal128-3-valid-211.phpt" role="test" />
<file md5sum="6daec11b51ce64dc5d30a1670f82b416" name="tests/bson-corpus/decimal128-3-valid-212.phpt" role="test" />
<file md5sum="b157fb300844c85858748952eb1f0136" name="tests/bson-corpus/decimal128-3-valid-213.phpt" role="test" />
<file md5sum="eada6557a178326098659b652bffb6f7" name="tests/bson-corpus/decimal128-3-valid-214.phpt" role="test" />
<file md5sum="b7c179e9d03bb79e7f38dfea985b5451" name="tests/bson-corpus/decimal128-3-valid-215.phpt" role="test" />
<file md5sum="9f5b0b8d05a9389b6907b3170e77530f" name="tests/bson-corpus/decimal128-3-valid-216.phpt" role="test" />
<file md5sum="4dc58778aebb875091dc7629239d8d60" name="tests/bson-corpus/decimal128-3-valid-217.phpt" role="test" />
<file md5sum="7476a23f0971cbf57553ec8c0bab5bf0" name="tests/bson-corpus/decimal128-3-valid-218.phpt" role="test" />
<file md5sum="97edd04bd057eb5ca2c24031e6eba5f3" name="tests/bson-corpus/decimal128-3-valid-219.phpt" role="test" />
<file md5sum="c6e3767973b93b6968713b26feb61005" name="tests/bson-corpus/decimal128-3-valid-220.phpt" role="test" />
<file md5sum="dd81036ab03a0b3b29c3e10f65dd1167" name="tests/bson-corpus/decimal128-3-valid-221.phpt" role="test" />
<file md5sum="c1dfc4ed2e740b49317c47599ec04cc2" name="tests/bson-corpus/decimal128-3-valid-222.phpt" role="test" />
<file md5sum="924938a05241b9cb58c42b153a6f19f7" name="tests/bson-corpus/decimal128-3-valid-223.phpt" role="test" />
<file md5sum="06b5f11b33a213b005dfe03beaaf95f7" name="tests/bson-corpus/decimal128-3-valid-224.phpt" role="test" />
<file md5sum="f2bad9d1effa87b1dd58f6606af08073" name="tests/bson-corpus/decimal128-3-valid-225.phpt" role="test" />
<file md5sum="1e9729bb0b03105563b2a53d4775953f" name="tests/bson-corpus/decimal128-3-valid-226.phpt" role="test" />
<file md5sum="a2d2586990d6235091ae0bc62af2c0ed" name="tests/bson-corpus/decimal128-3-valid-227.phpt" role="test" />
<file md5sum="23ecaa35dafd649994a0761e457e58e1" name="tests/bson-corpus/decimal128-3-valid-228.phpt" role="test" />
<file md5sum="d725ef16afdd2b8d9e9e063eadc6bda5" name="tests/bson-corpus/decimal128-3-valid-229.phpt" role="test" />
<file md5sum="cd804ed178eef641ad8126160f60c3f9" name="tests/bson-corpus/decimal128-3-valid-230.phpt" role="test" />
<file md5sum="fc7c940b358bf23a45757262f89ef06c" name="tests/bson-corpus/decimal128-3-valid-231.phpt" role="test" />
<file md5sum="9e21d07a4603187e9df75c049fbc4253" name="tests/bson-corpus/decimal128-3-valid-232.phpt" role="test" />
<file md5sum="68d0740f71b41d8031284f39121c432b" name="tests/bson-corpus/decimal128-3-valid-233.phpt" role="test" />
<file md5sum="c617e2c306b33b771591f55e12e01208" name="tests/bson-corpus/decimal128-3-valid-234.phpt" role="test" />
<file md5sum="92f087343a550740a22cb4f147ecc19c" name="tests/bson-corpus/decimal128-3-valid-235.phpt" role="test" />
<file md5sum="ef33ecf4b5d635a23bb12cc598b35d44" name="tests/bson-corpus/decimal128-3-valid-236.phpt" role="test" />
<file md5sum="7a8871b4fe2ba1868fcecc9340c0eced" name="tests/bson-corpus/decimal128-3-valid-237.phpt" role="test" />
<file md5sum="a65b16089d9c1388507f72faf6cf78b1" name="tests/bson-corpus/decimal128-3-valid-238.phpt" role="test" />
<file md5sum="6bb8f86dbf852f8efe0245213de2eb84" name="tests/bson-corpus/decimal128-3-valid-239.phpt" role="test" />
<file md5sum="5df85c98d6df6dbac42a85d071c7865e" name="tests/bson-corpus/decimal128-3-valid-240.phpt" role="test" />
<file md5sum="bf03e00dee795accd3e1e0cb30e05b3f" name="tests/bson-corpus/decimal128-3-valid-241.phpt" role="test" />
<file md5sum="e8f2e8d8121aa520c8afb6c1663326c0" name="tests/bson-corpus/decimal128-3-valid-242.phpt" role="test" />
<file md5sum="2bc0cea0d1041b8ad89bd59fca7a9e95" name="tests/bson-corpus/decimal128-3-valid-243.phpt" role="test" />
<file md5sum="a468edc19a97ce6686138cb414112681" name="tests/bson-corpus/decimal128-3-valid-244.phpt" role="test" />
<file md5sum="a0e126c3b8d3585d8cce2c303812123a" name="tests/bson-corpus/decimal128-3-valid-245.phpt" role="test" />
<file md5sum="32ea1cbd06faf58561f3beb21429b560" name="tests/bson-corpus/decimal128-3-valid-246.phpt" role="test" />
<file md5sum="9ada258e7dc0acc1d2e378596403328b" name="tests/bson-corpus/decimal128-3-valid-247.phpt" role="test" />
<file md5sum="6771f016e25d45f7c05613ad4d5add16" name="tests/bson-corpus/decimal128-3-valid-248.phpt" role="test" />
<file md5sum="9838570a99e3dab015d88af89b92e89d" name="tests/bson-corpus/decimal128-3-valid-249.phpt" role="test" />
<file md5sum="1a140b0bc1b882ee7b02b88f87688ca6" name="tests/bson-corpus/decimal128-3-valid-250.phpt" role="test" />
<file md5sum="631514b3be3e9b6db9c8f153cb47acf5" name="tests/bson-corpus/decimal128-3-valid-251.phpt" role="test" />
<file md5sum="88259b7af442f89b6629385ea2926a7a" name="tests/bson-corpus/decimal128-3-valid-252.phpt" role="test" />
<file md5sum="71094365ff5ffe399bbdfd4547384ff6" name="tests/bson-corpus/decimal128-3-valid-253.phpt" role="test" />
<file md5sum="47ab6d71b44afcdca5c0850b6cdfd478" name="tests/bson-corpus/decimal128-3-valid-254.phpt" role="test" />
<file md5sum="fc2dd17d4e77d7a90e162f7c963c2a61" name="tests/bson-corpus/decimal128-3-valid-255.phpt" role="test" />
<file md5sum="7532348e202fd38267184aa19421c95b" name="tests/bson-corpus/decimal128-3-valid-256.phpt" role="test" />
<file md5sum="244aabca840c86b83f73cd8ed1ecdc73" name="tests/bson-corpus/decimal128-3-valid-257.phpt" role="test" />
<file md5sum="967774a176fa6d37767ed0ad67bce078" name="tests/bson-corpus/decimal128-3-valid-258.phpt" role="test" />
<file md5sum="f730195cd5ad240116873ccc889a2158" name="tests/bson-corpus/decimal128-3-valid-259.phpt" role="test" />
<file md5sum="37dfa12a09993dd5ed230653bc7a2749" name="tests/bson-corpus/decimal128-3-valid-260.phpt" role="test" />
<file md5sum="7f641888c1d64767483eb953920ee3c3" name="tests/bson-corpus/decimal128-3-valid-261.phpt" role="test" />
<file md5sum="d0d81043b17f21d5b48a6c3619621704" name="tests/bson-corpus/decimal128-3-valid-262.phpt" role="test" />
<file md5sum="65c1ceaf72034c16a6326ab92ce3db9a" name="tests/bson-corpus/decimal128-3-valid-263.phpt" role="test" />
<file md5sum="b90fa115d7cc79cff9467041f1ff88cc" name="tests/bson-corpus/decimal128-3-valid-264.phpt" role="test" />
<file md5sum="818d85ec516b3be881cf07d93c4b58b1" name="tests/bson-corpus/decimal128-3-valid-265.phpt" role="test" />
<file md5sum="4cc326f9f11387304e84d8ae0b47abde" name="tests/bson-corpus/decimal128-3-valid-266.phpt" role="test" />
<file md5sum="7947f21ea14627043f786e9f217a98e3" name="tests/bson-corpus/decimal128-3-valid-267.phpt" role="test" />
<file md5sum="560a751fb16a9503d36d61ee66f547e2" name="tests/bson-corpus/decimal128-3-valid-268.phpt" role="test" />
<file md5sum="37a698891f45ce70181ccd060859f26a" name="tests/bson-corpus/decimal128-3-valid-269.phpt" role="test" />
<file md5sum="4ca5d01239a10c2d362677d7ed53ab48" name="tests/bson-corpus/decimal128-3-valid-270.phpt" role="test" />
<file md5sum="8684ce51df7b66b332a36529f8ea6686" name="tests/bson-corpus/decimal128-3-valid-271.phpt" role="test" />
<file md5sum="64006f7ab150865f7ca6ba189c193f4b" name="tests/bson-corpus/decimal128-3-valid-272.phpt" role="test" />
<file md5sum="90780ccc70c16a0697e4ea72ca251657" name="tests/bson-corpus/decimal128-3-valid-273.phpt" role="test" />
<file md5sum="74bba8c8d15e67f951f8ddc2bb1b9472" name="tests/bson-corpus/decimal128-3-valid-274.phpt" role="test" />
<file md5sum="66cd26f8db476493d7d090313bc18672" name="tests/bson-corpus/decimal128-3-valid-275.phpt" role="test" />
<file md5sum="a949dce3a31bcd0b549f7983adfe72a0" name="tests/bson-corpus/decimal128-3-valid-276.phpt" role="test" />
<file md5sum="be9d225533c645fa0bb193260ff40bd0" name="tests/bson-corpus/decimal128-3-valid-277.phpt" role="test" />
<file md5sum="18b35ce00a65dc8368f4e56bb38bbf77" name="tests/bson-corpus/decimal128-3-valid-278.phpt" role="test" />
<file md5sum="bdcff02d5473887881c44db441714c81" name="tests/bson-corpus/decimal128-3-valid-279.phpt" role="test" />
<file md5sum="bd95b3c8fcbf4db3c17a0d55cb9988ae" name="tests/bson-corpus/decimal128-3-valid-280.phpt" role="test" />
<file md5sum="d4c0aaddc8e246f8479717db5282334d" name="tests/bson-corpus/decimal128-3-valid-281.phpt" role="test" />
<file md5sum="ea1cfb4d67c27f0978bb6057ae81d806" name="tests/bson-corpus/decimal128-3-valid-282.phpt" role="test" />
<file md5sum="6e9b351fbac950f5c5ac75dd6eda54d1" name="tests/bson-corpus/decimal128-3-valid-283.phpt" role="test" />
<file md5sum="01b6cdd3958739f9f83b458cf4d9ed16" name="tests/bson-corpus/decimal128-3-valid-284.phpt" role="test" />
<file md5sum="eaa2e9d2a5b52fc6879533745d23ca7b" name="tests/bson-corpus/decimal128-3-valid-285.phpt" role="test" />
<file md5sum="a49007eaed23bcb39e8c5ee1936d699c" name="tests/bson-corpus/decimal128-3-valid-286.phpt" role="test" />
<file md5sum="4f6a97dcfeb49296c8ccb33e5f2ec0d7" name="tests/bson-corpus/decimal128-3-valid-287.phpt" role="test" />
<file md5sum="48ac9563087836b90e64409f127082d3" name="tests/bson-corpus/decimal128-3-valid-288.phpt" role="test" />
<file md5sum="0d2332701d4c40459c689a15237e4999" name="tests/bson-corpus/decimal128-3-valid-289.phpt" role="test" />
<file md5sum="d05559eefd3303a4cd6bdd1319098f95" name="tests/bson-corpus/decimal128-3-valid-290.phpt" role="test" />
<file md5sum="340d602a6a9380cc1ec87d5ddd24618a" name="tests/bson-corpus/decimal128-3-valid-291.phpt" role="test" />
<file md5sum="cd9e8cc681b8d5f2883c295263ba681a" name="tests/bson-corpus/decimal128-3-valid-292.phpt" role="test" />
<file md5sum="7b2d84471d3c1803536d56843a3b7189" name="tests/bson-corpus/decimal128-3-valid-293.phpt" role="test" />
<file md5sum="3188b5e9b291d069a71994f6510249c2" name="tests/bson-corpus/decimal128-3-valid-294.phpt" role="test" />
<file md5sum="450f30259936c99fba3c444f39f2fef2" name="tests/bson-corpus/decimal128-3-valid-295.phpt" role="test" />
<file md5sum="89cecda0b20df0fb0641cbdde7a8806c" name="tests/bson-corpus/decimal128-3-valid-296.phpt" role="test" />
<file md5sum="96dabbf4c78cdcd5e929ecc4093215fa" name="tests/bson-corpus/decimal128-3-valid-297.phpt" role="test" />
<file md5sum="f077760907b7746f5472b17bb288b1d6" name="tests/bson-corpus/decimal128-3-valid-298.phpt" role="test" />
<file md5sum="4581bb3a705fc587242055a981aa7384" name="tests/bson-corpus/decimal128-3-valid-299.phpt" role="test" />
<file md5sum="535616671b6f4a39359f54826f9a9323" name="tests/bson-corpus/decimal128-3-valid-300.phpt" role="test" />
<file md5sum="b196774e203878232feb1875b4a8c1fb" name="tests/bson-corpus/decimal128-3-valid-301.phpt" role="test" />
<file md5sum="e6b5fd9b0e5ef6620ea3224697e69ef6" name="tests/bson-corpus/decimal128-3-valid-302.phpt" role="test" />
<file md5sum="7f2d9df7834227fb0e6cdba1380e901c" name="tests/bson-corpus/decimal128-3-valid-303.phpt" role="test" />
<file md5sum="70f792cf0e62c2656b85c1930e54f462" name="tests/bson-corpus/decimal128-3-valid-304.phpt" role="test" />
<file md5sum="ccc5ac34313374e9d7c86f12fc0604ac" name="tests/bson-corpus/decimal128-3-valid-305.phpt" role="test" />
<file md5sum="0e62db478c8d512e0c0a447ff6729ac9" name="tests/bson-corpus/decimal128-3-valid-306.phpt" role="test" />
<file md5sum="8f068e9d28afab1818195d73d2a7a509" name="tests/bson-corpus/decimal128-3-valid-307.phpt" role="test" />
<file md5sum="50e8124f489022a6ffbbac75a5947861" name="tests/bson-corpus/decimal128-3-valid-308.phpt" role="test" />
<file md5sum="ba047e7921fca83be0bbf1ffb9ff32e6" name="tests/bson-corpus/decimal128-4-parseError-001.phpt" role="test" />
<file md5sum="96c4e11223d6a702ce7c160d7f33ec6e" name="tests/bson-corpus/decimal128-4-parseError-002.phpt" role="test" />
<file md5sum="2975e7043d01c304620a4a635c1df627" name="tests/bson-corpus/decimal128-4-parseError-003.phpt" role="test" />
<file md5sum="66ee3e45b68893588ae091b3da40b1c9" name="tests/bson-corpus/decimal128-4-parseError-004.phpt" role="test" />
<file md5sum="5f79cc977af6f42f0d16e23b6b78787a" name="tests/bson-corpus/decimal128-4-parseError-005.phpt" role="test" />
<file md5sum="905801853974398dd4df272c70db9f1f" name="tests/bson-corpus/decimal128-4-parseError-006.phpt" role="test" />
<file md5sum="930136040e99d94cac48f2dc1ea1b4ec" name="tests/bson-corpus/decimal128-4-parseError-007.phpt" role="test" />
<file md5sum="d200890cddd844aa3e417afdfaf66258" name="tests/bson-corpus/decimal128-4-parseError-008.phpt" role="test" />
<file md5sum="6929f5e4aa871b5568760bc96d01963f" name="tests/bson-corpus/decimal128-4-parseError-009.phpt" role="test" />
<file md5sum="14a207527ae35bbbf707219236f86f63" name="tests/bson-corpus/decimal128-4-parseError-010.phpt" role="test" />
<file md5sum="9828ca9e0e1d1af8bba3896ad969cbdc" name="tests/bson-corpus/decimal128-4-parseError-011.phpt" role="test" />
<file md5sum="eeb65b1dc4411a057e3437efd758cad5" name="tests/bson-corpus/decimal128-4-parseError-012.phpt" role="test" />
<file md5sum="ba731b0fd3b5e6f12980c65d3cd4c8c2" name="tests/bson-corpus/decimal128-4-parseError-013.phpt" role="test" />
<file md5sum="e185b77c3f7e11690bd948cff345f6a2" name="tests/bson-corpus/decimal128-4-parseError-014.phpt" role="test" />
<file md5sum="9c019336f3754089c347f727e81fa529" name="tests/bson-corpus/decimal128-4-parseError-015.phpt" role="test" />
<file md5sum="0eee95f4870d4d75daeba9d37a74a3da" name="tests/bson-corpus/decimal128-4-parseError-016.phpt" role="test" />
<file md5sum="9d327df701b1303cf8562508d1b73cc6" name="tests/bson-corpus/decimal128-4-parseError-017.phpt" role="test" />
<file md5sum="1ba071fa83d1712f9e18182a7c609d08" name="tests/bson-corpus/decimal128-4-parseError-018.phpt" role="test" />
<file md5sum="2e18b7b9617a104ca7944660cfbe7d31" name="tests/bson-corpus/decimal128-4-parseError-019.phpt" role="test" />
<file md5sum="54546dd203137c1ad0a58c5fd0144e7f" name="tests/bson-corpus/decimal128-4-parseError-020.phpt" role="test" />
<file md5sum="5169c970d4202cb623f9a7d664fe01f2" name="tests/bson-corpus/decimal128-4-valid-001.phpt" role="test" />
<file md5sum="1eba862b4aa60d111c16c6faf3b80f09" name="tests/bson-corpus/decimal128-4-valid-002.phpt" role="test" />
<file md5sum="da29e9a46961a4feb22c0b9393e1e36d" name="tests/bson-corpus/decimal128-4-valid-003.phpt" role="test" />
<file md5sum="584b10ce8fc2626e965ea68c9e3fa829" name="tests/bson-corpus/decimal128-4-valid-004.phpt" role="test" />
<file md5sum="c142547e8c531f53ccdd34c466b836a5" name="tests/bson-corpus/decimal128-4-valid-005.phpt" role="test" />
<file md5sum="06c186afe899c787f64bb151d3cf04e0" name="tests/bson-corpus/decimal128-4-valid-006.phpt" role="test" />
<file md5sum="50517c7115935799b9ee006f676fdff6" name="tests/bson-corpus/decimal128-4-valid-007.phpt" role="test" />
<file md5sum="1e4e7b8bf6b340bbd3ba7f41095bff8f" name="tests/bson-corpus/decimal128-4-valid-008.phpt" role="test" />
<file md5sum="854cd9d9659e37b517a636ef8647790f" name="tests/bson-corpus/decimal128-4-valid-009.phpt" role="test" />
<file md5sum="b6546de4ba3d2353494dbc9314362834" name="tests/bson-corpus/decimal128-4-valid-010.phpt" role="test" />
<file md5sum="38e99523af154d8e0f7765fd3c1daa82" name="tests/bson-corpus/decimal128-4-valid-011.phpt" role="test" />
<file md5sum="6dc0180bb23776e05347959122c09383" name="tests/bson-corpus/decimal128-4-valid-012.phpt" role="test" />
<file md5sum="ca5e4c8dc112377a2f36823f0c034388" name="tests/bson-corpus/decimal128-4-valid-013.phpt" role="test" />
<file md5sum="55ce9b1d08a495dc0ee1efad2ac94cae" name="tests/bson-corpus/decimal128-5-valid-001.phpt" role="test" />
<file md5sum="f34033470790d5410a784517119eff02" name="tests/bson-corpus/decimal128-5-valid-002.phpt" role="test" />
<file md5sum="ff8c889e2f5979095afee2b3ae433dde" name="tests/bson-corpus/decimal128-5-valid-003.phpt" role="test" />
<file md5sum="1f9a5a0ecc9b999aa981a11922565b1f" name="tests/bson-corpus/decimal128-5-valid-004.phpt" role="test" />
<file md5sum="de52d2fbf33f8fa6f96aa51192e45ce6" name="tests/bson-corpus/decimal128-5-valid-005.phpt" role="test" />
<file md5sum="c7a2a8ac679cbb9aac21773bf4760ff0" name="tests/bson-corpus/decimal128-5-valid-006.phpt" role="test" />
<file md5sum="f25279ed58dd3818e14408540b4e67cb" name="tests/bson-corpus/decimal128-5-valid-007.phpt" role="test" />
<file md5sum="5f9cbe4dd336fbef818e6a05a6705cdb" name="tests/bson-corpus/decimal128-5-valid-008.phpt" role="test" />
<file md5sum="bad9ac38ff0f0e555703b04576307bb9" name="tests/bson-corpus/decimal128-5-valid-009.phpt" role="test" />
<file md5sum="f8d36fbe632ccde721d2f9c67e70ce9f" name="tests/bson-corpus/decimal128-5-valid-010.phpt" role="test" />
<file md5sum="a2c4642a81607e15b402a6392e3c78d3" name="tests/bson-corpus/decimal128-5-valid-011.phpt" role="test" />
<file md5sum="03fe1b0bf3757f0097174ec2372963ae" name="tests/bson-corpus/decimal128-5-valid-012.phpt" role="test" />
<file md5sum="f03f515d198406eea85ef3ba39a4071a" name="tests/bson-corpus/decimal128-5-valid-013.phpt" role="test" />
<file md5sum="0b44f1d906671118fa80c8cfaa3aa071" name="tests/bson-corpus/decimal128-5-valid-014.phpt" role="test" />
<file md5sum="a46b0d591bd7453e0cdd770680978d47" name="tests/bson-corpus/decimal128-5-valid-015.phpt" role="test" />
<file md5sum="d6c61adc530e7136239974038800d998" name="tests/bson-corpus/decimal128-5-valid-016.phpt" role="test" />
<file md5sum="80bd8dc91740c7e8fa57b810c9219d5b" name="tests/bson-corpus/decimal128-5-valid-017.phpt" role="test" />
<file md5sum="9687c315985185080d5db69f36ae1a5c" name="tests/bson-corpus/decimal128-5-valid-018.phpt" role="test" />
<file md5sum="869c1d780811c8817d069123fd7b1935" name="tests/bson-corpus/decimal128-5-valid-019.phpt" role="test" />
<file md5sum="0db62a7dbcc7d587b432801da9c792dd" name="tests/bson-corpus/decimal128-5-valid-020.phpt" role="test" />
<file md5sum="23a43f580c34cea86d0a4092aaf88c8a" name="tests/bson-corpus/decimal128-5-valid-021.phpt" role="test" />
<file md5sum="5b61fb66b3a840012853df1cbda42b78" name="tests/bson-corpus/decimal128-5-valid-022.phpt" role="test" />
<file md5sum="a2b92a88661914d5324f8c770a5b72a7" name="tests/bson-corpus/decimal128-5-valid-023.phpt" role="test" />
<file md5sum="c11892d2d57a803357aa2ca41ac2b8f7" name="tests/bson-corpus/decimal128-5-valid-024.phpt" role="test" />
<file md5sum="37c42c49f7e58b4a20280c37ea1c4abd" name="tests/bson-corpus/decimal128-5-valid-025.phpt" role="test" />
<file md5sum="c3cb746105800f68ff854dd68a1fabc5" name="tests/bson-corpus/decimal128-5-valid-026.phpt" role="test" />
<file md5sum="6a1830a7d640de5bc610073d2e10a743" name="tests/bson-corpus/decimal128-5-valid-027.phpt" role="test" />
<file md5sum="9d6a5511163a40caef95296e83c03ba1" name="tests/bson-corpus/decimal128-5-valid-028.phpt" role="test" />
<file md5sum="fe4f5499ddf1f590be101cca152d1bb9" name="tests/bson-corpus/decimal128-5-valid-029.phpt" role="test" />
<file md5sum="b22c078a19cd728863674e0b526cfea8" name="tests/bson-corpus/decimal128-5-valid-030.phpt" role="test" />
<file md5sum="ad33d7f598f94a812dd3425a104067fa" name="tests/bson-corpus/decimal128-5-valid-031.phpt" role="test" />
<file md5sum="08b8592b8734194bdacef7132e71178c" name="tests/bson-corpus/decimal128-5-valid-032.phpt" role="test" />
<file md5sum="7cc72cb56165af6c577a27bef9703df6" name="tests/bson-corpus/decimal128-5-valid-033.phpt" role="test" />
<file md5sum="060753bf3bee18b7139266ebf79e2c80" name="tests/bson-corpus/decimal128-5-valid-034.phpt" role="test" />
<file md5sum="beeb84bf5a4e07c813bd04c827382a4b" name="tests/bson-corpus/decimal128-5-valid-035.phpt" role="test" />
<file md5sum="2e1d68a8e73312ad9b28248940f6f92d" name="tests/bson-corpus/decimal128-5-valid-036.phpt" role="test" />
<file md5sum="63c5a0f1e2a535d0c4602fe7b2810cde" name="tests/bson-corpus/decimal128-5-valid-037.phpt" role="test" />
<file md5sum="20228d0605f9f854b85e33f24be7aec0" name="tests/bson-corpus/decimal128-5-valid-038.phpt" role="test" />
<file md5sum="30b4da1e9a29b9da83ec0b794ba2fd90" name="tests/bson-corpus/decimal128-5-valid-039.phpt" role="test" />
<file md5sum="bc9e9f12c44e0ae8e656f798dc70441b" name="tests/bson-corpus/decimal128-5-valid-040.phpt" role="test" />
<file md5sum="9a3723451a6a2de7180fe0fd7788bb04" name="tests/bson-corpus/decimal128-5-valid-041.phpt" role="test" />
<file md5sum="1b3c65aefede804ac3ead8b0cb53b86e" name="tests/bson-corpus/decimal128-5-valid-042.phpt" role="test" />
<file md5sum="d2934411639a993fd1796cf9719f147e" name="tests/bson-corpus/decimal128-5-valid-043.phpt" role="test" />
<file md5sum="59039e0eb490c96efab01dcf613fdb29" name="tests/bson-corpus/decimal128-5-valid-044.phpt" role="test" />
<file md5sum="96347b3798efd01b3566b62cd1a9ba5e" name="tests/bson-corpus/decimal128-5-valid-045.phpt" role="test" />
<file md5sum="5d04de9a1b88ea6a23bc0e93fdadb940" name="tests/bson-corpus/decimal128-5-valid-046.phpt" role="test" />
<file md5sum="4bbe2cfcf22e9c4d85b7b19aa0ae96e3" name="tests/bson-corpus/decimal128-5-valid-047.phpt" role="test" />
<file md5sum="d78b87a4becb9b5ab3e7ce7578e63a0e" name="tests/bson-corpus/decimal128-5-valid-048.phpt" role="test" />
<file md5sum="df40dcad5ed42db814bf9920eba71101" name="tests/bson-corpus/decimal128-5-valid-049.phpt" role="test" />
<file md5sum="5088360f8c88410066353583a1670197" name="tests/bson-corpus/decimal128-5-valid-050.phpt" role="test" />
<file md5sum="057fe8e6a88b849b95c09f0054b16dc0" name="tests/bson-corpus/decimal128-5-valid-051.phpt" role="test" />
<file md5sum="8d126da719d2758e20f1d40fe5c67496" name="tests/bson-corpus/decimal128-5-valid-052.phpt" role="test" />
<file md5sum="54e108577f8d564f1e39b23dfb59a378" name="tests/bson-corpus/decimal128-5-valid-053.phpt" role="test" />
<file md5sum="9374a2cdddf9f05259667e905df80fef" name="tests/bson-corpus/decimal128-5-valid-054.phpt" role="test" />
<file md5sum="2083ea48527b612f315c00d9960d86e2" name="tests/bson-corpus/decimal128-5-valid-055.phpt" role="test" />
<file md5sum="a762290ff74783d00d2903ee529e861f" name="tests/bson-corpus/decimal128-5-valid-056.phpt" role="test" />
<file md5sum="9d9ea9e768ff46f44cf61529978ed7b3" name="tests/bson-corpus/decimal128-5-valid-057.phpt" role="test" />
<file md5sum="681c1cf33bfe7a343667fc8cc3e55ee6" name="tests/bson-corpus/decimal128-5-valid-058.phpt" role="test" />
<file md5sum="29f3aea8791610d01d3b88ebf785e968" name="tests/bson-corpus/decimal128-5-valid-059.phpt" role="test" />
<file md5sum="6ef48821cf775a4275f60c36e7df77e6" name="tests/bson-corpus/decimal128-5-valid-060.phpt" role="test" />
<file md5sum="9621186b68b7a53e3407c639c5af7dcc" name="tests/bson-corpus/decimal128-5-valid-061.phpt" role="test" />
<file md5sum="0a0c829699d2005842d977e3da48e9f6" name="tests/bson-corpus/decimal128-5-valid-062.phpt" role="test" />
<file md5sum="21ccb1a0e2ba5da0aef502044aa89cc5" name="tests/bson-corpus/decimal128-5-valid-063.phpt" role="test" />
<file md5sum="b8ff7d055f74b50904572668e07cda11" name="tests/bson-corpus/decimal128-5-valid-064.phpt" role="test" />
<file md5sum="0602af5499447d5eb415bbdda91b32a5" name="tests/bson-corpus/decimal128-5-valid-065.phpt" role="test" />
<file md5sum="a63e0970057c23a90f8d9fd3ff1d50be" name="tests/bson-corpus/decimal128-5-valid-066.phpt" role="test" />
<file md5sum="a05ea33380fc111a6faa36bb19c4c19b" name="tests/bson-corpus/decimal128-5-valid-067.phpt" role="test" />
<file md5sum="9d619c3b0719e7e6075adddc0ea9dbfd" name="tests/bson-corpus/decimal128-6-parseError-001.phpt" role="test" />
<file md5sum="5e5e28715e20456528ad5de48bd7349e" name="tests/bson-corpus/decimal128-6-parseError-002.phpt" role="test" />
<file md5sum="0bcacd7da821fef56d8133be73d34e3f" name="tests/bson-corpus/decimal128-6-parseError-003.phpt" role="test" />
<file md5sum="b330cdf56d272be270e82e2341aff1f4" name="tests/bson-corpus/decimal128-6-parseError-004.phpt" role="test" />
<file md5sum="087821837bfc5cc35f93663233652f5e" name="tests/bson-corpus/decimal128-6-parseError-005.phpt" role="test" />
<file md5sum="b7ff0e65afd02d5000989e467d212c51" name="tests/bson-corpus/decimal128-6-parseError-006.phpt" role="test" />
<file md5sum="32b737ae134b0641800c408a9bc4f4fc" name="tests/bson-corpus/decimal128-6-parseError-007.phpt" role="test" />
<file md5sum="722f4553265a2f16492fedd8cadf5dea" name="tests/bson-corpus/decimal128-6-parseError-008.phpt" role="test" />
<file md5sum="2e6d342b33ad7b6fa79067ccf36a2a9e" name="tests/bson-corpus/decimal128-6-parseError-009.phpt" role="test" />
<file md5sum="da34bfaf1576dc9a3a0c7152ab17551e" name="tests/bson-corpus/decimal128-6-parseError-010.phpt" role="test" />
<file md5sum="86ce002a308067909f42b96eb21308b2" name="tests/bson-corpus/decimal128-6-parseError-011.phpt" role="test" />
<file md5sum="6addc588a3cbc00449082c46a2e121db" name="tests/bson-corpus/decimal128-6-parseError-012.phpt" role="test" />
<file md5sum="473b1b080710a4937c2d7b1586ee40b3" name="tests/bson-corpus/decimal128-6-parseError-013.phpt" role="test" />
<file md5sum="dd0898b2e0802cb47b30753e9da159e3" name="tests/bson-corpus/decimal128-6-parseError-014.phpt" role="test" />
<file md5sum="58eb765b37e2e284a67383aaf3359788" name="tests/bson-corpus/decimal128-6-parseError-015.phpt" role="test" />
<file md5sum="7f360fae68599d98fff6b09d9e2ea8d0" name="tests/bson-corpus/decimal128-6-parseError-016.phpt" role="test" />
<file md5sum="be7a3fadb14f640d88c8423932975813" name="tests/bson-corpus/decimal128-6-parseError-017.phpt" role="test" />
<file md5sum="7a0603436c1795a2a1613a83f90901b7" name="tests/bson-corpus/decimal128-6-parseError-018.phpt" role="test" />
<file md5sum="7d1dccee0bd183c2baf5c9e0c90e6fbb" name="tests/bson-corpus/decimal128-6-parseError-019.phpt" role="test" />
<file md5sum="b979e1cff5d7aac6ac47239fa21baa72" name="tests/bson-corpus/decimal128-6-parseError-020.phpt" role="test" />
<file md5sum="08834e4aa640b820ef329690c28ba6ca" name="tests/bson-corpus/decimal128-6-parseError-021.phpt" role="test" />
<file md5sum="df16fe00ed13b38e8d7c648bd6d89c97" name="tests/bson-corpus/decimal128-6-parseError-022.phpt" role="test" />
<file md5sum="26b48d1f949d0e3aed0b9dedfc185afd" name="tests/bson-corpus/decimal128-6-parseError-023.phpt" role="test" />
<file md5sum="1078595f5fac6bee1267b4d263c6c8cb" name="tests/bson-corpus/decimal128-6-parseError-024.phpt" role="test" />
<file md5sum="e047a839813f6d9e94bae49691dd6701" name="tests/bson-corpus/decimal128-6-parseError-025.phpt" role="test" />
<file md5sum="12a013fe95a88779c348c4cb773115ad" name="tests/bson-corpus/decimal128-6-parseError-026.phpt" role="test" />
<file md5sum="354ff6b5d986470794f59886b683ac70" name="tests/bson-corpus/decimal128-6-parseError-027.phpt" role="test" />
<file md5sum="3ef809210e108a7dc60645c4140f07f9" name="tests/bson-corpus/decimal128-6-parseError-028.phpt" role="test" />
<file md5sum="50f7c0c8c816658e51a3946671bc02b4" name="tests/bson-corpus/decimal128-6-parseError-029.phpt" role="test" />
<file md5sum="93988289538ba9bebb3c9130d0287dd0" name="tests/bson-corpus/decimal128-6-parseError-030.phpt" role="test" />
<file md5sum="6bd10e968b1852735c6047be0e22e523" name="tests/bson-corpus/decimal128-6-parseError-031.phpt" role="test" />
<file md5sum="739125a03b1d42ac4f928dfd98a3f306" name="tests/bson-corpus/decimal128-7-parseError-001.phpt" role="test" />
<file md5sum="3e70c7fd9860e1b557c951895227973b" name="tests/bson-corpus/decimal128-7-parseError-002.phpt" role="test" />
<file md5sum="5680032198806e7625acfcdb227dc67a" name="tests/bson-corpus/decimal128-7-parseError-003.phpt" role="test" />
<file md5sum="bf63ba62a9265425b447d7285f045b28" name="tests/bson-corpus/decimal128-7-parseError-004.phpt" role="test" />
<file md5sum="9319f1a49ec2f2449283c2fd44d8275a" name="tests/bson-corpus/decimal128-7-parseError-005.phpt" role="test" />
<file md5sum="770cd1d3f59b161db855c5838fad7390" name="tests/bson-corpus/decimal128-7-parseError-006.phpt" role="test" />
<file md5sum="0dd5f74d70bd4d09fefaccc0ae3b326c" name="tests/bson-corpus/decimal128-7-parseError-007.phpt" role="test" />
<file md5sum="aec5da5a25c84f34b33d65f347a83c10" name="tests/bson-corpus/decimal128-7-parseError-008.phpt" role="test" />
<file md5sum="ab4f84a31f21de6c7a5a75381d8a8760" name="tests/bson-corpus/decimal128-7-parseError-009.phpt" role="test" />
<file md5sum="e6c669fe4746f25af030f19ca2efe96f" name="tests/bson-corpus/decimal128-7-parseError-010.phpt" role="test" />
<file md5sum="1c512a25e6b3b5eeb7efb02607c01351" name="tests/bson-corpus/decimal128-7-parseError-011.phpt" role="test" />
<file md5sum="5ec3a512414e516a23691ed7ce9c8409" name="tests/bson-corpus/decimal128-7-parseError-012.phpt" role="test" />
<file md5sum="83e1d3549c3e354b4ef47b3a97a42304" name="tests/bson-corpus/decimal128-7-parseError-013.phpt" role="test" />
<file md5sum="d5a3fe0a6355b408d2b5b1e82164dc06" name="tests/bson-corpus/decimal128-7-parseError-014.phpt" role="test" />
<file md5sum="03c2144e7ed68d510609d1882a0d3fb5" name="tests/bson-corpus/decimal128-7-parseError-015.phpt" role="test" />
<file md5sum="5bc01966bae4d9965ca5ab8e64d55d21" name="tests/bson-corpus/decimal128-7-parseError-016.phpt" role="test" />
<file md5sum="19e0f71895b66144e92440e3dcd0ff23" name="tests/bson-corpus/decimal128-7-parseError-017.phpt" role="test" />
<file md5sum="2f9e63cdb60253c97b4a1b709a35b6be" name="tests/bson-corpus/decimal128-7-parseError-018.phpt" role="test" />
<file md5sum="aeaa29b049aae5916bb8cccc8d47e7e8" name="tests/bson-corpus/decimal128-7-parseError-019.phpt" role="test" />
<file md5sum="b103339bc111045d962a5da60907a954" name="tests/bson-corpus/decimal128-7-parseError-020.phpt" role="test" />
<file md5sum="77c0d904a85bc98f4c0d60637a167d59" name="tests/bson-corpus/decimal128-7-parseError-021.phpt" role="test" />
<file md5sum="526a91c29eedfb7e792e31284bce93c2" name="tests/bson-corpus/decimal128-7-parseError-022.phpt" role="test" />
<file md5sum="7fad1b695028cee5b3524ae7795671dd" name="tests/bson-corpus/decimal128-7-parseError-023.phpt" role="test" />
<file md5sum="a284eeae3ac0dc6913c5028765472178" name="tests/bson-corpus/decimal128-7-parseError-024.phpt" role="test" />
<file md5sum="de5e0cfba4ba4e4db4dc6f9bac610bf3" name="tests/bson-corpus/decimal128-7-parseError-025.phpt" role="test" />
<file md5sum="5e8f71033a1f75d2caad14db4806d8b7" name="tests/bson-corpus/decimal128-7-parseError-026.phpt" role="test" />
<file md5sum="3e9808fa4362a86083025c8418b6b300" name="tests/bson-corpus/decimal128-7-parseError-027.phpt" role="test" />
<file md5sum="46c182f2fb62174dbe5ad42d52b1230d" name="tests/bson-corpus/decimal128-7-parseError-028.phpt" role="test" />
<file md5sum="3df633a71755c619e70d3961f3ed778d" name="tests/bson-corpus/decimal128-7-parseError-029.phpt" role="test" />
<file md5sum="7f7590bd2c639fb10e553ea2f1e40a97" name="tests/bson-corpus/decimal128-7-parseError-030.phpt" role="test" />
<file md5sum="b827cc6fea8a64cc770452afa2cb45cb" name="tests/bson-corpus/decimal128-7-parseError-031.phpt" role="test" />
<file md5sum="98f885b5d4b9333ea213f4be4f8ddca6" name="tests/bson-corpus/decimal128-7-parseError-032.phpt" role="test" />
<file md5sum="546c9fa342e790e86e34f6b5c6de3b84" name="tests/bson-corpus/decimal128-7-parseError-033.phpt" role="test" />
<file md5sum="2b073b2ea1bc7fd605780f947ceac75e" name="tests/bson-corpus/decimal128-7-parseError-034.phpt" role="test" />
<file md5sum="9e92800972333c69386eb81e0e3d8ec9" name="tests/bson-corpus/decimal128-7-parseError-035.phpt" role="test" />
<file md5sum="ac308002b7f73ff45b68ce36b38a7275" name="tests/bson-corpus/decimal128-7-parseError-036.phpt" role="test" />
<file md5sum="a10da36d1c1c27079c245ad31d2bce08" name="tests/bson-corpus/decimal128-7-parseError-037.phpt" role="test" />
<file md5sum="c11703f2e41a1e40e993465cc1f5a865" name="tests/bson-corpus/decimal128-7-parseError-038.phpt" role="test" />
<file md5sum="ef094591196f8a16df0cfeb14d7fa8fd" name="tests/bson-corpus/decimal128-7-parseError-039.phpt" role="test" />
<file md5sum="d44551a47e6182cf4c22245df9a49863" name="tests/bson-corpus/decimal128-7-parseError-040.phpt" role="test" />
<file md5sum="bfd6aefac1a28c8f5a576f646d1c8f4b" name="tests/bson-corpus/decimal128-7-parseError-041.phpt" role="test" />
<file md5sum="5e667f745c3bf9dc68b4878a6de2ca7f" name="tests/bson-corpus/decimal128-7-parseError-042.phpt" role="test" />
<file md5sum="e8eb51d644cc1ad01df9f2fe5f8d615c" name="tests/bson-corpus/decimal128-7-parseError-043.phpt" role="test" />
<file md5sum="d0ab46feebf5f41b736c28c25be9c41d" name="tests/bson-corpus/decimal128-7-parseError-044.phpt" role="test" />
<file md5sum="5195470ca981d3b793e4dc7ae16c7b80" name="tests/bson-corpus/decimal128-7-parseError-045.phpt" role="test" />
<file md5sum="5ed083d6153fb2be44b2bdd69cb3ad66" name="tests/bson-corpus/decimal128-7-parseError-046.phpt" role="test" />
<file md5sum="b90aad87eb6e3fdc0f7069a6217bdeb6" name="tests/bson-corpus/decimal128-7-parseError-047.phpt" role="test" />
<file md5sum="24a773cfb9b0f6d19d2f5d23e2d4734f" name="tests/bson-corpus/decimal128-7-parseError-048.phpt" role="test" />
<file md5sum="d49c37b3be2913bbf9e94460aaa6dea5" name="tests/bson-corpus/decimal128-7-parseError-049.phpt" role="test" />
<file md5sum="a8e25353f491c8abcd83ecb445cdbef7" name="tests/bson-corpus/decimal128-7-parseError-050.phpt" role="test" />
<file md5sum="7d957b915a4677d1a743b82ed69b8399" name="tests/bson-corpus/decimal128-7-parseError-051.phpt" role="test" />
<file md5sum="a6c028651988ac5aef2583662d03606d" name="tests/bson-corpus/decimal128-7-parseError-052.phpt" role="test" />
<file md5sum="8b9d5a234c5003562c06a22a6055b9a9" name="tests/bson-corpus/decimal128-7-parseError-053.phpt" role="test" />
<file md5sum="db576d750b955b8133bc3a3ca17b268d" name="tests/bson-corpus/decimal128-7-parseError-054.phpt" role="test" />
<file md5sum="0fe5c131ea839136dbe43eb34956ddea" name="tests/bson-corpus/decimal128-7-parseError-055.phpt" role="test" />
<file md5sum="c8a6b9a6dc2b7fd0859748bf004444ad" name="tests/bson-corpus/decimal128-7-parseError-056.phpt" role="test" />
<file md5sum="e6317794fe425616e7384eaee73d508d" name="tests/bson-corpus/decimal128-7-parseError-057.phpt" role="test" />
<file md5sum="ae9adaf19631cf1b0fc10f5ef2d73fc9" name="tests/bson-corpus/decimal128-7-parseError-058.phpt" role="test" />
<file md5sum="de4ea2c89f6188610d9b754bbe699a64" name="tests/bson-corpus/decimal128-7-parseError-059.phpt" role="test" />
<file md5sum="2ab16b6b73a8fd7a26850ed267dc7839" name="tests/bson-corpus/decimal128-7-parseError-060.phpt" role="test" />
<file md5sum="e9243a30ec1d8601e3349c95a52bb281" name="tests/bson-corpus/decimal128-7-parseError-061.phpt" role="test" />
<file md5sum="deb3afb234ab883875f98adae9ac22c7" name="tests/bson-corpus/decimal128-7-parseError-062.phpt" role="test" />
<file md5sum="7f9efd9d04a8f1dc79a5b0b89fd01591" name="tests/bson-corpus/decimal128-7-parseError-063.phpt" role="test" />
<file md5sum="6e2d1fd08e5c5119473aec4a053a8b28" name="tests/bson-corpus/decimal128-7-parseError-064.phpt" role="test" />
<file md5sum="f01b69a5459752b843c52b2bfa3abe94" name="tests/bson-corpus/decimal128-7-parseError-065.phpt" role="test" />
<file md5sum="5f9f1ec42e3cb971c969c02e21861d35" name="tests/bson-corpus/decimal128-7-parseError-066.phpt" role="test" />
<file md5sum="5f35e09da70142bacb52211bc1c56723" name="tests/bson-corpus/decimal128-7-parseError-067.phpt" role="test" />
<file md5sum="670bba129ff3d44ebcaa75bb1eef54db" name="tests/bson-corpus/decimal128-7-parseError-068.phpt" role="test" />
<file md5sum="9822ce5f455adcb099fb8608ec00447e" name="tests/bson-corpus/decimal128-7-parseError-069.phpt" role="test" />
<file md5sum="3d91bc48b724ce35db3d8ee571201bef" name="tests/bson-corpus/decimal128-7-parseError-070.phpt" role="test" />
<file md5sum="4e27519c86e60695762547d22250a30d" name="tests/bson-corpus/decimal128-7-parseError-071.phpt" role="test" />
<file md5sum="2ad0c662a34e4860d591491568519e0c" name="tests/bson-corpus/decimal128-7-parseError-072.phpt" role="test" />
<file md5sum="8cb216dfac5cb18d1dc67b217b03a75f" name="tests/bson-corpus/decimal128-7-parseError-073.phpt" role="test" />
<file md5sum="102157c1968d887e482664937712f960" name="tests/bson-corpus/decimal128-7-parseError-074.phpt" role="test" />
<file md5sum="1383c9faaea4308830abf57c319d1416" name="tests/bson-corpus/decimal128-7-parseError-075.phpt" role="test" />
<file md5sum="bdc6b09eadb365c1ca90fa5abdcdcb72" name="tests/bson-corpus/decimal128-7-parseError-076.phpt" role="test" />
<file md5sum="fcb39e6d22bec7ae00715559c73d4021" name="tests/bson-corpus/decimal128-7-parseError-077.phpt" role="test" />
<file md5sum="883d74890811efba08b9bdcd00427933" name="tests/bson-corpus/decimal128-7-parseError-078.phpt" role="test" />
<file md5sum="b70276e215fe563edbb78b9ab826ac94" name="tests/bson-corpus/decimal128-7-parseError-079.phpt" role="test" />
<file md5sum="b566a55c4f0abf20272a8a5d7a7b0f86" name="tests/bson-corpus/decimal128-7-parseError-080.phpt" role="test" />
<file md5sum="e162a317afd996068db3d446880ae555" name="tests/bson-corpus/document-decodeError-001.phpt" role="test" />
<file md5sum="2a91de3f33c69e87c71f72c7be1a4c59" name="tests/bson-corpus/document-decodeError-002.phpt" role="test" />
<file md5sum="0c762cd349bb3a8efe75dee194be577c" name="tests/bson-corpus/document-decodeError-003.phpt" role="test" />
<file md5sum="23457ace85afdf7c1654d8bcfd06eb95" name="tests/bson-corpus/document-decodeError-004.phpt" role="test" />
<file md5sum="31fc73d6b0650873461bf4cb0fcd52c4" name="tests/bson-corpus/document-valid-001.phpt" role="test" />
<file md5sum="ee687596c12f725b8dfd329754a925e2" name="tests/bson-corpus/document-valid-002.phpt" role="test" />
<file md5sum="a721880ab6954c9fd4e7d9f0af18d2a1" name="tests/bson-corpus/document-valid-003.phpt" role="test" />
<file md5sum="eb88be611504ac69fccc32cd5de4dbb0" name="tests/bson-corpus/document-valid-004.phpt" role="test" />
<file md5sum="2ae52444a4622ad4776051240cf3b98e" name="tests/bson-corpus/document-valid-005.phpt" role="test" />
<file md5sum="e61af9f8c707cc34bd5ceb3ecf6bf8ae" name="tests/bson-corpus/document-valid-006.phpt" role="test" />
<file md5sum="72213e2316893cdaf534575f89c2fe31" name="tests/bson-corpus/document-valid-007.phpt" role="test" />
<file md5sum="c461353475adbce1be26a01b2b186599" name="tests/bson-corpus/double-decodeError-001.phpt" role="test" />
<file md5sum="6071b7bc49e7c55b03726ad0672c70d6" name="tests/bson-corpus/double-valid-001.phpt" role="test" />
<file md5sum="6bd2d31a39a1ecdab7738e66557b0286" name="tests/bson-corpus/double-valid-002.phpt" role="test" />
<file md5sum="3af8aecd3b02e43d62747712b66d3817" name="tests/bson-corpus/double-valid-003.phpt" role="test" />
<file md5sum="ede2ea2b85475230fd67498c74e6fa9b" name="tests/bson-corpus/double-valid-004.phpt" role="test" />
<file md5sum="10cd3f457bf2effb43f6106d999bdf26" name="tests/bson-corpus/double-valid-005.phpt" role="test" />
<file md5sum="569b6d1e2e75d6711e6ff8f7e32b80c0" name="tests/bson-corpus/double-valid-006.phpt" role="test" />
<file md5sum="d665f52fdd1686dd743f9902130a9239" name="tests/bson-corpus/double-valid-007.phpt" role="test" />
<file md5sum="78eb565b40d7220c6fad8574f9a570b5" name="tests/bson-corpus/double-valid-008.phpt" role="test" />
<file md5sum="0aaae63d1303ed6b7556f6b434d34f30" name="tests/bson-corpus/double-valid-009.phpt" role="test" />
<file md5sum="0595a40ed8f08686b833abffd0bb524f" name="tests/bson-corpus/double-valid-010.phpt" role="test" />
<file md5sum="d255488dfb1f0ee91e9dd229e7bae91e" name="tests/bson-corpus/double-valid-011.phpt" role="test" />
<file md5sum="e7dc4072a01dfe9db7666d4f9b0fa680" name="tests/bson-corpus/double-valid-012.phpt" role="test" />
<file md5sum="ee89e9e34b5126f850f89063d12ad8d9" name="tests/bson-corpus/int32-decodeError-001.phpt" role="test" />
<file md5sum="fb9aa8b1facfc35c75736733ab3de8a9" name="tests/bson-corpus/int32-valid-001.phpt" role="test" />
<file md5sum="7543dc1ec24b1049371d2333b0c073b6" name="tests/bson-corpus/int32-valid-002.phpt" role="test" />
<file md5sum="722cdcdda89a5753c4f0f4dfff37447c" name="tests/bson-corpus/int32-valid-003.phpt" role="test" />
<file md5sum="6d12976ccf74999d3afe83d7c163e688" name="tests/bson-corpus/int32-valid-004.phpt" role="test" />
<file md5sum="050d52fef2d02047b110ba00370bbd09" name="tests/bson-corpus/int32-valid-005.phpt" role="test" />
<file md5sum="40045777cc43b74ef7d5c8e82e5bdbd0" name="tests/bson-corpus/int64-decodeError-001.phpt" role="test" />
<file md5sum="334fb3ffd4ebd9818d71a5a45233e57a" name="tests/bson-corpus/int64-valid-001.phpt" role="test" />
<file md5sum="f7d40a9c1a21967e0d492aa5dba422dc" name="tests/bson-corpus/int64-valid-002.phpt" role="test" />
<file md5sum="2ee3a62722d2e759ca783a25618c6c81" name="tests/bson-corpus/int64-valid-003.phpt" role="test" />
<file md5sum="4291445a50b450d75bcbb87b94b4f2c3" name="tests/bson-corpus/int64-valid-004.phpt" role="test" />
<file md5sum="f5e62025766404a63163a40e0d1539fa" name="tests/bson-corpus/int64-valid-005.phpt" role="test" />
<file md5sum="a105871724a00c3843a750b81bd8796e" name="tests/bson-corpus/maxkey-valid-001.phpt" role="test" />
<file md5sum="65336101d3b785728ad7ccd2d93531cb" name="tests/bson-corpus/minkey-valid-001.phpt" role="test" />
<file md5sum="6e4b65bcb87c80e9b5f8936f8d3bf505" name="tests/bson-corpus/multi-type-deprecated-valid-001.phpt" role="test" />
<file md5sum="1151cabdb3898a3d516341ff879aa025" name="tests/bson-corpus/multi-type-valid-001.phpt" role="test" />
<file md5sum="8824d9530c11e5fe4223ab8fa1555be0" name="tests/bson-corpus/null-valid-001.phpt" role="test" />
<file md5sum="27dd6f992a857d389c05cbc7398e71bb" name="tests/bson-corpus/oid-decodeError-001.phpt" role="test" />
<file md5sum="3bcd6c525875a79319dff444c7616ec5" name="tests/bson-corpus/oid-valid-001.phpt" role="test" />
<file md5sum="650cc81b09d2f9f3d559c4dfca5e9cb3" name="tests/bson-corpus/oid-valid-002.phpt" role="test" />
<file md5sum="e510e39abec7bccccf739af126bb4789" name="tests/bson-corpus/oid-valid-003.phpt" role="test" />
<file md5sum="aa3b57c5353b936f899fd2cdc7b5a28e" name="tests/bson-corpus/regex-decodeError-001.phpt" role="test" />
<file md5sum="aea8e38b3fbc264ceb05d66481d8b3eb" name="tests/bson-corpus/regex-decodeError-002.phpt" role="test" />
<file md5sum="3d753ffdc9a2722cb45b9051e026fe61" name="tests/bson-corpus/regex-valid-001.phpt" role="test" />
<file md5sum="7a9e5aaa600127a2a82bacca979f93df" name="tests/bson-corpus/regex-valid-002.phpt" role="test" />
<file md5sum="ee0b0539d2868f345a71fd024e6329c0" name="tests/bson-corpus/regex-valid-003.phpt" role="test" />
<file md5sum="bcee54584211240f70587e040f01e50b" name="tests/bson-corpus/regex-valid-004.phpt" role="test" />
<file md5sum="4ab247e9369df6d487e4750477e94dd9" name="tests/bson-corpus/regex-valid-005.phpt" role="test" />
<file md5sum="88be2c4d73b5e5adda5854da9e4fc9fd" name="tests/bson-corpus/regex-valid-006.phpt" role="test" />
<file md5sum="65fcce6ad035f420e4a8bf012fe2a1e1" name="tests/bson-corpus/regex-valid-007.phpt" role="test" />
<file md5sum="5c53a03644e5afc2a67689dfdc0a020c" name="tests/bson-corpus/regex-valid-008.phpt" role="test" />
<file md5sum="d6b0311a2da93981473263131e5279d3" name="tests/bson-corpus/regex-valid-009.phpt" role="test" />
<file md5sum="3d0b2e0fc6f387000582d58592731407" name="tests/bson-corpus/string-decodeError-001.phpt" role="test" />
<file md5sum="a9ff41aee3f6e049cd0d2a1bfb60591b" name="tests/bson-corpus/string-decodeError-002.phpt" role="test" />
<file md5sum="6f818d005518cd015e91ebb637b61e99" name="tests/bson-corpus/string-decodeError-003.phpt" role="test" />
<file md5sum="38f890462fc443f52200f50106444acb" name="tests/bson-corpus/string-decodeError-004.phpt" role="test" />
<file md5sum="6aeed9099ff6ed29d8937f3b11dca40f" name="tests/bson-corpus/string-decodeError-005.phpt" role="test" />
<file md5sum="3f7114c77c25e78b24e965c81f592f16" name="tests/bson-corpus/string-decodeError-006.phpt" role="test" />
<file md5sum="cee3ab240e5da16b5ab03e64b8cb432e" name="tests/bson-corpus/string-decodeError-007.phpt" role="test" />
<file md5sum="4f64097b1478f893368c084aa66cb3de" name="tests/bson-corpus/string-valid-001.phpt" role="test" />
<file md5sum="bb4e9c43e6ff040b21c064cba8ab7dec" name="tests/bson-corpus/string-valid-002.phpt" role="test" />
<file md5sum="4193cfb4109fd61da26633aaa372817a" name="tests/bson-corpus/string-valid-003.phpt" role="test" />
<file md5sum="05976af87f90a7a3d22a1bbec08dcb39" name="tests/bson-corpus/string-valid-004.phpt" role="test" />
<file md5sum="5c26a9bfeef5d177a7ae32fe7c614cc2" name="tests/bson-corpus/string-valid-005.phpt" role="test" />
<file md5sum="eee2f345942bd67d3775c9e9de6f4a89" name="tests/bson-corpus/string-valid-006.phpt" role="test" />
<file md5sum="eb4fbca60bbaf85fbab38ed67f1ce236" name="tests/bson-corpus/string-valid-007.phpt" role="test" />
<file md5sum="99d615f9c6d0d10861464768e023fd92" name="tests/bson-corpus/symbol-decodeError-001.phpt" role="test" />
<file md5sum="6ceed877be1ae6ba427d980c541753da" name="tests/bson-corpus/symbol-decodeError-002.phpt" role="test" />
<file md5sum="d00e0cb65aa4a23f832f84f2b5643a41" name="tests/bson-corpus/symbol-decodeError-003.phpt" role="test" />
<file md5sum="899cbd5e4b6ec97eb9f3fc04204fad09" name="tests/bson-corpus/symbol-decodeError-004.phpt" role="test" />
<file md5sum="0e69a16c7a19f7e3cf6773184069b2a9" name="tests/bson-corpus/symbol-decodeError-005.phpt" role="test" />
<file md5sum="b3acd6e8158de0abf54601d24abe78bb" name="tests/bson-corpus/symbol-decodeError-006.phpt" role="test" />
<file md5sum="b39454ebfc8a5b2a642663844cecbc81" name="tests/bson-corpus/symbol-decodeError-007.phpt" role="test" />
<file md5sum="8b0cc3dbd19598be43e29970da50136d" name="tests/bson-corpus/symbol-valid-001.phpt" role="test" />
<file md5sum="5243759573296a2610fca819c47a2edf" name="tests/bson-corpus/symbol-valid-002.phpt" role="test" />
<file md5sum="5ea6e9750d77759dbd6de3b0e5bb640c" name="tests/bson-corpus/symbol-valid-003.phpt" role="test" />
<file md5sum="52a411e360a0c90e114b5331718c007a" name="tests/bson-corpus/symbol-valid-004.phpt" role="test" />
<file md5sum="f4ce7963335f74a25ffb9d212661b4b4" name="tests/bson-corpus/symbol-valid-005.phpt" role="test" />
<file md5sum="6aec147b96abe946444e4e7903afc3ab" name="tests/bson-corpus/symbol-valid-006.phpt" role="test" />
<file md5sum="329ad438956681f6a558279bd21576d6" name="tests/bson-corpus/timestamp-decodeError-001.phpt" role="test" />
<file md5sum="ea94bc85b0195de213b66e27774b9e67" name="tests/bson-corpus/timestamp-valid-001.phpt" role="test" />
<file md5sum="57d34a4a01372e4684f8c54337c04915" name="tests/bson-corpus/timestamp-valid-002.phpt" role="test" />
<file md5sum="00616435a0efd2bcc235997a7c7a0e9d" name="tests/bson-corpus/timestamp-valid-003.phpt" role="test" />
<file md5sum="9dc4f05290dd318d459f266121088a23" name="tests/bson-corpus/timestamp-valid-004.phpt" role="test" />
<file md5sum="5327428b70a624b746af801db14c0400" name="tests/bson-corpus/top-decodeError-001.phpt" role="test" />
<file md5sum="6fca3835a1171790d3eb20a2f6372dee" name="tests/bson-corpus/top-decodeError-002.phpt" role="test" />
<file md5sum="ab8050a94efe37b9d7b68963d3641474" name="tests/bson-corpus/top-decodeError-003.phpt" role="test" />
<file md5sum="fe705496519b93b6b792d22609387240" name="tests/bson-corpus/top-decodeError-004.phpt" role="test" />
<file md5sum="d865c3dc57805206a2793d0fbd966a91" name="tests/bson-corpus/top-decodeError-005.phpt" role="test" />
<file md5sum="b898abcdaf68772ec2e70f36427dcd35" name="tests/bson-corpus/top-decodeError-006.phpt" role="test" />
<file md5sum="267686cb841f9e4325df13417553f537" name="tests/bson-corpus/top-decodeError-007.phpt" role="test" />
<file md5sum="c29685933b2f18c4d103d960aeb33ff0" name="tests/bson-corpus/top-decodeError-008.phpt" role="test" />
<file md5sum="6d97151c7fc571d2c6818693c371e956" name="tests/bson-corpus/top-decodeError-009.phpt" role="test" />
<file md5sum="461e2455ea298ef9ef144e1d6544d335" name="tests/bson-corpus/top-decodeError-010.phpt" role="test" />
<file md5sum="36c313a8095b8d017541133a6c7f8f13" name="tests/bson-corpus/top-decodeError-011.phpt" role="test" />
<file md5sum="89e69127adb3f81a6bebcc7251d4e82f" name="tests/bson-corpus/top-decodeError-012.phpt" role="test" />
<file md5sum="dbb22f932362b66d7cb60aaeb550dcea" name="tests/bson-corpus/top-decodeError-013.phpt" role="test" />
<file md5sum="5a3275d380abbce56fa95d2353e5549c" name="tests/bson-corpus/top-decodeError-014.phpt" role="test" />
<file md5sum="9e6310e91ef3e1e35c4bdd4b48e8607c" name="tests/bson-corpus/top-decodeError-015.phpt" role="test" />
<file md5sum="03f60c1e5b34cb2adea77c1f3fd182e0" name="tests/bson-corpus/top-parseError-001.phpt" role="test" />
<file md5sum="7bc651420ec74663a23198221f5e699c" name="tests/bson-corpus/top-parseError-002.phpt" role="test" />
<file md5sum="32e0c517a448daf253f9ffa3e92c2635" name="tests/bson-corpus/top-parseError-003.phpt" role="test" />
<file md5sum="02ed68013bb2ea427737e4edb62d3ae8" name="tests/bson-corpus/top-parseError-004.phpt" role="test" />
<file md5sum="66e8151e160e8217dbc9fc79d5501ef6" name="tests/bson-corpus/top-parseError-005.phpt" role="test" />
<file md5sum="7184c818f85355993b8fa015fdc754af" name="tests/bson-corpus/top-parseError-006.phpt" role="test" />
<file md5sum="9f805639b8548e8438a7fb5b95e14e6a" name="tests/bson-corpus/top-parseError-007.phpt" role="test" />
<file md5sum="7ed53eedb1a3e391b6b56e3a8b66389f" name="tests/bson-corpus/top-parseError-008.phpt" role="test" />
<file md5sum="07229bcd5a3fbcf621ad1ccb4cdf3da7" name="tests/bson-corpus/top-parseError-009.phpt" role="test" />
<file md5sum="43b817b3e86d79d9656682fd5a8fee8c" name="tests/bson-corpus/top-parseError-010.phpt" role="test" />
<file md5sum="4a3f14b074ff60ecaee50ad858ec7d72" name="tests/bson-corpus/top-parseError-011.phpt" role="test" />
<file md5sum="500e3fce2f8aa981b114e40a572c0367" name="tests/bson-corpus/top-parseError-012.phpt" role="test" />
<file md5sum="6c65d42537d6f4f1f6f3a10533fe0843" name="tests/bson-corpus/top-parseError-013.phpt" role="test" />
<file md5sum="5f03555a3bf2b5c7e5d89ce45d837409" name="tests/bson-corpus/top-parseError-014.phpt" role="test" />
<file md5sum="a529f9cd66d26f9f66692f5ff185093d" name="tests/bson-corpus/top-parseError-015.phpt" role="test" />
<file md5sum="c9be9d1c01a4cd6209d3f7bb1c961e91" name="tests/bson-corpus/top-parseError-016.phpt" role="test" />
<file md5sum="9b0be59539c27f731919489a876be058" name="tests/bson-corpus/top-parseError-017.phpt" role="test" />
<file md5sum="cd123ac789c2fd7ed061f4082ec618a1" name="tests/bson-corpus/top-parseError-018.phpt" role="test" />
<file md5sum="186495fee57d46d6c0cceb51277c6b22" name="tests/bson-corpus/top-parseError-019.phpt" role="test" />
<file md5sum="cd32f0e137ecb6ed215317f7ac7071ad" name="tests/bson-corpus/top-parseError-020.phpt" role="test" />
<file md5sum="c1eec10b6f07f39d41ae110dc661c8e9" name="tests/bson-corpus/top-parseError-021.phpt" role="test" />
<file md5sum="7a368aa740a9a822393921cf4ad8a248" name="tests/bson-corpus/top-parseError-022.phpt" role="test" />
<file md5sum="2588c1b96cd36a58f900b8faa0df1f5a" name="tests/bson-corpus/top-parseError-023.phpt" role="test" />
<file md5sum="c0e7d2bc8f09205b124a74456ee5f4b0" name="tests/bson-corpus/top-parseError-024.phpt" role="test" />
<file md5sum="b55cc7d7145b347076eb70d34b2ba71c" name="tests/bson-corpus/top-parseError-025.phpt" role="test" />
<file md5sum="7ccb5236bf2da26d6cdac7ed5bf74ac9" name="tests/bson-corpus/top-parseError-026.phpt" role="test" />
<file md5sum="1a76ec637a8b148e84994f28ac2c8289" name="tests/bson-corpus/top-parseError-027.phpt" role="test" />
<file md5sum="042c14a0125d3d1953e60e9af462081c" name="tests/bson-corpus/top-parseError-028.phpt" role="test" />
<file md5sum="b00efaefc4a408a20c2737900d446cb2" name="tests/bson-corpus/top-parseError-029.phpt" role="test" />
<file md5sum="088ead9021bc2ddee669eaca1dd38a41" name="tests/bson-corpus/top-parseError-030.phpt" role="test" />
<file md5sum="0b4ad7dee7912f011c783696cf0c5d90" name="tests/bson-corpus/top-parseError-031.phpt" role="test" />
<file md5sum="13f27e41512e85b77097f6fa86ca6b01" name="tests/bson-corpus/top-parseError-032.phpt" role="test" />
<file md5sum="21db377670770539131b0c3f709e4c6e" name="tests/bson-corpus/top-parseError-033.phpt" role="test" />
<file md5sum="d6231fbd84f81aa94043216860f6b1d6" name="tests/bson-corpus/top-parseError-034.phpt" role="test" />
<file md5sum="7e3d83fddb4f6b8bacc606fd70b920bd" name="tests/bson-corpus/top-parseError-035.phpt" role="test" />
<file md5sum="2442a19d317e66a62c9ef64e0d532cf8" name="tests/bson-corpus/top-parseError-036.phpt" role="test" />
<file md5sum="7c41648290ef26acfce2fe0658f10b1e" name="tests/bson-corpus/top-parseError-037.phpt" role="test" />
<file md5sum="25d3e62a7bcb18418d46ba4325886587" name="tests/bson-corpus/top-parseError-038.phpt" role="test" />
<file md5sum="74985a74b55e38bc5bd9a476f8c7520b" name="tests/bson-corpus/top-parseError-039.phpt" role="test" />
<file md5sum="8b3e17d2851447f9c7710717944d62a3" name="tests/bson-corpus/top-parseError-040.phpt" role="test" />
<file md5sum="9d2e817e4017e51424be1ea03ac7b71b" name="tests/bson-corpus/top-parseError-041.phpt" role="test" />
<file md5sum="70926319b71ba636b1dceb066e963b24" name="tests/bson-corpus/top-parseError-042.phpt" role="test" />
<file md5sum="199d1060947586a481a0f02641a140a2" name="tests/bson-corpus/top-parseError-043.phpt" role="test" />
<file md5sum="661d4edba99f1fb76febb6b18ff028d9" name="tests/bson-corpus/top-parseError-044.phpt" role="test" />
<file md5sum="24729b16a83e708374d676c892c18b5c" name="tests/bson-corpus/top-valid-001.phpt" role="test" />
<file md5sum="0550fffd086fd6cfd1c8ec616d2d786b" name="tests/bson-corpus/top-valid-002.phpt" role="test" />
<file md5sum="48ee3b2c5d6fd5a19ff3921263032ef3" name="tests/bson-corpus/top-valid-003.phpt" role="test" />
<file md5sum="bde3d8d9708ec6e8e7735f02b044c198" name="tests/bson-corpus/top-valid-004.phpt" role="test" />
<file md5sum="54281547fb3a2cbb92a045cb3930a5e2" name="tests/bson-corpus/undefined-valid-001.phpt" role="test" />
<file md5sum="0b2a63cf085e5aa31ae1140f56bf66d5" name="tests/bson/bson-binary-001.phpt" role="test" />
<file md5sum="4aba554122bb2541f557d5e07e9fe4b4" name="tests/bson/bson-binary-002.phpt" role="test" />
<file md5sum="374d8f0d87ee57b138a9e5ad47b9fc66" name="tests/bson/bson-binary-clone-001.phpt" role="test" />
<file md5sum="436cd2e6cd03a65162c3bdb19a113cfc" name="tests/bson/bson-binary-clone-002.phpt" role="test" />
<file md5sum="78c016cd924e363fb8433ce673a76b6a" name="tests/bson/bson-binary-compare-001.phpt" role="test" />
<file md5sum="6eb6c83707dd7be5c718fa13b0427d6c" name="tests/bson/bson-binary-compare-002.phpt" role="test" />
<file md5sum="8a3167bc0ab0abc40edee4efc43ab2e7" name="tests/bson/bson-binary-constants.phpt" role="test" />
<file md5sum="58e5df014bd86dd8f1313b3fb734a7ce" name="tests/bson/bson-binary-get_properties-001.phpt" role="test" />
<file md5sum="c61e1c8e4c5327f87674314fde6b5d2f" name="tests/bson/bson-binary-get_properties-002.phpt" role="test" />
<file md5sum="a89324b72c9dbfffca5008d9563565c8" name="tests/bson/bson-binary-jsonserialize-001.phpt" role="test" />
<file md5sum="4a3663438006c53ad7bffb9c7f5be470" name="tests/bson/bson-binary-jsonserialize-002.phpt" role="test" />
<file md5sum="e4e3c7e2b4a9a8fbf210d1b12ca1efdd" name="tests/bson/bson-binary-serialization-002.phpt" role="test" />
<file md5sum="eb63d730910c0fda55394a74150c33d5" name="tests/bson/bson-binary-serialization_error-004.phpt" role="test" />
<file md5sum="bb0438ec381cdbc306818c82666c2bff" name="tests/bson/bson-binary-serialization_error-005.phpt" role="test" />
<file md5sum="fff75a4cc3be5709110200968f2bb314" name="tests/bson/bson-binary-serialization_error-006.phpt" role="test" />
<file md5sum="6da6f8a4527175cf5d9feb152c884ed0" name="tests/bson/bson-binary-set_state-001.phpt" role="test" />
<file md5sum="b7e5915d1450ca8cb5a5e547ca9160b5" name="tests/bson/bson-binary-set_state_error-001.phpt" role="test" />
<file md5sum="4afee01d63968922b4a6642e7bbb401f" name="tests/bson/bson-binary-set_state_error-002.phpt" role="test" />
<file md5sum="ede14af86e066f7e7a2e1f8fb95deef5" name="tests/bson/bson-binary-set_state_error-003.phpt" role="test" />
<file md5sum="2079c2a8ebed8e51c12a0fab40e42ab3" name="tests/bson/bson-binary-tostring-001.phpt" role="test" />
<file md5sum="c63c6bb915dd4a4fd9ced675962c1e4d" name="tests/bson/bson-binary_error-001.phpt" role="test" />
<file md5sum="e19b6d29cb9a0b089ec60d677518b336" name="tests/bson/bson-binary_error-002.phpt" role="test" />
<file md5sum="81379b32b0d5a89ab8a6ff0ac0adadba" name="tests/bson/bson-binary_error-003.phpt" role="test" />
<file md5sum="c06ae96a6cc67f60cbf53231b7a2143f" name="tests/bson/bson-binary_error-004.phpt" role="test" />
<file md5sum="fe638f713510cf803847a14a9109e6e7" name="tests/bson/bson-binaryinterface-001.phpt" role="test" />
<file md5sum="302cf163cfc55c764aeb22e47b7d74e1" name="tests/bson/bson-dbpointer-001.phpt" role="test" />
<file md5sum="9691bbd26a85ed22718fb1b2a40ffd52" name="tests/bson/bson-dbpointer-002.phpt" role="test" />
<file md5sum="6be5b03e29c7ac48224d6adcad50e93c" name="tests/bson/bson-dbpointer-clone-001.phpt" role="test" />
<file md5sum="bc6fbd8d742a4cf6b22134576b1cfe87" name="tests/bson/bson-dbpointer-clone-002.phpt" role="test" />
<file md5sum="505f287b0169c80df7d1036e2714da5c" name="tests/bson/bson-dbpointer-compare-001.phpt" role="test" />
<file md5sum="70e821d17c71685d0a05088777e89b3f" name="tests/bson/bson-dbpointer-get_properties-001.phpt" role="test" />
<file md5sum="231a08f857eda52e042ec4958e31b4f7" name="tests/bson/bson-dbpointer-get_properties-002.phpt" role="test" />
<file md5sum="24066f0bc3a61c01cc77c0107ab544e2" name="tests/bson/bson-dbpointer-jsonserialize-001.phpt" role="test" />
<file md5sum="38d57ef26da3ee2b33cc05bc94df922e" name="tests/bson/bson-dbpointer-jsonserialize-003.phpt" role="test" />
<file md5sum="c412915dcd354804ab27136ca23fdc87" name="tests/bson/bson-dbpointer-serialization-002.phpt" role="test" />
<file md5sum="eea5c5f9105a01f5b8df3fae8783bb18" name="tests/bson/bson-dbpointer-serialization_error-003.phpt" role="test" />
<file md5sum="2e8a25d0add4cdbbc244b92c3d79de85" name="tests/bson/bson-dbpointer-serialization_error-004.phpt" role="test" />
<file md5sum="ce9f338d229d26e3960b581f14d50f1c" name="tests/bson/bson-dbpointer-set_state-001.phpt" role="test" />
<file md5sum="a26220a1b181d28d18193065c703c304" name="tests/bson/bson-dbpointer-tostring-001.phpt" role="test" />
<file md5sum="8586d0a798025c589314ec96271f8ee1" name="tests/bson/bson-dbpointer_error-002.phpt" role="test" />
<file md5sum="71aede00824b421131981d4b63cdc0e3" name="tests/bson/bson-decimal128-001.phpt" role="test" />
<file md5sum="920f7af62ba2b36e9e195a3145edbc85" name="tests/bson/bson-decimal128-002.phpt" role="test" />
<file md5sum="0760ccefa6247b97d8a089bcf257fbfe" name="tests/bson/bson-decimal128-003.phpt" role="test" />
<file md5sum="e7f052278786a172f5c6f43e2dd352be" name="tests/bson/bson-decimal128-004.phpt" role="test" />
<file md5sum="257f82cc8ccf96e541c381724081d5e3" name="tests/bson/bson-decimal128-clone-001.phpt" role="test" />
<file md5sum="e9934a6a34310c21a2b33fe659a210ef" name="tests/bson/bson-decimal128-clone-002.phpt" role="test" />
<file md5sum="1bc02b5dc178107bfe05d140f1c2dd31" name="tests/bson/bson-decimal128-get_properties-001.phpt" role="test" />
<file md5sum="14207b0fafe19cca6f205ba537863202" name="tests/bson/bson-decimal128-get_properties-002.phpt" role="test" />
<file md5sum="660978d8b64c87ce0451a12b86fdf6f5" name="tests/bson/bson-decimal128-jsonserialize-001.phpt" role="test" />
<file md5sum="dd45fa9fe6da84598e2a2c021ce15e22" name="tests/bson/bson-decimal128-jsonserialize-002.phpt" role="test" />
<file md5sum="263d08627bd7028e5970ecce6304f9c8" name="tests/bson/bson-decimal128-serialization-002.phpt" role="test" />
<file md5sum="9513d0084ecda47abd10998ba5f47a56" name="tests/bson/bson-decimal128-serialization_error-003.phpt" role="test" />
<file md5sum="c2c54f9bf9350a9821049cdca8e1d1ad" name="tests/bson/bson-decimal128-serialization_error-004.phpt" role="test" />
<file md5sum="1ef16c6d580a6cdd39f0beae1074ffd7" name="tests/bson/bson-decimal128-set_state-001.phpt" role="test" />
<file md5sum="10f051cfd2cc6cb100a3fcf8a58de336" name="tests/bson/bson-decimal128-set_state_error-001.phpt" role="test" />
<file md5sum="81913f487879d03a74858dbe4428decb" name="tests/bson/bson-decimal128-set_state_error-002.phpt" role="test" />
<file md5sum="221c0611a96d5caea567792b7822d05a" name="tests/bson/bson-decimal128_error-001.phpt" role="test" />
<file md5sum="0f4dea68cea5e1b9ec5ea0bbb7e407e1" name="tests/bson/bson-decimal128_error-002.phpt" role="test" />
<file md5sum="a7dbd531a5dace1341acdf77d3821da3" name="tests/bson/bson-decimal128interface-001.phpt" role="test" />
<file md5sum="12e83ec7f1ab05ff525fec7678d0161e" name="tests/bson/bson-decode-001.phpt" role="test" />
<file md5sum="1a0f86b953d55f4672e3ea9b1b3bbe87" name="tests/bson/bson-decode-002.phpt" role="test" />
<file md5sum="08b588902c1d012c43e80d6c409a0439" name="tests/bson/bson-document-array-access-001.phpt" role="test" />
<file md5sum="773e42f818a08bffe606db2ba5f4532c" name="tests/bson/bson-document-array-access-002.phpt" role="test" />
<file md5sum="b9903a6ba907dd49392cf1e5f0631937" name="tests/bson/bson-document-array-access-003.phpt" role="test" />
<file md5sum="90675d792c009cdaa012b373006d6786" name="tests/bson/bson-document-array-access-004.phpt" role="test" />
<file md5sum="d4615c6b92b8c0296baf570b000cbf65" name="tests/bson/bson-document-array-access-005.phpt" role="test" />
<file md5sum="457fde5901a2342c90f3641fd737f4d7" name="tests/bson/bson-document-array-access_error-001.phpt" role="test" />
<file md5sum="cbefc07fb9fed1e09a181746537c1b13" name="tests/bson/bson-document-array-access_error-002.phpt" role="test" />
<file md5sum="7a91b979d9f5f881f95d1d07ba1cca64" name="tests/bson/bson-document-array-access_error-003.phpt" role="test" />
<file md5sum="2443ffa0fe038b1a75e73c7b7a5a9078" name="tests/bson/bson-document-array-access_error-004.phpt" role="test" />
<file md5sum="9cb19abe0fc888469d6ce9b4eff724cd" name="tests/bson/bson-document-clone-001.phpt" role="test" />
<file md5sum="a030f101bcffbf7549a9141408496574" name="tests/bson/bson-document-compare-001.phpt" role="test" />
<file md5sum="4c4a6df4918662272141e36b4b79e52e" name="tests/bson/bson-document-debug-001.phpt" role="test" />
<file md5sum="e4befd1f8d309d98b8f0b612b875f157" name="tests/bson/bson-document-fromBSON-001.phpt" role="test" />
<file md5sum="654da9486650e76408ef36c7a2b87e63" name="tests/bson/bson-document-fromBSON_error-001.phpt" role="test" />
<file md5sum="4d4a4382a9a9b7978179419f73d71856" name="tests/bson/bson-document-fromBSON_error-002.phpt" role="test" />
<file md5sum="54d9559941468ae53999f525941a4bc1" name="tests/bson/bson-document-fromBSON_error-003.phpt" role="test" />
<file md5sum="dbda829bd8c39b86f9468ef704a6a63f" name="tests/bson/bson-document-fromBSON_error-004.phpt" role="test" />
<file md5sum="39d0165b95234778c0b8ccdb43557467" name="tests/bson/bson-document-fromBSON_error-005.phpt" role="test" />
<file md5sum="a7331a6475bab90ff67e645093717023" name="tests/bson/bson-document-fromJSON-001.phpt" role="test" />
<file md5sum="6212f6d4d42e21b9e7192f20f815eee5" name="tests/bson/bson-document-fromJSON-002.phpt" role="test" />
<file md5sum="ee0b75ac6121de1ba77503df7b90ac7a" name="tests/bson/bson-document-fromJSON_error-001.phpt" role="test" />
<file md5sum="9090c29d7245d05b48f784c773fca94c" name="tests/bson/bson-document-fromPHP-001.phpt" role="test" />
<file md5sum="6288b16ea0401cc65d7e9d01d2766963" name="tests/bson/bson-document-fromPHP-002.phpt" role="test" />
<file md5sum="516b2715885ecbbef24a1406cc2fb713" name="tests/bson/bson-document-fromPHP-003.phpt" role="test" />
<file md5sum="5429a4e163724f7ba99c4c6b47e68738" name="tests/bson/bson-document-fromPHP-004.phpt" role="test" />
<file md5sum="20cdaad5980e52b9b1231f1349e235b7" name="tests/bson/bson-document-get-001.phpt" role="test" />
<file md5sum="ebd5864a0363bdd267ea95b68b36bfeb" name="tests/bson/bson-document-get-002.phpt" role="test" />
<file md5sum="f47828b93ad5e5d466a629ae25c17bfb" name="tests/bson/bson-document-get-003.phpt" role="test" />
<file md5sum="c472dd55a2e41c8392d53345f9308027" name="tests/bson/bson-document-getIterator-001.phpt" role="test" />
<file md5sum="be9289e471cd4b2304366d29ab29c018" name="tests/bson/bson-document-get_properties-001.phpt" role="test" />
<file md5sum="a6ca8177f3c4b1b5c9899ec813337473" name="tests/bson/bson-document-has-001.phpt" role="test" />
<file md5sum="f69861fc94447e3f36ff7502a3acbbc4" name="tests/bson/bson-document-property-access-001.phpt" role="test" />
<file md5sum="8c375a6d3ced9ba8e24f9c87f3019c7a" name="tests/bson/bson-document-property-access-002.phpt" role="test" />
<file md5sum="5b62da0f1f279ef06a7a10a156df9adf" name="tests/bson/bson-document-property-access_error-001.phpt" role="test" />
<file md5sum="fc4f37bfed8bae5225030bca1677a7e4" name="tests/bson/bson-document-serialization-002.phpt" role="test" />
<file md5sum="918051d2c309b6cf7abbaf1070f8626e" name="tests/bson/bson-document-set_state-001.phpt" role="test" />
<file md5sum="2cce79f5fd22c9f7df59d892a671fade" name="tests/bson/bson-document-set_state_error-001.phpt" role="test" />
<file md5sum="65a7aaabc3ee4396f3c29b16bb61ad78" name="tests/bson/bson-document-toCanonicalJSON-001.phpt" role="test" />
<file md5sum="245c02efcca5122770b0b6c0783670a4" name="tests/bson/bson-document-toCanonicalJSON-002.phpt" role="test" />
<file md5sum="abea86629d102e7dad2b5efab061a078" name="tests/bson/bson-document-toPHP-001.phpt" role="test" />
<file md5sum="93da112ececad41eb32daef5ff2f4475" name="tests/bson/bson-document-toPHP-002.phpt" role="test" />
<file md5sum="268ae91489f8d964065ce36d2124ec16" name="tests/bson/bson-document-toPHP-003.phpt" role="test" />
<file md5sum="d17973e705c31dd8c536d99183671be4" name="tests/bson/bson-document-toPHP-007.phpt" role="test" />
<file md5sum="04e39b04b456ca55bf80fe1fbfeedc5b" name="tests/bson/bson-document-toPHP-008.phpt" role="test" />
<file md5sum="07b1844156e0b46d81db66a77883a209" name="tests/bson/bson-document-toPHP-009.phpt" role="test" />
<file md5sum="250a1325072049dd549a3096e8c8c606" name="tests/bson/bson-document-toPHP-010.phpt" role="test" />
<file md5sum="f193b6d4417841ae2ee31c54ac2ae6c3" name="tests/bson/bson-document-toPHP-011.phpt" role="test" />
<file md5sum="8454d00e57b1f0bf846a17ed2926b5ce" name="tests/bson/bson-document-toPHP-012.phpt" role="test" />
<file md5sum="ba5f6b18ee3ec3a1d0e2bdf8d3cdc67c" name="tests/bson/bson-document-toRelaxedJSON-001.phpt" role="test" />
<file md5sum="55b8472d3b2f367c9a58d3c139ed1139" name="tests/bson/bson-document-toRelaxedJSON-002.phpt" role="test" />
<file md5sum="a43424253713e258493d6660c95b426f" name="tests/bson/bson-document-unserialize_error-002.phpt" role="test" />
<file md5sum="a8fec2114d290d96bcaec2cca9dcea19" name="tests/bson/bson-encode-001.phpt" role="test" />
<file md5sum="fee3bb678ed7a5d19e6a2184c4f88610" name="tests/bson/bson-encode-002.phpt" role="test" />
<file md5sum="305f9f489da6f601ee78b5c5addf2ef2" name="tests/bson/bson-encode-003.phpt" role="test" />
<file md5sum="02cf4cc73e100c9c2159cd5ed611b0b3" name="tests/bson/bson-encode-004.phpt" role="test" />
<file md5sum="d022201fe63ac3d4eb222f7fc60c794d" name="tests/bson/bson-encode-005.phpt" role="test" />
<file md5sum="87646056151c86f9d8b2dfcaa9f079aa" name="tests/bson/bson-enum-001.phpt" role="test" />
<file md5sum="bb2d778ac1e02d2ff7057aaf1a6eeb06" name="tests/bson/bson-enum-002.phpt" role="test" />
<file md5sum="1aac97426e5b97a6308a0c2d16298b51" name="tests/bson/bson-enum-003.phpt" role="test" />
<file md5sum="7a5c3b5615dd687fb490ce1f363608f1" name="tests/bson/bson-enum_error-001.phpt" role="test" />
<file md5sum="b1519cd3e8ee971b244d52af6d6539ea" name="tests/bson/bson-enum_error-002.phpt" role="test" />
<file md5sum="a503a875fa1ad245da7545a1564b8596" name="tests/bson/bson-enum_error-003.phpt" role="test" />
<file md5sum="3da7ed620dad86c6d9d506f1ee0c231f" name="tests/bson/bson-enum_error-004.phpt" role="test" />
<file md5sum="af67e8a7dfdfe8e9392bc47b5303ea60" name="tests/bson/bson-enum_error-005.phpt" role="test" />
<file md5sum="7bfa3ad68bde298624f1a525583e0306" name="tests/bson/bson-enum_error-006.phpt" role="test" />
<file md5sum="67ad97486ac4414bea88b2ad55ee9fa5" name="tests/bson/bson-generate-document-id.phpt" role="test" />
<file md5sum="26b00eb4f72987208fa3fecc50dde650" name="tests/bson/bson-int64-001.phpt" role="test" />
<file md5sum="24e7bf6670e946e38970c5e5dcf10fd9" name="tests/bson/bson-int64-002.phpt" role="test" />
<file md5sum="066c80e0ed3bbcfbf406259b1ef1ba80" name="tests/bson/bson-int64-003.phpt" role="test" />
<file md5sum="b211da996295679c57b41fe84c5d6f89" name="tests/bson/bson-int64-cast-001.phpt" role="test" />
<file md5sum="f920ea2791708445e5c93614aaced492" name="tests/bson/bson-int64-cast-002.phpt" role="test" />
<file md5sum="9c6c7ea680a5b3bb838e3719392bef6d" name="tests/bson/bson-int64-cast-003.phpt" role="test" />
<file md5sum="95558ff47f33d11479f5d30dcb4c07dd" name="tests/bson/bson-int64-clone-001.phpt" role="test" />
<file md5sum="c19c0577ecc12b50c32568f62dc674bb" name="tests/bson/bson-int64-clone-002.phpt" role="test" />
<file md5sum="e5ab339f9e3623c404807d8c5b4c9b10" name="tests/bson/bson-int64-compare-001.phpt" role="test" />
<file md5sum="2530a6260b84a8b5829834e5f0ee2189" name="tests/bson/bson-int64-compare-002.phpt" role="test" />
<file md5sum="f18e2d2bb6480f6995f2f883b602eb7b" name="tests/bson/bson-int64-compare-003.phpt" role="test" />
<file md5sum="26f38edb5a813f7263533609f8505e9b" name="tests/bson/bson-int64-compare-004.phpt" role="test" />
<file md5sum="caacd3ea5ef8e017df5b4e54e621a90c" name="tests/bson/bson-int64-compare-005.phpt" role="test" />
<file md5sum="9a7451cf6a4cfbc607627c2661a18a1f" name="tests/bson/bson-int64-ctor-001.phpt" role="test" />
<file md5sum="f0e14480bb730590c411b8f79cee424e" name="tests/bson/bson-int64-ctor-002.phpt" role="test" />
<file md5sum="7d9c95017ce6ba9f5442902a778a90e2" name="tests/bson/bson-int64-ctor_error-001.phpt" role="test" />
<file md5sum="545862ca8a00e6120d69b481af064359" name="tests/bson/bson-int64-debug-001.phpt" role="test" />
<file md5sum="e522fe446e26d213af72960b53806ad3" name="tests/bson/bson-int64-get_properties-001.phpt" role="test" />
<file md5sum="726d545089eff9cbe6e1697b5f86e2b0" name="tests/bson/bson-int64-get_properties-002.phpt" role="test" />
<file md5sum="5fcab2e8bad8c5a57451116d8a9aad00" name="tests/bson/bson-int64-jsonserialize-001.phpt" role="test" />
<file md5sum="dd4e62c9333f2e64f0f182575cdbb4ae" name="tests/bson/bson-int64-jsonserialize-002.phpt" role="test" />
<file md5sum="614eb30be75c502fee525edcc7c90304" name="tests/bson/bson-int64-operation-001.phpt" role="test" />
<file md5sum="91ddaaa99dc2ab8174d461226753943e" name="tests/bson/bson-int64-operation-002.phpt" role="test" />
<file md5sum="60a72496e88d85e807279d9cc26de19e" name="tests/bson/bson-int64-operation-003.phpt" role="test" />
<file md5sum="2d73420d6fc9ee451d9d0abdda0313e0" name="tests/bson/bson-int64-operation-004.phpt" role="test" />
<file md5sum="768b503fe7ce1980303b7fc8d180b3d0" name="tests/bson/bson-int64-operation-005.phpt" role="test" />
<file md5sum="3b3bd1655b4248b1710f1e3bb7aaef71" name="tests/bson/bson-int64-operation_error-001.phpt" role="test" />
<file md5sum="cb6c7fac45867b86ce56100656788a9a" name="tests/bson/bson-int64-serialization-002.phpt" role="test" />
<file md5sum="e8554b43780a2dca9a9cf1700b20af9b" name="tests/bson/bson-int64-serialization_error-003.phpt" role="test" />
<file md5sum="6f2461278c36007966e5e5b1bc1e9188" name="tests/bson/bson-int64-serialization_error-004.phpt" role="test" />
<file md5sum="5c75e6e8f5a1158f3f6323628c6a597f" name="tests/bson/bson-int64-set_state-001.phpt" role="test" />
<file md5sum="2655f2c8b2e466a50144cc7d74379f64" name="tests/bson/bson-int64-tostring-001.phpt" role="test" />
<file md5sum="a5e58f843937879d0919b476d879644a" name="tests/bson/bson-int64_error-001.phpt" role="test" />
<file md5sum="e5e18aea31135e3839647a13277a4898" name="tests/bson/bson-iterator-clone-001.phpt" role="test" />
<file md5sum="50de45eca0600d4891502fb00db64bd2" name="tests/bson/bson-iterator-clone-002.phpt" role="test" />
<file md5sum="05b6a2a77e2e47da9e2e027a471f4c32" name="tests/bson/bson-iterator-debug-001.phpt" role="test" />
<file md5sum="a73a83d495c8096c348382f19f112d06" name="tests/bson/bson-iterator-get_properties-001.phpt" role="test" />
<file md5sum="ef5affcf5b86f02a6c05e79986dfacd8" name="tests/bson/bson-iterator-iterator-001.phpt" role="test" />
<file md5sum="d6d4227b6f80ec97d2377665cca2f4f2" name="tests/bson/bson-iterator-iterator-002.phpt" role="test" />
<file md5sum="4abab7edad884c34296189a420c60c61" name="tests/bson/bson-iterator-iterator-003.phpt" role="test" />
<file md5sum="5bfb9f3b1ccf0110d722027aed3e0965" name="tests/bson/bson-iterator-rewind-001.phpt" role="test" />
<file md5sum="8f8e4aff7cdc3ef88b472872550a434d" name="tests/bson/bson-iterator-serialization_error-001.phpt" role="test" />
<file md5sum="831dd0165de5bb42af4979f19b3baf78" name="tests/bson/bson-javascript-001.phpt" role="test" />
<file md5sum="9a467b7dbefee10d37610d2c1bf418ae" name="tests/bson/bson-javascript-002.phpt" role="test" />
<file md5sum="5a0288c0fc9a410672d558c517a7aab2" name="tests/bson/bson-javascript-clone-001.phpt" role="test" />
<file md5sum="30f896fccb4da7bb23febd59c48535fb" name="tests/bson/bson-javascript-clone-002.phpt" role="test" />
<file md5sum="97e60e9d937e0545fdd93efbc9f78c7f" name="tests/bson/bson-javascript-compare-001.phpt" role="test" />
<file md5sum="6fa03185f5a88f493df843621065aeb9" name="tests/bson/bson-javascript-compare-002.phpt" role="test" />
<file md5sum="b9a8c6d1b796fee0f4bf1dcc3ec0f084" name="tests/bson/bson-javascript-getCode-001.phpt" role="test" />
<file md5sum="00cecd00a9ef7be33cbb932a575cc8ba" name="tests/bson/bson-javascript-getScope-001.phpt" role="test" />
<file md5sum="3583fa467242578d595fd83f3556b790" name="tests/bson/bson-javascript-get_properties-001.phpt" role="test" />
<file md5sum="6a7b515b114dcf814edbc5eb6dfdc41b" name="tests/bson/bson-javascript-get_properties-002.phpt" role="test" />
<file md5sum="ed048056560402b72af90dcd75f39641" name="tests/bson/bson-javascript-jsonserialize-001.phpt" role="test" />
<file md5sum="dd59d37315fa855d2650cc7f35620e79" name="tests/bson/bson-javascript-jsonserialize-002.phpt" role="test" />
<file md5sum="01f8ef44e39dcd52327c4c005f259198" name="tests/bson/bson-javascript-jsonserialize-003.phpt" role="test" />
<file md5sum="782bba6bdfec625fe0720abf468d56ce" name="tests/bson/bson-javascript-jsonserialize-004.phpt" role="test" />
<file md5sum="5795e8b1368e80712ab9f7f9cc25d8a1" name="tests/bson/bson-javascript-serialization-002.phpt" role="test" />
<file md5sum="07daa202800cf5728cdd61ec7dc2e45b" name="tests/bson/bson-javascript-serialization_error-004.phpt" role="test" />
<file md5sum="957af791e07c0c41c8bf94f3b7b10921" name="tests/bson/bson-javascript-serialization_error-005.phpt" role="test" />
<file md5sum="47cacec76bfe7d6b5dcb210b432f946c" name="tests/bson/bson-javascript-serialization_error-006.phpt" role="test" />
<file md5sum="5ab6f2dcba79ef40d3dee2426a698703" name="tests/bson/bson-javascript-set_state-001.phpt" role="test" />
<file md5sum="d649a395f0abcd4c41dc59f9344f0a89" name="tests/bson/bson-javascript-set_state_error-001.phpt" role="test" />
<file md5sum="131b1e9e10b78bf739443887d9c39ed7" name="tests/bson/bson-javascript-set_state_error-002.phpt" role="test" />
<file md5sum="cf37d0aa9ec9038651af5f64ba85e40a" name="tests/bson/bson-javascript-set_state_error-003.phpt" role="test" />
<file md5sum="210cbf28e39939c60de208dc48709ba6" name="tests/bson/bson-javascript-tostring-001.phpt" role="test" />
<file md5sum="d33b6fabee6b27aa845112710e0f043e" name="tests/bson/bson-javascript_error-001.phpt" role="test" />
<file md5sum="ebee3faf0213cdf7df62dd289a481297" name="tests/bson/bson-javascript_error-002.phpt" role="test" />
<file md5sum="37c02fc0d6345ae1785f1779d83d6284" name="tests/bson/bson-javascript_error-003.phpt" role="test" />
<file md5sum="ed2574aad887fa2d67e6f43caaf7f6df" name="tests/bson/bson-javascript_error-004.phpt" role="test" />
<file md5sum="bb37a40126c54e2b12ce956b99b3cc3d" name="tests/bson/bson-javascriptinterface-001.phpt" role="test" />
<file md5sum="8443b87ea871db9861558e6979ff0db6" name="tests/bson/bson-maxkey-001.phpt" role="test" />
<file md5sum="560e7ca042006d0f00114e07ba80270e" name="tests/bson/bson-maxkey-clone-001.phpt" role="test" />
<file md5sum="e91441b12e7fb101d60a21bf1c08f85a" name="tests/bson/bson-maxkey-clone-002.phpt" role="test" />
<file md5sum="1640c877e8ffab77ca2a49939721f325" name="tests/bson/bson-maxkey-compare-001.phpt" role="test" />
<file md5sum="4314312c271b5c33f53a4d3887a683b0" name="tests/bson/bson-maxkey-jsonserialize-001.phpt" role="test" />
<file md5sum="b21da8686270aac6b81ec28467ed1144" name="tests/bson/bson-maxkey-jsonserialize-002.phpt" role="test" />
<file md5sum="151abe173c3de94de5095a512429c054" name="tests/bson/bson-maxkey-serialization-002.phpt" role="test" />
<file md5sum="07f32149b1a254231e32378c294e2b82" name="tests/bson/bson-maxkey-set_state-001.phpt" role="test" />
<file md5sum="d4a47acb431463b7f01c83e5db2f2d3d" name="tests/bson/bson-maxkey_error-001.phpt" role="test" />
<file md5sum="d9a42b06a0a7d9b8103ffee8a638c7b5" name="tests/bson/bson-maxkeyinterface-001.phpt" role="test" />
<file md5sum="a472b29a2cbc7ae8065ca1129ec5f699" name="tests/bson/bson-minkey-001.phpt" role="test" />
<file md5sum="e6dde4e168256f42ced88035b990c3dc" name="tests/bson/bson-minkey-clone-001.phpt" role="test" />
<file md5sum="0b618935cb6143aa0ff812eb6c8a0a7d" name="tests/bson/bson-minkey-clone-002.phpt" role="test" />
<file md5sum="cab9d17b350f7ff0fb3930aa298f626a" name="tests/bson/bson-minkey-compare-001.phpt" role="test" />
<file md5sum="6b2c6c29ac2dbc4f91392779b99d562c" name="tests/bson/bson-minkey-jsonserialize-001.phpt" role="test" />
<file md5sum="2f29f939846864d23b0bd7fd3896301a" name="tests/bson/bson-minkey-jsonserialize-002.phpt" role="test" />
<file md5sum="4e664a9e9926a010f8a7278011e31e99" name="tests/bson/bson-minkey-serialization-002.phpt" role="test" />
<file md5sum="7341f784c4cffce859590d969b9ce295" name="tests/bson/bson-minkey-set_state-001.phpt" role="test" />
<file md5sum="64d66ab2ebc01d4b1c271079bb94db72" name="tests/bson/bson-minkey_error-001.phpt" role="test" />
<file md5sum="0a45023579316c69f78806f230ba106c" name="tests/bson/bson-minkeyinterface-001.phpt" role="test" />
<file md5sum="2f8619f0b382f91b183575db2a09fa68" name="tests/bson/bson-objectid-001.phpt" role="test" />
<file md5sum="d1eae72097de3d1e1bd0ef60f4e35cd6" name="tests/bson/bson-objectid-002.phpt" role="test" />
<file md5sum="c994597716974e44d2586b1fd6abe4a8" name="tests/bson/bson-objectid-003.phpt" role="test" />
<file md5sum="b9a3a09dd645ff06e975d192c34ad587" name="tests/bson/bson-objectid-004.phpt" role="test" />
<file md5sum="c3caf970929a6278035c38c80487cf5a" name="tests/bson/bson-objectid-clone-001.phpt" role="test" />
<file md5sum="c7ea45d1dce62294faab695b59a95f18" name="tests/bson/bson-objectid-clone-002.phpt" role="test" />
<file md5sum="a777ad1f36f9f3ab61a31848e29fbda3" name="tests/bson/bson-objectid-compare-001.phpt" role="test" />
<file md5sum="45a5c909f831527ec527dc6dff83a41d" name="tests/bson/bson-objectid-compare-002.phpt" role="test" />
<file md5sum="5f4fc31b72fbf2946cabfbe801e1f8e5" name="tests/bson/bson-objectid-getTimestamp-001.phpt" role="test" />
<file md5sum="04c2bfef7d149d82b796f8257ae8d1ee" name="tests/bson/bson-objectid-getTimestamp-002.phpt" role="test" />
<file md5sum="cae2d6ff62f134db503c739f79da7516" name="tests/bson/bson-objectid-get_properties-001.phpt" role="test" />
<file md5sum="ce20450b15ec7489bc67392e0af50231" name="tests/bson/bson-objectid-get_properties-002.phpt" role="test" />
<file md5sum="2927bb3a1e8581dada0e53f8c701f30d" name="tests/bson/bson-objectid-jsonserialize-001.phpt" role="test" />
<file md5sum="582dc76cd110aac0e0cb8c299e70d076" name="tests/bson/bson-objectid-jsonserialize-002.phpt" role="test" />
<file md5sum="f66fb7d264c20783ab74ecb3bb0c6c15" name="tests/bson/bson-objectid-serialization-002.phpt" role="test" />
<file md5sum="3d399d22bc9b88d34ad33621cdf50a09" name="tests/bson/bson-objectid-serialization_error-003.phpt" role="test" />
<file md5sum="cf8f41631902ea203d9365834930e83a" name="tests/bson/bson-objectid-serialization_error-004.phpt" role="test" />
<file md5sum="eccc24be6c41e6b0595bd62861d54074" name="tests/bson/bson-objectid-set_state-001.phpt" role="test" />
<file md5sum="3667bbb9e3faffc2665641488e24cb93" name="tests/bson/bson-objectid-set_state_error-001.phpt" role="test" />
<file md5sum="4d7026a6b49e6f5d40d51a1003a251b6" name="tests/bson/bson-objectid-set_state_error-002.phpt" role="test" />
<file md5sum="dc3e069b4e1039311345171358f3d795" name="tests/bson/bson-objectid-tostring_error-001.phpt" role="test" />
<file md5sum="70c812dcc1d65a4386e445df430f6903" name="tests/bson/bson-objectid_error-001.phpt" role="test" />
<file md5sum="cdb174d464441a4a3ab142b0d27429ec" name="tests/bson/bson-objectid_error-002.phpt" role="test" />
<file md5sum="556a89c07ebc69c629010a8381f918d3" name="tests/bson/bson-objectid_error-003.phpt" role="test" />
<file md5sum="94512cbf7a26273ee3b7191601600674" name="tests/bson/bson-objectidinterface-001.phpt" role="test" />
<file md5sum="eb39f16e701bdf2108dd204ee51405fb" name="tests/bson/bson-packedarray-array-access-001.phpt" role="test" />
<file md5sum="52b6ab0c5f6cd7dad5fd4409ea583b3e" name="tests/bson/bson-packedarray-array-access-002.phpt" role="test" />
<file md5sum="ecd66e2c79b5817481bdd607cba7857d" name="tests/bson/bson-packedarray-array-access-003.phpt" role="test" />
<file md5sum="1f98980e72757931e76e70d1dcf77872" name="tests/bson/bson-packedarray-array-access_error-001.phpt" role="test" />
<file md5sum="747e37dfcfe1ee95789f6bddc5be7cef" name="tests/bson/bson-packedarray-array-access_error-002.phpt" role="test" />
<file md5sum="da978da9ea5d3f2f50070653605b3465" name="tests/bson/bson-packedarray-array-access_error-003.phpt" role="test" />
<file md5sum="73218e147504b785d006a5343208ec27" name="tests/bson/bson-packedarray-array-access_error-004.phpt" role="test" />
<file md5sum="fe793d5078c373c9eb0029e736666026" name="tests/bson/bson-packedarray-clone-001.phpt" role="test" />
<file md5sum="a7996fc8e10bae1557d8d85e6bb3beb6" name="tests/bson/bson-packedarray-compare-001.phpt" role="test" />
<file md5sum="43b1aa7223598290c0306e2ac3c80e22" name="tests/bson/bson-packedarray-debug-001.phpt" role="test" />
<file md5sum="97176751bb7b770b0ef5c49a44fcc336" name="tests/bson/bson-packedarray-fromJSON-001.phpt" role="test" />
<file md5sum="beb7b4d0cf33bdc6f6a2b37930e257d8" name="tests/bson/bson-packedarray-fromJSON-002.phpt" role="test" />
<file md5sum="97b53bef6bb7fab6a0f99e6234b8c950" name="tests/bson/bson-packedarray-fromJSON_error-001.phpt" role="test" />
<file md5sum="d26fca6895ff6478b0d59b26ce46dca0" name="tests/bson/bson-packedarray-fromPHP-001.phpt" role="test" />
<file md5sum="9452498802a8b3da4a8771289e6f3556" name="tests/bson/bson-packedarray-fromPHP_error-001.phpt" role="test" />
<file md5sum="5d97b770ba48b46a60026a10967155e1" name="tests/bson/bson-packedarray-get-001.phpt" role="test" />
<file md5sum="95c48c8676a7cdd303e592de85bf7131" name="tests/bson/bson-packedarray-get-002.phpt" role="test" />
<file md5sum="566ea47f79bbadd04885480e5b182e37" name="tests/bson/bson-packedarray-get-003.phpt" role="test" />
<file md5sum="40dcc31e987047a25c637ecf355b56e4" name="tests/bson/bson-packedarray-get-004.phpt" role="test" />
<file md5sum="195fc17b2bc0e8084535ed4109c79c6f" name="tests/bson/bson-packedarray-get-005.phpt" role="test" />
<file md5sum="b21d83f036cf16bf67eda403b51055a2" name="tests/bson/bson-packedarray-getIterator-001.phpt" role="test" />
<file md5sum="f9cdf985234efbad92ee13691b2211bf" name="tests/bson/bson-packedarray-get_properties-001.phpt" role="test" />
<file md5sum="0f34620c092764e2335848d9e93f6b00" name="tests/bson/bson-packedarray-has-001.phpt" role="test" />
<file md5sum="4ceb8aba9e203427478697efd6840ef2" name="tests/bson/bson-packedarray-serialization-002.phpt" role="test" />
<file md5sum="e3161a0e1d715b27e32152a7d109fb47" name="tests/bson/bson-packedarray-set_state-001.phpt" role="test" />
<file md5sum="9a3cb33490d5931644035c4ca7def593" name="tests/bson/bson-packedarray-set_state_error-001.phpt" role="test" />
<file md5sum="25a3977556ded083e7c192c51399b0ab" name="tests/bson/bson-packedarray-toCanonicalExtendedJSON-001.phpt" role="test" />
<file md5sum="a0df0b76c36f6d6ca8e8174be8e5408d" name="tests/bson/bson-packedarray-toCanonicalJSON-002.phpt" role="test" />
<file md5sum="05595eb5762e4da11c6deafdcf259129" name="tests/bson/bson-packedarray-toPHP-001.phpt" role="test" />
<file md5sum="b2d51a2d083d50063e58d6e6bcce7eae" name="tests/bson/bson-packedarray-toPHP-002.phpt" role="test" />
<file md5sum="f58e862b1573b7efbc9c0f0b87fb7b32" name="tests/bson/bson-packedarray-toPHP-003.phpt" role="test" />
<file md5sum="085a05a90bce21ba1671cf6f9a7729bb" name="tests/bson/bson-packedarray-toPHP-004.phpt" role="test" />
<file md5sum="b740a1097067bf3b40c6eef75ad12167" name="tests/bson/bson-packedarray-toPHP-005.phpt" role="test" />
<file md5sum="fe0422f209bb9fbf46bd242b14ac5c62" name="tests/bson/bson-packedarray-toRelaxedExtendedJSON-001.phpt" role="test" />
<file md5sum="b124bea9a85ab18c97634b36291b6f2d" name="tests/bson/bson-packedarray-toRelaxedExtendedJSON-002.phpt" role="test" />
<file md5sum="bfd3dcaf1a3bdfda2ae6f0fca850490f" name="tests/bson/bson-packedarray-unserialize_error-002.phpt" role="test" />
<file md5sum="b3a6c1901d96f7fa5e184b284cdef0a7" name="tests/bson/bson-regex-001.phpt" role="test" />
<file md5sum="c6d502bd80b12b49bb86ca15cd80cb5d" name="tests/bson/bson-regex-002.phpt" role="test" />
<file md5sum="4163628356ea84775b80bfb4982f697a" name="tests/bson/bson-regex-003.phpt" role="test" />
<file md5sum="511347e513bdf3bc2ae37aa34b146c01" name="tests/bson/bson-regex-004.phpt" role="test" />
<file md5sum="c5aeef20912e9660c5b9b9916e6061ed" name="tests/bson/bson-regex-005.phpt" role="test" />
<file md5sum="2a1b427a98663ab84e4f5d6e8c030816" name="tests/bson/bson-regex-clone-001.phpt" role="test" />
<file md5sum="848aef00258f0cb8959395b5204864af" name="tests/bson/bson-regex-clone-002.phpt" role="test" />
<file md5sum="6f0accb9c2f47fd13f287b115e1fdb69" name="tests/bson/bson-regex-compare-001.phpt" role="test" />
<file md5sum="78e0fcaa87dc451f34f9ef119e1bd274" name="tests/bson/bson-regex-compare-002.phpt" role="test" />
<file md5sum="7b006f20fc2ac164fb4bdce2846da38b" name="tests/bson/bson-regex-get_properties-001.phpt" role="test" />
<file md5sum="6324a488905bb05b3d2e75375c69d88a" name="tests/bson/bson-regex-get_properties-002.phpt" role="test" />
<file md5sum="6fa2a0677b01b0c63ac9e75d7189de73" name="tests/bson/bson-regex-jsonserialize-001.phpt" role="test" />
<file md5sum="b74df13ee5230ede71e1c6dab4439d2f" name="tests/bson/bson-regex-jsonserialize-002.phpt" role="test" />
<file md5sum="61c2c69dbb3bcf9725bb6153cfd8e010" name="tests/bson/bson-regex-jsonserialize-003.phpt" role="test" />
<file md5sum="571238992f42cba3fbfe5cd33e03af5d" name="tests/bson/bson-regex-jsonserialize-004.phpt" role="test" />
<file md5sum="9c556867e125c456ae3463417791a558" name="tests/bson/bson-regex-serialization-004.phpt" role="test" />
<file md5sum="c144db7e8e5afdb134997fa189c1dcdd" name="tests/bson/bson-regex-serialization-005.phpt" role="test" />
<file md5sum="d7431748e8c3461064c8c388f4c55863" name="tests/bson/bson-regex-serialization-006.phpt" role="test" />
<file md5sum="487f11f005bd48598164423123bcfade" name="tests/bson/bson-regex-serialization_error-003.phpt" role="test" />
<file md5sum="da8a9d25b1a4898e272e05db80a65416" name="tests/bson/bson-regex-serialization_error-004.phpt" role="test" />
<file md5sum="96b300bc1e862965b1766ea87403906b" name="tests/bson/bson-regex-set_state-001.phpt" role="test" />
<file md5sum="eeeddbf1a9e400df5c98e5fd7a56dae7" name="tests/bson/bson-regex-set_state-002.phpt" role="test" />
<file md5sum="fdd23b37dd05d0c7b626bf7192073a26" name="tests/bson/bson-regex-set_state_error-001.phpt" role="test" />
<file md5sum="780b53cc64a01a8d0a74f3cd49563d2e" name="tests/bson/bson-regex-set_state_error-002.phpt" role="test" />
<file md5sum="f86befb012d028c7552ea505725dd6e9" name="tests/bson/bson-regex_error-001.phpt" role="test" />
<file md5sum="009697ca0ba2befc6b308d59fd304b11" name="tests/bson/bson-regex_error-002.phpt" role="test" />
<file md5sum="e8851dee3b4a2cb27016935a7c4fe549" name="tests/bson/bson-regex_error-003.phpt" role="test" />
<file md5sum="b3c02b3eb309f7bbf5a33523a120b43f" name="tests/bson/bson-regexinterface-001.phpt" role="test" />
<file md5sum="c1ed928c4ed93c9509b6c1bb9938b10f" name="tests/bson/bson-symbol-001.phpt" role="test" />
<file md5sum="af596478c0fa453f6f48485f7a592684" name="tests/bson/bson-symbol-clone-001.phpt" role="test" />
<file md5sum="7a92525dfdc365788abdeda20c7f363f" name="tests/bson/bson-symbol-clone-002.phpt" role="test" />
<file md5sum="1f60aba1eb700b7c665446d715446cfe" name="tests/bson/bson-symbol-compare-001.phpt" role="test" />
<file md5sum="64e2111513bb3e0ff5858361edf4c4b7" name="tests/bson/bson-symbol-get_properties-001.phpt" role="test" />
<file md5sum="c60eb96a54efb9a8c606c6912341db0e" name="tests/bson/bson-symbol-get_properties-002.phpt" role="test" />
<file md5sum="3c0bbaafbb9fc89d7ccb3abd186b1048" name="tests/bson/bson-symbol-jsonserialize-001.phpt" role="test" />
<file md5sum="7ec58b996853a49cf17f4dd60fcdcfbd" name="tests/bson/bson-symbol-jsonserialize-002.phpt" role="test" />
<file md5sum="ac7387168703e4207a3690e4a9a6c582" name="tests/bson/bson-symbol-serialization-002.phpt" role="test" />
<file md5sum="969b43019c8a8c86807ec021be8790a6" name="tests/bson/bson-symbol-serialization_error-003.phpt" role="test" />
<file md5sum="bc57a48d67cdfa10c221935571f2d5ae" name="tests/bson/bson-symbol-serialization_error-004.phpt" role="test" />
<file md5sum="18f58ffacee382b3bd44a5f6c2eb338c" name="tests/bson/bson-symbol-set_state-001.phpt" role="test" />
<file md5sum="0d34ec84401d66a4b9d1b1f1d7fc57bd" name="tests/bson/bson-symbol-tostring-001.phpt" role="test" />
<file md5sum="92583aa0415496caf1876468b4814b84" name="tests/bson/bson-symbol_error-001.phpt" role="test" />
<file md5sum="5b5b7584c59afc95c82f798c4405d0e9" name="tests/bson/bson-timestamp-001.phpt" role="test" />
<file md5sum="94cee14f3d06ab8085f06c241a976589" name="tests/bson/bson-timestamp-002.phpt" role="test" />
<file md5sum="a0763909d65abab501df3471d9cf0009" name="tests/bson/bson-timestamp-003.phpt" role="test" />
<file md5sum="3932a3692389d969ee55de22034324b1" name="tests/bson/bson-timestamp-004.phpt" role="test" />
<file md5sum="db926cded84f832c39e527d5fcdadcbb" name="tests/bson/bson-timestamp-005.phpt" role="test" />
<file md5sum="78f7450b370c1c7262ae196206b5f857" name="tests/bson/bson-timestamp-clone-001.phpt" role="test" />
<file md5sum="b4e402a444eda17b63b8c97920379979" name="tests/bson/bson-timestamp-clone-002.phpt" role="test" />
<file md5sum="bf27f37b85d838f7f3601f1733674ebe" name="tests/bson/bson-timestamp-compare-001.phpt" role="test" />
<file md5sum="8d390960f78a0d4c874f1a9bea6f60e1" name="tests/bson/bson-timestamp-getIncrement-001.phpt" role="test" />
<file md5sum="dbc98d4c863f2edbd470a744569b8ebc" name="tests/bson/bson-timestamp-getTimestamp-001.phpt" role="test" />
<file md5sum="70cbe569659d4cd104ded6f0b3954697" name="tests/bson/bson-timestamp-get_properties-001.phpt" role="test" />
<file md5sum="1cb51102b60c196d34c7c1588b91ae78" name="tests/bson/bson-timestamp-get_properties-002.phpt" role="test" />
<file md5sum="4ff5e264bb118d99302fb918e2b54ea4" name="tests/bson/bson-timestamp-jsonserialize-001.phpt" role="test" />
<file md5sum="c4ed3bdd884202c20cf3dfb199f765a2" name="tests/bson/bson-timestamp-jsonserialize-002.phpt" role="test" />
<file md5sum="17e2a8a9495c02994ee8d83d026dd9fb" name="tests/bson/bson-timestamp-serialization-003.phpt" role="test" />
<file md5sum="b6cc6754bb1fbbad9582d71c3b466da9" name="tests/bson/bson-timestamp-serialization-004.phpt" role="test" />
<file md5sum="05c1a7b5a813eacc0d8611a163d73da2" name="tests/bson/bson-timestamp-serialization_error-005.phpt" role="test" />
<file md5sum="95e67f8f621e99c7354a21613c842678" name="tests/bson/bson-timestamp-serialization_error-006.phpt" role="test" />
<file md5sum="0c16788e8546ae0f334d2a5cb929f02c" name="tests/bson/bson-timestamp-serialization_error-007.phpt" role="test" />
<file md5sum="08bcae3b28cbbe0de2d7d818fe3f8845" name="tests/bson/bson-timestamp-serialization_error-008.phpt" role="test" />
<file md5sum="1a6d90d1ec78a94bf5dd01dfd320b190" name="tests/bson/bson-timestamp-set_state-001.phpt" role="test" />
<file md5sum="c66ab8ca2c8eecf65c766cb97e9fa529" name="tests/bson/bson-timestamp-set_state-002.phpt" role="test" />
<file md5sum="8baeba2ddc938df88ba34a03ba47d1d1" name="tests/bson/bson-timestamp-set_state_error-001.phpt" role="test" />
<file md5sum="73a5d3cebea540001cba1b80f1febc52" name="tests/bson/bson-timestamp-set_state_error-002.phpt" role="test" />
<file md5sum="c37df82f2051521242f1dbc7ae1a9ecd" name="tests/bson/bson-timestamp-set_state_error-003.phpt" role="test" />
<file md5sum="d7176a251bfc6af5b814cc7a52a8f4b3" name="tests/bson/bson-timestamp-set_state_error-004.phpt" role="test" />
<file md5sum="6ca746014810084f9fe6cc45bb431ed6" name="tests/bson/bson-timestamp_error-001.phpt" role="test" />
<file md5sum="69daf6c7b6567dfbce4f64a6a77075a5" name="tests/bson/bson-timestamp_error-002.phpt" role="test" />
<file md5sum="c6a934138c3573ae650ea666baa809c5" name="tests/bson/bson-timestamp_error-003.phpt" role="test" />
<file md5sum="6b62f4f50fb29c882e769710d62b1f72" name="tests/bson/bson-timestamp_error-004.phpt" role="test" />
<file md5sum="4345c7e61bb3f6eadf294f1d29d5c4df" name="tests/bson/bson-timestamp_error-005.phpt" role="test" />
<file md5sum="4bed0b71ac3fd2551b3930123c5aed19" name="tests/bson/bson-timestamp_error-006.phpt" role="test" />
<file md5sum="304b9fe634cafb1fb611d793197f60ec" name="tests/bson/bson-timestampinterface-001.phpt" role="test" />
<file md5sum="bb54f21f1f23481b1fa334c2dbd79ef9" name="tests/bson/bson-undefined-001.phpt" role="test" />
<file md5sum="acf352520227675f36c004143ca58c2f" name="tests/bson/bson-undefined-clone-001.phpt" role="test" />
<file md5sum="b83803c662316686d0ed098fb17f4fd4" name="tests/bson/bson-undefined-clone-002.phpt" role="test" />
<file md5sum="45825d4d6a9c9ecc6e8fd10e4da75766" name="tests/bson/bson-undefined-compare-001.phpt" role="test" />
<file md5sum="d191c794da8cc0815f28652ad417f107" name="tests/bson/bson-undefined-jsonserialize-001.phpt" role="test" />
<file md5sum="bd3c6957589c79c829d5ff4c3c4328ca" name="tests/bson/bson-undefined-jsonserialize-002.phpt" role="test" />
<file md5sum="8055e584f9b44c23295e18e2d6935e28" name="tests/bson/bson-undefined-serialization-002.phpt" role="test" />
<file md5sum="a53a82ff2776cc586130abeb79fb8f02" name="tests/bson/bson-undefined-set_state-001.phpt" role="test" />
<file md5sum="47193401ebfb899c91eeb9a9683e1c68" name="tests/bson/bson-undefined-tostring-001.phpt" role="test" />
<file md5sum="40d8bb19b4d396749f94324a6e21cbcb" name="tests/bson/bson-undefined_error-001.phpt" role="test" />
<file md5sum="44f4e512930061f4c42daa0b0a60bfe3" name="tests/bson/bson-unknown-001.phpt" role="test" />
<file md5sum="fc61fde894ab1f742f3f29ff2c8c4473" name="tests/bson/bson-utcdatetime-001.phpt" role="test" />
<file md5sum="c7eaa8dba8f07ca97aa872038428de0a" name="tests/bson/bson-utcdatetime-002.phpt" role="test" />
<file md5sum="4a7ceed02905927b3e2df8c5cc957d98" name="tests/bson/bson-utcdatetime-003.phpt" role="test" />
<file md5sum="de4188f960c7fd6debed280d2ce4da02" name="tests/bson/bson-utcdatetime-004.phpt" role="test" />
<file md5sum="ebcbd881098aeef861090012f341282d" name="tests/bson/bson-utcdatetime-005.phpt" role="test" />
<file md5sum="982f7f8d65d0f7f222f9b2512786dc4c" name="tests/bson/bson-utcdatetime-006.phpt" role="test" />
<file md5sum="bf36a7d3d7534ddb85438307befcfdd2" name="tests/bson/bson-utcdatetime-009.phpt" role="test" />
<file md5sum="348e1935a48b9eb06079ff7d9f56f1c2" name="tests/bson/bson-utcdatetime-clone-001.phpt" role="test" />
<file md5sum="e454dcaec80cc6437a5ae4216f7a7aa1" name="tests/bson/bson-utcdatetime-clone-002.phpt" role="test" />
<file md5sum="6728e628d6cd1def65b21b5d58c477b4" name="tests/bson/bson-utcdatetime-compare-001.phpt" role="test" />
<file md5sum="53e797d1621c0c29961f09c826976bdf" name="tests/bson/bson-utcdatetime-get_properties-001.phpt" role="test" />
<file md5sum="78eaaecda7142bf183cfe24d394b8dcf" name="tests/bson/bson-utcdatetime-get_properties-002.phpt" role="test" />
<file md5sum="a93b633b97ec16f0b7707205f4709d12" name="tests/bson/bson-utcdatetime-jsonserialize-001.phpt" role="test" />
<file md5sum="42e96b6f7303a27c90d400d3369068ef" name="tests/bson/bson-utcdatetime-jsonserialize-002.phpt" role="test" />
<file md5sum="75271190a52ffa146ec46fbf7d49f044" name="tests/bson/bson-utcdatetime-serialization-003.phpt" role="test" />
<file md5sum="765f990f1c4417aa4e66b2432b7ffa99" name="tests/bson/bson-utcdatetime-serialization-004.phpt" role="test" />
<file md5sum="47cf1e235ff220d8343ef93974907760" name="tests/bson/bson-utcdatetime-serialization_error-003.phpt" role="test" />
<file md5sum="ac1840ed9c318f5df5dd886bf38337f3" name="tests/bson/bson-utcdatetime-serialization_error-004.phpt" role="test" />
<file md5sum="eff3be8c77fe2c425963ba6249e1d107" name="tests/bson/bson-utcdatetime-set_state-001.phpt" role="test" />
<file md5sum="00b885edb80273a8e7cba15612edbd9e" name="tests/bson/bson-utcdatetime-set_state-002.phpt" role="test" />
<file md5sum="ddd4b46bb4a6912b2d4f089f0d661cc4" name="tests/bson/bson-utcdatetime-set_state_error-001.phpt" role="test" />
<file md5sum="de23c619cce9e08d277108bf36561af2" name="tests/bson/bson-utcdatetime-set_state_error-002.phpt" role="test" />
<file md5sum="03053954d9d00bfce6b882853e88a60f" name="tests/bson/bson-utcdatetime-todatetime-001.phpt" role="test" />
<file md5sum="11b1e7c4775e3515f3d8ad0bfa019dc1" name="tests/bson/bson-utcdatetime-todatetime-002.phpt" role="test" />
<file md5sum="4b08a3b774c49982230d2c29658b79ef" name="tests/bson/bson-utcdatetime-todatetime-003.phpt" role="test" />
<file md5sum="c757d0b407d06ae8eb3f9efcdae52f69" name="tests/bson/bson-utcdatetime-todatetimeimmutable-001.phpt" role="test" />
<file md5sum="08a15904fda1ec8677a4897d5eb7175c" name="tests/bson/bson-utcdatetime-todatetimeimmutable-002.phpt" role="test" />
<file md5sum="39a0f42c2ff473794228c6ee21ae2b61" name="tests/bson/bson-utcdatetime-todatetimeimmutable-003.phpt" role="test" />
<file md5sum="f0663a4ac7e55542c508fec4f95cdf15" name="tests/bson/bson-utcdatetime-tostring-001.phpt" role="test" />
<file md5sum="d87151a333e0bbdb938955184366451e" name="tests/bson/bson-utcdatetime_error-002.phpt" role="test" />
<file md5sum="107da8b6114d63bd47621248a56c8f58" name="tests/bson/bson-utcdatetime_error-004.phpt" role="test" />
<file md5sum="ddff8c9ef155b69a7c1b5bc76dbaea36" name="tests/bson/bson-utcdatetimeinterface-001.phpt" role="test" />
<file md5sum="24d161034065fd0a4dd2c14d5fd1b34a" name="tests/bson/bug0274.phpt" role="test" />
<file md5sum="703c3782b42782bbb822a94aa3c2d121" name="tests/bson/bug0325.phpt" role="test" />
<file md5sum="dbaf4b5bb5c55c7714171fdcd0cfb1a8" name="tests/bson/bug0334-001.phpt" role="test" />
<file md5sum="4a41daf99f30144a5a9b194c66ba5c6b" name="tests/bson/bug0334-002.phpt" role="test" />
<file md5sum="2040b00df19f44645120f86708a6bbb6" name="tests/bson/bug0341.phpt" role="test" />
<file md5sum="0cdeba17452a000dab636ae0ee32f9d9" name="tests/bson/bug0347.phpt" role="test" />
<file md5sum="1eb798c06998f02912ece8b791d8366f" name="tests/bson/bug0528.phpt" role="test" />
<file md5sum="3813fc4b5a63c2d33d8b3cffaca0e8d5" name="tests/bson/bug0531-001.phpt" role="test" />
<file md5sum="6d10c9e90eab6391719992a8f3324dbd" name="tests/bson/bug0544.phpt" role="test" />
<file md5sum="a89d1fc4dc20b1d9968420222addc1fc" name="tests/bson/bug0592.phpt" role="test" />
<file md5sum="6881f25614a80996fa9edaa608abb5bc" name="tests/bson/bug0623.phpt" role="test" />
<file md5sum="cb18827f9e608f0495afb65515234991" name="tests/bson/bug0631.phpt" role="test" />
<file md5sum="b982dd73d598f1466905d11fdf43bdb2" name="tests/bson/bug0672.phpt" role="test" />
<file md5sum="c44cc21c70f840b307c2d6c687138cf2" name="tests/bson/bug0894-001.phpt" role="test" />
<file md5sum="d0c1fd240ccf37b9af58f7e892278b60" name="tests/bson/bug0923-001.phpt" role="test" />
<file md5sum="8f38c32d045e96c06538bec87e8e7dcd" name="tests/bson/bug0923-002.phpt" role="test" />
<file md5sum="d5ae04b33473bcae9ee977f725d483c4" name="tests/bson/bug0939-001.phpt" role="test" />
<file md5sum="02549d82e75f77cec41464aa41e39bb6" name="tests/bson/bug0974-001.phpt" role="test" />
<file md5sum="3336b8c258b5f2d02e3a89e8fb2f2ac1" name="tests/bson/bug1006-001.phpt" role="test" />
<file md5sum="4b1eaf929d4d3f844209e5045579859c" name="tests/bson/bug1006-002.phpt" role="test" />
<file md5sum="22c30ca9d73e86406d2d6f74861366b7" name="tests/bson/bug1053.phpt" role="test" />
<file md5sum="b32de2d6a5a540a853ad9ae92b466e63" name="tests/bson/bug1067.phpt" role="test" />
<file md5sum="b28e1962db83adea2f0ea6c4604ed006" name="tests/bson/bug1266.phpt" role="test" />
<file md5sum="76e9a816eed3afba93103ec19fd6136d" name="tests/bson/bug1598-001.phpt" role="test" />
<file md5sum="e3e55f188904b4b32750e092bebe7a27" name="tests/bson/bug1598-002.phpt" role="test" />
<file md5sum="476294c9dfa70b8f141fb12a84c7ca6b" name="tests/bson/bug1839-005.phpt" role="test" />
<file md5sum="3bed6592ff07133bdf222a95576e9bd9" name="tests/bson/bug1839-006.phpt" role="test" />
<file md5sum="4f3988011b231ae7e257f3988afcd9dc" name="tests/bson/bug1839-007.phpt" role="test" />
<file md5sum="6b593a76031c325479c57bff654c1e87" name="tests/bson/bug1839-008.phpt" role="test" />
<file md5sum="8f3673da043d04182327260f190d9912" name="tests/bson/bug2456-001.phpt" role="test" />
<file md5sum="a6f0d1b574d418eb3cf44816748f0399" name="tests/bson/typemap-001.phpt" role="test" />
<file md5sum="7d45dc9c4e491d5405fdb3bdc1eaa84b" name="tests/bson/typemap-002.phpt" role="test" />
<file md5sum="aeff3d9f803b3f98b79dbec6cd41771b" name="tests/bson/typemap-003.phpt" role="test" />
<file md5sum="575a0709267bd8ed12363ce6ee84ae96" name="tests/bson/typemap-004.phpt" role="test" />
<file md5sum="30f8b99b36b388fd8e2c4db4876dc114" name="tests/bson/typemap-005.phpt" role="test" />
<file md5sum="c766609987450f6a8e4bb5d5c862f224" name="tests/bson/typemap-006.phpt" role="test" />
<file md5sum="8227e8ae5700ddf9c1d952e0127b8cbf" name="tests/bson/typemap-007.phpt" role="test" />
<file md5sum="55f4be2106b3f9222216570cb4e53df8" name="tests/bulk/bug0667.phpt" role="test" />
<file md5sum="e64d115fba82e356ad50e008520a491f" name="tests/bulk/bulkwrite-count-001.phpt" role="test" />
<file md5sum="0a96053f6e2e81ba25f21c62ab6512fa" name="tests/bulk/bulkwrite-countable-001.phpt" role="test" />
<file md5sum="685a5970da43151c1b3b29e2aebed7ff" name="tests/bulk/bulkwrite-ctor-comment-001.phpt" role="test" />
<file md5sum="225f40bed330d346f15f2adffab7489a" name="tests/bulk/bulkwrite-ctor-comment_error-001.phpt" role="test" />
<file md5sum="8c2b2058aa246d97ce429c5a7d359d74" name="tests/bulk/bulkwrite-ctor-let-001.phpt" role="test" />
<file md5sum="8b863c9fc0aa1207798eb847f4c5ab03" name="tests/bulk/bulkwrite-ctor-let_error-001.phpt" role="test" />
<file md5sum="9c33ddb49a4bd9265a52116e65280ef9" name="tests/bulk/bulkwrite-debug-001.phpt" role="test" />
<file md5sum="1b437c5f96c7e0b7e58adee71d5c9477" name="tests/bulk/bulkwrite-debug-002.phpt" role="test" />
<file md5sum="741f02ccb0d6db972857ac9b55b8c6ab" name="tests/bulk/bulkwrite-delete-001.phpt" role="test" />
<file md5sum="4b42d667776949316e0e8adce5d63ad1" name="tests/bulk/bulkwrite-delete-002.phpt" role="test" />
<file md5sum="1adf644cbc06de9a3cbbfb72ec79361e" name="tests/bulk/bulkwrite-delete-003.phpt" role="test" />
<file md5sum="e47823d799d6c10e06a77fc2aa007402" name="tests/bulk/bulkwrite-delete_error-001.phpt" role="test" />
<file md5sum="8b72f9f86c38e21f2c62a529ac39dfd4" name="tests/bulk/bulkwrite-delete_error-002.phpt" role="test" />
<file md5sum="5c2928e7429cd633e042e59561ff4f00" name="tests/bulk/bulkwrite-delete_error-003.phpt" role="test" />
<file md5sum="a803a27247610de2459aaa5f58d935b0" name="tests/bulk/bulkwrite-delete_error-004.phpt" role="test" />
<file md5sum="e1ac1619f3114f9175e1d0249dbfafb7" name="tests/bulk/bulkwrite-delete_error-005.phpt" role="test" />
<file md5sum="2854e7b5237f021399902b9498f4e216" name="tests/bulk/bulkwrite-insert-001.phpt" role="test" />
<file md5sum="5851b94d556007c481804e26846d68cc" name="tests/bulk/bulkwrite-insert-002.phpt" role="test" />
<file md5sum="3d654ae728b50c9d70ff6a768e56a603" name="tests/bulk/bulkwrite-insert-003.phpt" role="test" />
<file md5sum="dafcdfa75fae5899ae6c38e8d9ed66ef" name="tests/bulk/bulkwrite-insert-004.phpt" role="test" />
- <file md5sum="f78b72d1cf92e87ae55c01f387e349ff" name="tests/bulk/bulkwrite-insert_error-001.phpt" role="test" />
+ <file md5sum="67526db3fbf462f34be71c93c530d341" name="tests/bulk/bulkwrite-insert_error-001.phpt" role="test" />
<file md5sum="a20b0d320adf61d20988b8dcda9580ae" name="tests/bulk/bulkwrite-insert_error-002.phpt" role="test" />
<file md5sum="59c60a17514366c03448112a41fbe726" name="tests/bulk/bulkwrite-insert_error-003.phpt" role="test" />
<file md5sum="70ad43d296f707e97172ef7faa464f48" name="tests/bulk/bulkwrite-insert_error-004.phpt" role="test" />
<file md5sum="c4a14766c89c6c68039cb536cb73c28f" name="tests/bulk/bulkwrite-update-001.phpt" role="test" />
<file md5sum="8257aa4b9b034288c463fa67c72a78e1" name="tests/bulk/bulkwrite-update-002.phpt" role="test" />
<file md5sum="e96c79d2c09602d9253e3342216e78aa" name="tests/bulk/bulkwrite-update-003.phpt" role="test" />
<file md5sum="3ba2d189900b6367288c571322dad3fe" name="tests/bulk/bulkwrite-update-004.phpt" role="test" />
<file md5sum="0d671efaa5ac987034194767db4e0843" name="tests/bulk/bulkwrite-update-005.phpt" role="test" />
<file md5sum="a68a28b671e5e53c1d529658c6d95939" name="tests/bulk/bulkwrite-update-006.phpt" role="test" />
<file md5sum="822ddcf9c1c46fd82bfe8ba4d76e8d51" name="tests/bulk/bulkwrite-update-007.phpt" role="test" />
<file md5sum="20f03dab728362df8796b7573ce03c1d" name="tests/bulk/bulkwrite-update-008.phpt" role="test" />
- <file md5sum="d9e18f23a4604f922ac662c01782614b" name="tests/bulk/bulkwrite-update_error-001.phpt" role="test" />
- <file md5sum="40e78e07b505520a85a69a1fd9f01cae" name="tests/bulk/bulkwrite-update_error-002.phpt" role="test" />
+ <file md5sum="ca10155aea6815373abc8e4075a2de10" name="tests/bulk/bulkwrite-update_error-001.phpt" role="test" />
+ <file md5sum="7cc5d6a971b184b31b38341b9797d628" name="tests/bulk/bulkwrite-update_error-002.phpt" role="test" />
<file md5sum="9005472e4cd1b667948ab0418f7d46e6" name="tests/bulk/bulkwrite-update_error-003.phpt" role="test" />
<file md5sum="08abf78018bdd6d3bb652f86f5653905" name="tests/bulk/bulkwrite-update_error-004.phpt" role="test" />
<file md5sum="9a7d39da76a5c30b106dc891da1f55f7" name="tests/bulk/bulkwrite-update_error-005.phpt" role="test" />
<file md5sum="a8da00636aba72bad78006609dd64bad" name="tests/bulk/bulkwrite-update_error-006.phpt" role="test" />
<file md5sum="7e2dcb2d2678b1712c07517b3e6107af" name="tests/bulk/bulkwrite-update_error-009.phpt" role="test" />
<file md5sum="bd5f1f654b138089ea753c5e20d589f2" name="tests/bulk/bulkwrite_error-001.phpt" role="test" />
<file md5sum="2b2784e0a4fa3c6628a932ee53126946" name="tests/bulk/bulkwrite_error-002.phpt" role="test" />
<file md5sum="9620e8719fb39c100f23862926e2d9ce" name="tests/bulk/write-0001.phpt" role="test" />
<file md5sum="6190534d37b65981e6e06f641ad8200b" name="tests/bulk/write-0002.phpt" role="test" />
<file md5sum="f064d3e4a5c924af3e7776bba6abdeb6" name="tests/bulkwritecommand/bulkwritecommand-ctor-bypassDocumentValidation-001.phpt" role="test" />
<file md5sum="f6157399ff899bc1a6162b5618896314" name="tests/bulkwritecommand/bulkwritecommand-ctor-bypassDocumentValidation-002.phpt" role="test" />
<file md5sum="25402a01de82a0dec4f5631a5f9145b6" name="tests/bulkwritecommand/bulkwritecommand-ctor-comment-001.phpt" role="test" />
<file md5sum="2a06fc6f4dbcb95083820ff8162fd3de" name="tests/bulkwritecommand/bulkwritecommand-ctor-comment_error-001.phpt" role="test" />
<file md5sum="8ca14fc069f25747f981963a33a99bde" name="tests/bulkwritecommand/bulkwritecommand-ctor-let-001.phpt" role="test" />
<file md5sum="aaecfaed9d19ada2e19979b8e17d97e1" name="tests/bulkwritecommand/bulkwritecommand-ctor-let_error-001.phpt" role="test" />
<file md5sum="6b104527e0090834e03f79b6f7dd8347" name="tests/bulkwritecommand/bulkwritecommand-ctor-ordered-001.phpt" role="test" />
<file md5sum="3d5aa60c42824f2decf5366f70bb440d" name="tests/bulkwritecommand/bulkwritecommand-ctor-ordered-002.phpt" role="test" />
<file md5sum="ecc72af6cb700de52f8cdbf38eeb98df" name="tests/bulkwritecommand/bulkwritecommand-ctor-verboseresults-001.phpt" role="test" />
<file md5sum="de62c47d6eb219d2d701f03f5a01d7dd" name="tests/bulkwritecommand/bulkwritecommand-ctor-verboseresults-002.phpt" role="test" />
<file md5sum="425b40b2c4d67e2ac55c1514459f7e5a" name="tests/bulkwritecommand/bulkwritecommand-debug-001.phpt" role="test" />
<file md5sum="3ceb18cc042b647c278f2695cbd28652" name="tests/bulkwritecommand/bulkwritecommand-debug-002.phpt" role="test" />
<file md5sum="bdc0b25f9a900464fc2ea8aeb9fcbb26" name="tests/bulkwritecommand/bulkwritecommand-debug-003.phpt" role="test" />
<file md5sum="766aa925a2c2708a1b54ec96ebe2c6d5" name="tests/bulkwritecommand/bulkwritecommand-deleteMany-001.phpt" role="test" />
<file md5sum="c4ed2b3ebe271f4e46d545013b8f15d7" name="tests/bulkwritecommand/bulkwritecommand-deleteMany-002.phpt" role="test" />
<file md5sum="834da4695723f0638cf8d0af5c765776" name="tests/bulkwritecommand/bulkwritecommand-deleteMany-003.phpt" role="test" />
<file md5sum="59d9d993f060be2140ec5a2df97ba2d8" name="tests/bulkwritecommand/bulkwritecommand-deleteMany_error-001.phpt" role="test" />
<file md5sum="8adfdb75b5e23fc39bf1173c2e2f69e3" name="tests/bulkwritecommand/bulkwritecommand-deleteMany_error-002.phpt" role="test" />
<file md5sum="5e9e651a5f51f89f12bf67fe5ed9ad51" name="tests/bulkwritecommand/bulkwritecommand-deleteMany_error-003.phpt" role="test" />
<file md5sum="ef4eac720a77577d5edab9dd94f52172" name="tests/bulkwritecommand/bulkwritecommand-deleteMany_error-004.phpt" role="test" />
<file md5sum="59b7fe00da2bbbc9d8d624ee0e6bfb43" name="tests/bulkwritecommand/bulkwritecommand-deleteOne-001.phpt" role="test" />
<file md5sum="8b3ba76fd98349a61518723aaba9f477" name="tests/bulkwritecommand/bulkwritecommand-deleteOne-002.phpt" role="test" />
<file md5sum="9501d9971879d2dbee477c99dc0f097b" name="tests/bulkwritecommand/bulkwritecommand-deleteOne-003.phpt" role="test" />
<file md5sum="7e17e3748f841f3aa6bcbad343e9f9fd" name="tests/bulkwritecommand/bulkwritecommand-deleteOne_error-001.phpt" role="test" />
<file md5sum="42cd6457ebdc4354dd1734a47d6052e3" name="tests/bulkwritecommand/bulkwritecommand-deleteOne_error-002.phpt" role="test" />
<file md5sum="b448603094642ec5146018502f8b4938" name="tests/bulkwritecommand/bulkwritecommand-deleteOne_error-003.phpt" role="test" />
<file md5sum="2db455be66d3ec00a79d0e4c5c892d09" name="tests/bulkwritecommand/bulkwritecommand-deleteOne_error-004.phpt" role="test" />
<file md5sum="6e05aaffba6ae9ff9ed4c071b3e7dcef" name="tests/bulkwritecommand/bulkwritecommand-insertOne-001.phpt" role="test" />
<file md5sum="fee79f2f10bcf7f08c720de83c731eb1" name="tests/bulkwritecommand/bulkwritecommand-insertOne-002.phpt" role="test" />
<file md5sum="634f49773aab62e5df6c1c8d4da6ffd5" name="tests/bulkwritecommand/bulkwritecommand-insertOne-003.phpt" role="test" />
<file md5sum="5789e94004aae30f6d2f16cd53fb3ee8" name="tests/bulkwritecommand/bulkwritecommand-insertOne-004.phpt" role="test" />
<file md5sum="c1641f549151b7f35eb85fbec5668b20" name="tests/bulkwritecommand/bulkwritecommand-insertOne_error-001.phpt" role="test" />
<file md5sum="8643d7200827471ac3eda606c04fd07e" name="tests/bulkwritecommand/bulkwritecommand-insertOne_error-002.phpt" role="test" />
<file md5sum="a130cb9ff9800e4f6e42d7639be1a7fd" name="tests/bulkwritecommand/bulkwritecommand-insertOne_error-003.phpt" role="test" />
<file md5sum="2106666754ce4dd64dcaca29baef6543" name="tests/bulkwritecommand/bulkwritecommand-replaceOne-001.phpt" role="test" />
<file md5sum="57e84909cd34bac19038546762b85c80" name="tests/bulkwritecommand/bulkwritecommand-replaceOne-004.phpt" role="test" />
<file md5sum="985681b550c08010e7c62647195f9e38" name="tests/bulkwritecommand/bulkwritecommand-replaceOne-008.phpt" role="test" />
<file md5sum="daadde8951198045841c6fc4a4e2670e" name="tests/bulkwritecommand/bulkwritecommand-replaceOne_error-003.phpt" role="test" />
<file md5sum="5b272e0346d42bc19463ffc7132278f3" name="tests/bulkwritecommand/bulkwritecommand-replaceOne_error-004.phpt" role="test" />
<file md5sum="f4395a75fb90f657fe1e41e735c99243" name="tests/bulkwritecommand/bulkwritecommand-replaceOne_error-005.phpt" role="test" />
<file md5sum="d63ece0ee1dd5c31932310c3e0172dcf" name="tests/bulkwritecommand/bulkwritecommand-replaceOne_error-006.phpt" role="test" />
<file md5sum="e0cee8f72eb2b0df135d4e97d131f57e" name="tests/bulkwritecommand/bulkwritecommand-updateMany-002.phpt" role="test" />
<file md5sum="21a2ee8b65c96997457d5e2310c09141" name="tests/bulkwritecommand/bulkwritecommand-updateMany-003.phpt" role="test" />
<file md5sum="7c44910817dfb0f28e54cba0a332b236" name="tests/bulkwritecommand/bulkwritecommand-updateMany-005.phpt" role="test" />
<file md5sum="0c81c8b2b4495cbdf77f7540f6b7198f" name="tests/bulkwritecommand/bulkwritecommand-updateMany-007.phpt" role="test" />
<file md5sum="912a2102e6a758170b0201ab81136ad4" name="tests/bulkwritecommand/bulkwritecommand-updateOne-001.phpt" role="test" />
<file md5sum="d2db5c040b6c8574f372574100c8e11a" name="tests/bulkwritecommand/bulkwritecommand-updateOne-004.phpt" role="test" />
<file md5sum="bd6da9c40bcc2a4090f28e932206e01a" name="tests/bulkwritecommand/bulkwritecommand-updateOne-006.phpt" role="test" />
<file md5sum="55bfb5857fbd984a41b751356e00d919" name="tests/bulkwritecommand/bulkwritecommand-updateOne-008.phpt" role="test" />
<file md5sum="c382c218a17bbd197ec4287104ae8659" name="tests/bulkwritecommand/bulkwritecommand-updateOne_error-003.phpt" role="test" />
<file md5sum="bdeb514862b7a294b0c939d3bac7b4cb" name="tests/bulkwritecommand/bulkwritecommand-updateOne_error-004.phpt" role="test" />
<file md5sum="f525161e623f7f322d0a473e4a14847b" name="tests/bulkwritecommand/bulkwritecommand-updateOne_error-005.phpt" role="test" />
<file md5sum="e764f349b7b05e3b36ac718d7f141997" name="tests/bulkwritecommand/bulkwritecommand-updateOne_error-006.phpt" role="test" />
<file md5sum="5b81f31167afa52a1756cbfb7e4c9ff0" name="tests/bulkwritecommand/bulkwritecommandresult-debug-001.phpt" role="test" />
<file md5sum="ce4797a9bcdfcced18c66667511eb964" name="tests/bulkwritecommand/bulkwritecommandresult-isAcknowledged-001.phpt" role="test" />
<file md5sum="65991c5cf21ff7880925eb069e7e1619" name="tests/bulkwritecommand/manager-executeBulkWriteCommand-001.phpt" role="test" />
<file md5sum="8a84aa2809e47d792b6f2b7b3406d013" name="tests/bulkwritecommand/manager-executeBulkWriteCommand_error-001.phpt" role="test" />
<file md5sum="0aae966d930a962ae802e22b6a11a26d" name="tests/bulkwritecommand/manager-executeBulkWriteCommand_error-002.phpt" role="test" />
<file md5sum="4caab12c47c744aaa6c5590e783a6842" name="tests/bulkwritecommand/server-executeBulkWriteCommand-001.phpt" role="test" />
<file md5sum="1839a33ce9f62e5707fb2aacc25baa7c" name="tests/bulkwritecommand/server-executeBulkWriteCommand_error-001.phpt" role="test" />
<file md5sum="8d52f7e38c2e9a3d4295f67d36d7a537" name="tests/bulkwritecommand/server-executeBulkWriteCommand_error-002.phpt" role="test" />
<file md5sum="8a59042397146a6403b05d49d19927fc" name="tests/causal-consistency/causal-consistency-001.phpt" role="test" />
<file md5sum="d3e9eae691d9574829c6ac4fc15679cc" name="tests/causal-consistency/causal-consistency-002.phpt" role="test" />
<file md5sum="6d1002a0a4204a5e019e69bf0094d42e" name="tests/causal-consistency/causal-consistency-003.phpt" role="test" />
<file md5sum="01f052b8a6ad5b01bd77502b8629ee32" name="tests/causal-consistency/causal-consistency-004.phpt" role="test" />
<file md5sum="2b4e18dacb87a5d0bf1c918c969370a4" name="tests/causal-consistency/causal-consistency-005.phpt" role="test" />
<file md5sum="9f35b4daf0df6b58088828baa131a511" name="tests/causal-consistency/causal-consistency-006.phpt" role="test" />
<file md5sum="8939f754bbda25f29dec934c71aa6436" name="tests/causal-consistency/causal-consistency-007.phpt" role="test" />
<file md5sum="94d13af15b1f05867936624a980c5af6" name="tests/causal-consistency/causal-consistency-008.phpt" role="test" />
<file md5sum="39354f752f54b2dd511a726e72eb197e" name="tests/causal-consistency/causal-consistency-009.phpt" role="test" />
<file md5sum="91098da345011767e321e75deef99a1a" name="tests/causal-consistency/causal-consistency-010.phpt" role="test" />
<file md5sum="c4ce8b5d2f34064ab19f21e2f7049e2f" name="tests/causal-consistency/causal-consistency-011.phpt" role="test" />
<file md5sum="2528cc9b914cd2e641f673a8bff58c17" name="tests/causal-consistency/causal-consistency-012.phpt" role="test" />
<file md5sum="25a0642f36757a293916ae4ba496b827" name="tests/clientEncryption/bug2149.phpt" role="test" />
<file md5sum="f52b566c92d6ffcea1c1633c5362d3c7" name="tests/clientEncryption/clientEncryption-addKeyAltName-001.phpt" role="test" />
<file md5sum="fe911d4a00c17c837a05d5fc24e7f76e" name="tests/clientEncryption/clientEncryption-addKeyAltName-002.phpt" role="test" />
<file md5sum="1d9197654257f52d5ac746872f571269" name="tests/clientEncryption/clientEncryption-addKeyAltName_error-001.phpt" role="test" />
<file md5sum="6a8ca1d0c0e0154adffb6274ce04a221" name="tests/clientEncryption/clientEncryption-constants.phpt" role="test" />
<file md5sum="bcef1fbf684ee111c66ac9ef6a3697a7" name="tests/clientEncryption/clientEncryption-createDataKey-001.phpt" role="test" />
<file md5sum="b389452f0de6f6855ffc2b6b9f252118" name="tests/clientEncryption/clientEncryption-createDataKey-002.phpt" role="test" />
<file md5sum="f99410d38db30db6c2ff2ed0373e4acb" name="tests/clientEncryption/clientEncryption-createDataKey_error-001.phpt" role="test" />
<file md5sum="882dc3997dfdc9e831787cefb2db8db1" name="tests/clientEncryption/clientEncryption-createDataKey_error-002.phpt" role="test" />
<file md5sum="4d6925396699b926524f1e03fb21b633" name="tests/clientEncryption/clientEncryption-createDataKey_error-003.phpt" role="test" />
<file md5sum="f13a45a1a6a1dea39b571c38e2405310" name="tests/clientEncryption/clientEncryption-ctor-001.phpt" role="test" />
<file md5sum="7f82502e32c5058538fcc02e747c05bc" name="tests/clientEncryption/clientEncryption-ctor-002.phpt" role="test" />
<file md5sum="5b52cafe718fb96587dcae0ed590f734" name="tests/clientEncryption/clientEncryption-ctor_error-001.phpt" role="test" />
<file md5sum="eeb922107d148f5d038f3ff55981b162" name="tests/clientEncryption/clientEncryption-ctor_error-002.phpt" role="test" />
<file md5sum="a5eec1ceba4d50da70c55db512959163" name="tests/clientEncryption/clientEncryption-decrypt-001.phpt" role="test" />
<file md5sum="aaeb6ba827cdb2d2de57d14b52895282" name="tests/clientEncryption/clientEncryption-deleteKey-001.phpt" role="test" />
<file md5sum="5d7b165668ac7db79344d70e4e1bd3b4" name="tests/clientEncryption/clientEncryption-deleteKey-002.phpt" role="test" />
<file md5sum="998e772713ab64b8376f60341da46a47" name="tests/clientEncryption/clientEncryption-deleteKey_error-001.phpt" role="test" />
<file md5sum="9566014fe32a055d3e7127df875f3dc1" name="tests/clientEncryption/clientEncryption-encrypt-001.phpt" role="test" />
<file md5sum="73707ef734c2012e4852a3251f1fd009" name="tests/clientEncryption/clientEncryption-encryptExpression-001.phpt" role="test" />
<file md5sum="098b04b53cc30a3da6d5c527fbc2c760" name="tests/clientEncryption/clientEncryption-encryptExpression_error-001.phpt" role="test" />
<file md5sum="10215193731ac6bef6e940c4a2ded4d6" name="tests/clientEncryption/clientEncryption-encryptExpression_error-002.phpt" role="test" />
<file md5sum="8923ac613294a88ee6f8975b997e3968" name="tests/clientEncryption/clientEncryption-encrypt_error-001.phpt" role="test" />
<file md5sum="dda19841b997e38f1e2f6f146efcbb4f" name="tests/clientEncryption/clientEncryption-getKey-001.phpt" role="test" />
<file md5sum="8d314014bc73d804e4b9bc86837edae6" name="tests/clientEncryption/clientEncryption-getKey-002.phpt" role="test" />
<file md5sum="9e23305b5bcf3f71c5abacfa91788b09" name="tests/clientEncryption/clientEncryption-getKeyByAltName-001.phpt" role="test" />
<file md5sum="1eeb30fde34511203c413d354965c278" name="tests/clientEncryption/clientEncryption-getKeyByAltName-002.phpt" role="test" />
<file md5sum="2fc5c351ee52627dd80f5e7ed89d90ce" name="tests/clientEncryption/clientEncryption-getKey_error-001.phpt" role="test" />
<file md5sum="bd572960fd61e6a6cd1a2e6116396694" name="tests/clientEncryption/clientEncryption-getKeys-001.phpt" role="test" />
<file md5sum="d4fcb3061d9dd10e80fcdc669154e847" name="tests/clientEncryption/clientEncryption-getKeys-002.phpt" role="test" />
<file md5sum="72b64f3d0e78ecb61ec7ce054dd63dfd" name="tests/clientEncryption/clientEncryption-getKeys-003.phpt" role="test" />
<file md5sum="16b79df8100ab160a2272f9e7074ada9" name="tests/clientEncryption/clientEncryption-removeKeyAltName-001.phpt" role="test" />
<file md5sum="d9a64ec94da49129a39ce887ffb33721" name="tests/clientEncryption/clientEncryption-removeKeyAltName-002.phpt" role="test" />
<file md5sum="de1a1b45f1b3ce2933552090bedd790a" name="tests/clientEncryption/clientEncryption-removeKeyAltName-003.phpt" role="test" />
<file md5sum="74b4554e69493b9623407ba9fc5777cd" name="tests/clientEncryption/clientEncryption-removeKeyAltName_error-001.phpt" role="test" />
<file md5sum="bd9e269754dbf488ecb89c3fa4c4b57b" name="tests/clientEncryption/clientEncryption-rewrapManyDataKey-001.phpt" role="test" />
<file md5sum="7cc58929ddfcca7858a905002d6c01bf" name="tests/clientEncryption/clientEncryption-rewrapManyDataKey-002.phpt" role="test" />
<file md5sum="c120fd261fcee3e1f11570590a3c8d8c" name="tests/clientEncryption/clientEncryption-rewrapManyDataKey-003.phpt" role="test" />
<file md5sum="658c48e25f83eefc0c8b0752624dd555" name="tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-001.phpt" role="test" />
<file md5sum="878ad9663955e408ecaff7c328a4924e" name="tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-002.phpt" role="test" />
<file md5sum="ce7acc6ad164292c1ff9ff5fb00b062e" name="tests/clientEncryption/clientEncryption-rewrapManyDataKey_error-003.phpt" role="test" />
<file md5sum="9ad976b8e80eb2d6fc0558e98c96b679" name="tests/command/command-ctor-001.phpt" role="test" />
<file md5sum="f7d19d66f184f1f3a0375cea4bea03a4" name="tests/command/command-ctor-002.phpt" role="test" />
<file md5sum="0846173624e878f9e9fc597b3dd80b7a" name="tests/command/command-ctor_error-001.phpt" role="test" />
<file md5sum="81fbf19cf9cd5f5383c49d9fd3f177e8" name="tests/command/command_error-001.phpt" role="test" />
<file md5sum="df6a388af316e382971324bfe98593a2" name="tests/command/cursor-batchsize-001.phpt" role="test" />
<file md5sum="e2c4da055020ce9f1bf4b6cd20c7457b" name="tests/command/cursor-batchsize-002.phpt" role="test" />
<file md5sum="83726765053bac02f6b940d6fbd3e5eb" name="tests/command/cursor-comment-001.phpt" role="test" />
<file md5sum="dbbcfc4b838dcf02fac66f4e7aa1ffdc" name="tests/command/cursor-tailable-001.phpt" role="test" />
<file md5sum="e1994473378fa4935533460deec15f5b" name="tests/command/findAndModify-001.phpt" role="test" />
<file md5sum="0f0c8d871b716d4b0311b846d98b684c" name="tests/command/update-001.phpt" role="test" />
<file md5sum="ea6be8fad0813dddddd89982c760a34a" name="tests/connect/bug0720.phpt" role="test" />
<file md5sum="189ea40653380005c43dd67b9884450e" name="tests/connect/bug1015.phpt" role="test" />
<file md5sum="0ebcb8e508d1978211d1fe84732360cf" name="tests/connect/bug1045.phpt" role="test" />
<file md5sum="556c4d26da417b73c82bcb0ed9ab41e0" name="tests/connect/compression_error-001.phpt" role="test" />
<file md5sum="341af7c42107c40210903b7cb57070b2" name="tests/connect/compression_error-002.phpt" role="test" />
<file md5sum="83ff07823c743c67c76d808bac72bdd3" name="tests/connect/replicaset-seedlist-001.phpt" role="test" />
<file md5sum="689439f028c731f0daca49ae282096e2" name="tests/connect/replicaset-seedlist-002.phpt" role="test" />
<file md5sum="a4fc8812cf174d4c5d216704fce536ca" name="tests/connect/standalone-auth-001.phpt" role="test" />
<file md5sum="ab62017c209508bcc9cdb1dc4cde8c3b" name="tests/connect/standalone-auth_error-001.phpt" role="test" />
<file md5sum="c678e843cf60d1363dfd1195531f8a86" name="tests/connect/standalone-plain-0001.phpt" role="test" />
<file md5sum="36c31dca4f718a0162c118c50196877a" name="tests/connect/standalone-plain-0002.phpt" role="test" />
<file md5sum="5bd2e78cc438937ba63f4ebdcc7c09b7" name="tests/connect/standalone-ssl-no_verify-003.phpt" role="test" />
<file md5sum="240022b71966207b7b3a7336cba3a0e3" name="tests/connect/standalone-ssl-verify_cert-003.phpt" role="test" />
<file md5sum="36a7dfc2fa0f2841086845a0dc514a92" name="tests/connect/standalone-ssl-verify_cert-error-003.phpt" role="test" />
<file md5sum="04f0d0fb15a36071db84e00e7d72df76" name="tests/connect/standalone-x509-auth-001.phpt" role="test" />
<file md5sum="1773ff37778c0dd25ea59c8ccadf0187" name="tests/connect/standalone-x509-error-0001.phpt" role="test" />
<file md5sum="bcc9f25ee5347178926bd3bc513e65f6" name="tests/connect/standalone-x509-extract_username-001.phpt" role="test" />
<file md5sum="be75a888807351e00540edebf19c921b" name="tests/cursor/bug0671-001.phpt" role="test" />
<file md5sum="de71b16365183778e7d3386f2c077470" name="tests/cursor/bug0732-001.phpt" role="test" />
<file md5sum="034b4c5be16697c07400868165f6a410" name="tests/cursor/bug0849-001.phpt" role="test" />
<file md5sum="89ed69de8606051474d229f52d9c610a" name="tests/cursor/bug0924-001.phpt" role="test" />
<file md5sum="11c61bbbef3061305f14c4ab7a8d66df" name="tests/cursor/bug0924-002.phpt" role="test" />
<file md5sum="eeefe59478612d12a1ae042faab1e05e" name="tests/cursor/bug1050-001.phpt" role="test" />
<file md5sum="e511bdecfb315ca1c43aeda9ae5efea2" name="tests/cursor/bug1050-002.phpt" role="test" />
<file md5sum="963697c64f74660a5adf28d1ad23ff4f" name="tests/cursor/bug1151-001.phpt" role="test" />
<file md5sum="121a051c3f32dda640c00d7b60025fac" name="tests/cursor/bug1151-002.phpt" role="test" />
<file md5sum="25f41f7dee1132a7354f21b8fa0f0119" name="tests/cursor/bug1151-003.phpt" role="test" />
<file md5sum="739f511357f2205d495da8dd59c17cd2" name="tests/cursor/bug1151-004.phpt" role="test" />
<file md5sum="180dbf2e9601971abd6ddb91c1a6eaf1" name="tests/cursor/bug1152-001.phpt" role="test" />
<file md5sum="a292d6f29135e55c83ad0c5fa8dc5022" name="tests/cursor/bug1152-002.phpt" role="test" />
<file md5sum="1d2e6bd077d3d59cdec119361fa53b27" name="tests/cursor/bug1162-001.phpt" role="test" />
<file md5sum="bf8cbc0c05069a152b8ad8dd44ad1c52" name="tests/cursor/bug1274-001.phpt" role="test" />
<file md5sum="f65027c0cbea65ff1d59389522c6c0db" name="tests/cursor/bug1274-002.phpt" role="test" />
<file md5sum="c9fd874700bf6dceb27a030612dcc9b5" name="tests/cursor/bug1274-003.phpt" role="test" />
<file md5sum="87b2a9c6107ebaedc4222bdc5c146544" name="tests/cursor/bug1274-004.phpt" role="test" />
<file md5sum="56069f7c9aa3ad3ac77246cb95660561" name="tests/cursor/bug1274-005.phpt" role="test" />
<file md5sum="ad3d9cdf4554ce582454ee92389af53d" name="tests/cursor/bug1274-006.phpt" role="test" />
<file md5sum="9440c9d5824cb2c7a62e8ea821229519" name="tests/cursor/bug1419-001.phpt" role="test" />
<file md5sum="78ec934d754473d7aa8cedc6e2d2f385" name="tests/cursor/bug1529-001.phpt" role="test" />
<file md5sum="0287863386284b368c94796c8563818b" name="tests/cursor/bug1713-001.phpt" role="test" />
<file md5sum="03bc65d514988acceecd8b830c41f152" name="tests/cursor/cursor-001.phpt" role="test" />
<file md5sum="bf69deaf6361488462540564d8a8b657" name="tests/cursor/cursor-IteratorIterator-001.phpt" role="test" />
<file md5sum="67cadd0d7513523b7b83f0fffb5d2c67" name="tests/cursor/cursor-IteratorIterator-002.phpt" role="test" />
<file md5sum="c099283c71f289238f24febdf4e91a02" name="tests/cursor/cursor-IteratorIterator-003.phpt" role="test" />
<file md5sum="ce2b204d53dde74e4f820cef9ebcf283" name="tests/cursor/cursor-NoRewindIterator-001.phpt" role="test" />
<file md5sum="55ac0cb41e23fd4d7cfafec98db222a9" name="tests/cursor/cursor-destruct-001.phpt" role="test" />
<file md5sum="007dfe8e75d7a3b53f17cba2155544f4" name="tests/cursor/cursor-getmore-001.phpt" role="test" />
<file md5sum="43dc536482d1d475ca02ad3818b99b9f" name="tests/cursor/cursor-getmore-002.phpt" role="test" />
<file md5sum="b18d1c583fc853cd30e933b67a7106c1" name="tests/cursor/cursor-getmore-003.phpt" role="test" />
<file md5sum="1b3d6811a9036c2118bc8fa8d07d3996" name="tests/cursor/cursor-getmore-004.phpt" role="test" />
<file md5sum="8ae9b7ccf9d6d8812ec4e4b0c59da62e" name="tests/cursor/cursor-getmore-005.phpt" role="test" />
<file md5sum="9d12789c2c88b4fc79c512d9bd4661ed" name="tests/cursor/cursor-getmore-006.phpt" role="test" />
<file md5sum="6a28996e14074c84f2c98392786503b8" name="tests/cursor/cursor-isDead-001.phpt" role="test" />
<file md5sum="30d5decc604a425560270049a5ee695b" name="tests/cursor/cursor-isDead-002.phpt" role="test" />
<file md5sum="a587b8ffaf32c40cf2cd6e541b0fbbf1" name="tests/cursor/cursor-iterator-001.phpt" role="test" />
<file md5sum="7415ad3c7ac10d6052686ee1a5169dca" name="tests/cursor/cursor-iterator-002.phpt" role="test" />
<file md5sum="cd965b5a7e8a1037ef83cb2a6dd139b1" name="tests/cursor/cursor-iterator-003.phpt" role="test" />
<file md5sum="bbd82ccf15afb9d9ce2828853d6bc033" name="tests/cursor/cursor-iterator-004.phpt" role="test" />
<file md5sum="8fb2fbf644c00ee7e0bf977f8a1f211a" name="tests/cursor/cursor-iterator_handlers-001.phpt" role="test" />
<file md5sum="9ee993379dae963fa0d04f2311f20f35" name="tests/cursor/cursor-rewind-001.phpt" role="test" />
<file md5sum="9f28a895aad1306bda291b1a646d7413" name="tests/cursor/cursor-session-001.phpt" role="test" />
<file md5sum="bbed84470bb84d579ac1fbfcca009389" name="tests/cursor/cursor-session-002.phpt" role="test" />
<file md5sum="ba1cffb22b89e5bad92f41223d20125d" name="tests/cursor/cursor-session-003.phpt" role="test" />
<file md5sum="48637a611a5d4719d707a3570ac0aa28" name="tests/cursor/cursor-session-004.phpt" role="test" />
<file md5sum="998d0decf6831cdba654d86b6f1df9d4" name="tests/cursor/cursor-setTypeMap_error-001.phpt" role="test" />
<file md5sum="8610f9892fb81dde0b9031042cd6d3c5" name="tests/cursor/cursor-setTypeMap_error-002.phpt" role="test" />
<file md5sum="d96e197d6e6b6a2cb42ce308c7b2750e" name="tests/cursor/cursor-setTypeMap_error-003.phpt" role="test" />
<file md5sum="4abb0c26665adbf6e88f96fbb46eeb4b" name="tests/cursor/cursor-setTypeMap_error-004.phpt" role="test" />
<file md5sum="b84aece5c9dbc1284e9200e75b63713d" name="tests/cursor/cursor-tailable-001.phpt" role="test" />
<file md5sum="b91df472b35c89949aab04c55b91999d" name="tests/cursor/cursor-tailable-002.phpt" role="test" />
<file md5sum="60a670668cf45f8e2ad86a58ddd4ed8b" name="tests/cursor/cursor-tailable-003.phpt" role="test" />
<file md5sum="fb143952fe649c057eb164922963ea39" name="tests/cursor/cursor-tailable_error-001.phpt" role="test" />
<file md5sum="9a11f5ea30986c1ab3d7a72397fe417e" name="tests/cursor/cursor-tailable_error-002.phpt" role="test" />
<file md5sum="b5bda059f5a97bb8b3b012891ba29460" name="tests/cursor/cursor-toArray-001.phpt" role="test" />
<file md5sum="86ada58a54e588c1b9527792de5541d3" name="tests/cursor/cursor-toArray-002.phpt" role="test" />
<file md5sum="11ce7d49c58b1efbef42e52612f2ed3e" name="tests/cursor/cursor_error-001.phpt" role="test" />
<file md5sum="49edc5f2ed0cef6989f5fb272510daba" name="tests/cursor/cursorid-getId-001.phpt" role="test" />
<file md5sum="74ee254ba8edcea3575d523499bc542a" name="tests/cursor/cursorinterface-001.phpt" role="test" />
<file md5sum="750ca6c340fef3613609ea83f6a3752c" name="tests/cursor/cursorinterface-002.phpt" role="test" />
<file md5sum="3131108d88d58ae30f2ac0a9a21d6991" name="tests/exception/bulkwriteexception-getwriteresult-001.phpt" role="test" />
<file md5sum="0c742d44e6e7d6cc44043ff7c7d52dfd" name="tests/exception/bulkwriteexception-haserrorlabel-001.phpt" role="test" />
<file md5sum="fce6dc19bc4cb460175affee7d1d7f17" name="tests/exception/bulkwriteexception-haserrorlabel-002.phpt" role="test" />
<file md5sum="9affde6e5226e248967e3ee33a5feef0" name="tests/exception/bulkwriteexception-haserrorlabel_error-001.phpt" role="test" />
<file md5sum="3e9c3271339857aef8899898a777f806" name="tests/exception/commandexception-getresultdocument-001.phpt" role="test" />
<file md5sum="f517ae8a8ad62e3fa2fe69d282367ea4" name="tests/exception/commandexception-haserrorlabel-001.phpt" role="test" />
<file md5sum="69b64eec21ec54c479dfe557269598ab" name="tests/exception/commandexception-haserrorlabel_error-001.phpt" role="test" />
<file md5sum="6bcc1ed27df3ddbe16f549c82803d0cf" name="tests/exception/exception-001.phpt" role="test" />
<file md5sum="0f64ba7a9c355b2ee9a30d5f3f2241b8" name="tests/exception/runtimeexception-haserrorlabel-001.phpt" role="test" />
<file md5sum="98fe8f2b6fc815b91199a9d9fb9320f3" name="tests/exception/runtimeexception-haserrorlabel_error-001.phpt" role="test" />
<file md5sum="d078443aa427bf7a9b9fa31383027c38" name="tests/functional/cursor-001.phpt" role="test" />
<file md5sum="da4e53779264aed6c4ee66c918acdc09" name="tests/functional/cursorid-001.phpt" role="test" />
<file md5sum="e2ec8630d72d7056d7e354dfa7c8ceea" name="tests/functional/query-sort-001.phpt" role="test" />
<file md5sum="70eadbd23fde7c9fe3e47c0660019662" name="tests/functional/query-sort-002.phpt" role="test" />
<file md5sum="5ebf5ea95564a7e037329ded2b56a48e" name="tests/functional/query-sort-003.phpt" role="test" />
<file md5sum="8e70257d7a72c98343e8958aba53f720" name="tests/functional/query-sort-004.phpt" role="test" />
<file md5sum="6bbd8a73a4ddc363257f26a055744e05" name="tests/ini/ini-debug-ini_get-001.phpt" role="test" />
<file md5sum="329a0fb960668dfb38b5d59a221c39f5" name="tests/ini/ini-debug-ini_get-002.phpt" role="test" />
<file md5sum="8eb3c43b6e36a4ddb9df1e05439ae08d" name="tests/ini/ini-debug-phpinfo-001.phpt" role="test" />
<file md5sum="09aca68640353346b8794e157930e547" name="tests/ini/ini-debug-phpinfo-002.phpt" role="test" />
<file md5sum="88a957e71c781958e8ede6d9464f8a6b" name="tests/logging/logging-addSubscriber-001.phpt" role="test" />
<file md5sum="96580a8c9af7c742f767b4a0a4b80287" name="tests/logging/logging-addSubscriber-002.phpt" role="test" />
<file md5sum="89dcfe91aefaa5ed057b3dbb365f718b" name="tests/logging/logging-addSubscriber-003.phpt" role="test" />
<file md5sum="53849cdb1d357e025628557e7080781e" name="tests/logging/logging-addSubscriber-004.phpt" role="test" />
<file md5sum="6e46da5c8a56d4f8f0c0d0e7f866fea2" name="tests/logging/logging-addSubscriber-005.phpt" role="test" />
<file md5sum="0eb92d5d7c910d69baa178aea71187c4" name="tests/logging/logging-removeSubscriber-001.phpt" role="test" />
<file md5sum="b7fd3a682ee74af355777ead649a484d" name="tests/logging/logging-removeSubscriber-002.phpt" role="test" />
<file md5sum="58ad191d0046c3c31366fe19fe9ad0f0" name="tests/logging/logging-removeSubscriber-003.phpt" role="test" />
<file md5sum="8f9a9c17da710d6c7bcdabf6022f4ad7" name="tests/logging/logsubscriber-constants.phpt" role="test" />
<file md5sum="671e9a7d73930e111ab8c9dbf2c41aeb" name="tests/logging/mongoc_log_error-001.phpt" role="test" />
<file md5sum="7714b468f9f5113ee55f26bbe4706a0a" name="tests/logging/mongoc_log_error-002.phpt" role="test" />
<file md5sum="4450df6a5d9e58df894eb77f1c5dad2e" name="tests/logging/mongoc_log_error-003.phpt" role="test" />
<file md5sum="f0346e6cd2ba9520eef5021167879c4e" name="tests/manager/bug0851-001.phpt" role="test" />
<file md5sum="eb1c288def3ad2711f856313fabd08ee" name="tests/manager/bug0912-001.phpt" role="test" />
<file md5sum="f6de9f3ae346da76b6a0f777ed1bb04a" name="tests/manager/bug0913-001.phpt" role="test" />
<file md5sum="4109c1ada63f9cb6b50ad61cf831258a" name="tests/manager/bug0940-001.phpt" role="test" />
<file md5sum="bdafd000abbbf9c3dac45926d02a6335" name="tests/manager/bug1163-001.phpt" role="test" />
<file md5sum="472af988ce42a4de1b200ea40f7051bb" name="tests/manager/manager-addSubscriber-001.phpt" role="test" />
<file md5sum="9f07e24879987ab55bfdd775d61d3bcd" name="tests/manager/manager-addSubscriber-002.phpt" role="test" />
<file md5sum="1a3e07055f5e167c115a62ff49227393" name="tests/manager/manager-addSubscriber-003.phpt" role="test" />
<file md5sum="6a6699a0aea2a69ec24c10079d601845" name="tests/manager/manager-addSubscriber-004.phpt" role="test" />
<file md5sum="efadeb0a3d75c816146dadcc3f0e5b3b" name="tests/manager/manager-addSubscriber-005.phpt" role="test" />
<file md5sum="a822fc13c859cdbecb23d151724de057" name="tests/manager/manager-addSubscriber-006.phpt" role="test" />
<file md5sum="ca7d0f8e358b27c1f27db3dc23e85c0d" name="tests/manager/manager-addSubscriber_error-001.phpt" role="test" />
<file md5sum="a82e94f14792da1c8e98885ab49c0d2b" name="tests/manager/manager-createClientEncryption-001.phpt" role="test" />
<file md5sum="cc2ec9dedc92e65426c43fa6e3446b88" name="tests/manager/manager-createClientEncryption-error-001.phpt" role="test" />
<file md5sum="eb71f85d2eb9c38292ad932af4a3b4ba" name="tests/manager/manager-createClientEncryption-error-002.phpt" role="test" />
<file md5sum="d582d6ff744cdbf6f65a37e63faac924" name="tests/manager/manager-ctor-001.phpt" role="test" />
<file md5sum="ddb6ad56c0bddfdcddc28eac459c2ec7" name="tests/manager/manager-ctor-002.phpt" role="test" />
<file md5sum="bf482d24f1467be19b603557a6cb8e6c" name="tests/manager/manager-ctor-003.phpt" role="test" />
<file md5sum="cd62592a5c1c3b6c855b698735a1b9eb" name="tests/manager/manager-ctor-004.phpt" role="test" />
<file md5sum="23db0653a78cb7318c9978f1fc87bba9" name="tests/manager/manager-ctor-005.phpt" role="test" />
<file md5sum="7747cbf6bee84e93ed0ca1bb249af376" name="tests/manager/manager-ctor-006.phpt" role="test" />
<file md5sum="63826ceaf67ba68e92278c9f212ea931" name="tests/manager/manager-ctor-007.phpt" role="test" />
<file md5sum="5114f45044457fc9fa9b6913bb412a7b" name="tests/manager/manager-ctor-008.phpt" role="test" />
<file md5sum="7ee075e78215384bc775165f5bcaecc2" name="tests/manager/manager-ctor-appname-001.phpt" role="test" />
<file md5sum="407f236f707abcb938e7f065dd1346fc" name="tests/manager/manager-ctor-appname_error-001.phpt" role="test" />
<file md5sum="0f29f362757476ecaa36f936d16a7c20" name="tests/manager/manager-ctor-auth_mechanism-001.phpt" role="test" />
<file md5sum="7e334d9c4f17adc4ec5be12d461207b6" name="tests/manager/manager-ctor-auth_mechanism-002.phpt" role="test" />
<file md5sum="2e7cfd7ab77f97ab8261f464f84fb030" name="tests/manager/manager-ctor-auth_mechanism-error-001.phpt" role="test" />
<file md5sum="b36422d0897ec7f315fdb5f3391d7341" name="tests/manager/manager-ctor-auth_source-001.phpt" role="test" />
<file md5sum="8b81b0ec62644af387dd1b88d3c3ba44" name="tests/manager/manager-ctor-auto_encryption-001.phpt" role="test" />
<file md5sum="6750d4ab8192b1244278eafd20828485" name="tests/manager/manager-ctor-auto_encryption-002.phpt" role="test" />
<file md5sum="cd5bc0eccd387c9609e5f89d0446572b" name="tests/manager/manager-ctor-auto_encryption-error-001.phpt" role="test" />
<file md5sum="4c289dc44bc8b0cb26e33502fdc77fa8" name="tests/manager/manager-ctor-auto_encryption-error-002.phpt" role="test" />
<file md5sum="ba43a5ff1ae1f5838dc8fc97b9fb0e7b" name="tests/manager/manager-ctor-auto_encryption-error-003.phpt" role="test" />
<file md5sum="d0238b5a888b09f3fb3ce54c60fc1571" name="tests/manager/manager-ctor-auto_encryption-error-004.phpt" role="test" />
<file md5sum="bbd66e27c8ae892d3ba42417a0bc0fd7" name="tests/manager/manager-ctor-directconnection-001.phpt" role="test" />
<file md5sum="e85a2529c8de114992f22289800615fc" name="tests/manager/manager-ctor-directconnection-error-001.phpt" role="test" />
<file md5sum="b3680d5e2c654cba916f7e523b04ee9c" name="tests/manager/manager-ctor-directconnection-error-002.phpt" role="test" />
<file md5sum="0a4c7fdb304b664df108aa9a6fa54e82" name="tests/manager/manager-ctor-disableClientPersistence-001.phpt" role="test" />
<file md5sum="2e3bbe239f1aba35a1c6ba9589f8ee76" name="tests/manager/manager-ctor-disableClientPersistence-002.phpt" role="test" />
<file md5sum="10c3c2d46b5447b1a7c1b446cef8f5d4" name="tests/manager/manager-ctor-disableClientPersistence-003.phpt" role="test" />
<file md5sum="220dfefa93b81ded8cf90c1be371a6d5" name="tests/manager/manager-ctor-disableClientPersistence-004.phpt" role="test" />
<file md5sum="5f46a29a8e3b5c36a013946b19d0f22a" name="tests/manager/manager-ctor-disableClientPersistence-005.phpt" role="test" />
<file md5sum="3e34e2072d0e054fddc7bdb6ac3c8237" name="tests/manager/manager-ctor-disableClientPersistence-006.phpt" role="test" />
<file md5sum="f6ffd08e1d928971f96f3498eb7a7de6" name="tests/manager/manager-ctor-disableClientPersistence-007.phpt" role="test" />
<file md5sum="b80f61209563751f07a4a285c0b72986" name="tests/manager/manager-ctor-disableClientPersistence_error-001.phpt" role="test" />
<file md5sum="684d21bfb847f1d4f949c55ada08c349" name="tests/manager/manager-ctor-driver-metadata-001.phpt" role="test" />
<file md5sum="67384c6652b0a650e410eb5667e2a5af" name="tests/manager/manager-ctor-duplicate-option-001.phpt" role="test" />
<file md5sum="9311bb62f8740436ef91ef7a0fe5c97a" name="tests/manager/manager-ctor-duplicate-option-002.phpt" role="test" />
<file md5sum="d6b52ffcafa9ceaf363ebdb07c10cc75" name="tests/manager/manager-ctor-duplicate-option-003.phpt" role="test" />
<file md5sum="7538039ec421e2ae634e91ba24999408" name="tests/manager/manager-ctor-duplicate-option-004.phpt" role="test" />
<file md5sum="b5a10d899434b9deef074274da9e6259" name="tests/manager/manager-ctor-loadBalanced_error-001.phpt" role="test" />
<file md5sum="ee7822e3b58b7abb5ccee0a87dc86e4d" name="tests/manager/manager-ctor-read_concern-001.phpt" role="test" />
<file md5sum="c3050181118743d791b3ed29bdb4dd03" name="tests/manager/manager-ctor-read_concern-error-001.phpt" role="test" />
<file md5sum="79e97d46bf35dde168a2b2c8b304d259" name="tests/manager/manager-ctor-read_preference-001.phpt" role="test" />
<file md5sum="a68f0249fa21dc829486e9b349d5835a" name="tests/manager/manager-ctor-read_preference-002.phpt" role="test" />
<file md5sum="804afa19a932863f8cfe321f96b6795f" name="tests/manager/manager-ctor-read_preference-error-001.phpt" role="test" />
<file md5sum="168b9448ba25614c452395a7801acd2d" name="tests/manager/manager-ctor-read_preference-error-002.phpt" role="test" />
<file md5sum="27ca549dbb89c00049059ec7aa61e080" name="tests/manager/manager-ctor-read_preference-error-004.phpt" role="test" />
<file md5sum="15ff7aaa3b2ccb96efac1fd5817e7496" name="tests/manager/manager-ctor-server.phpt" role="test" />
<file md5sum="c171411d3b5afee0d060fac5ed96b8b6" name="tests/manager/manager-ctor-serverApi-001.phpt" role="test" />
<file md5sum="fd58121e4d808d98a6ab5e723fb0948b" name="tests/manager/manager-ctor-serverApi-error-001.phpt" role="test" />
<file md5sum="189f7b0da30ee877dd930d11b14b6a1a" name="tests/manager/manager-ctor-srvMaxHosts_error-001.phpt" role="test" />
<file md5sum="d3c81af87b476fadf7ab31a0830a750e" name="tests/manager/manager-ctor-srvServiceName_error-001.phpt" role="test" />
<file md5sum="0f5384a769df66ede31e0c1bcd91db3b" name="tests/manager/manager-ctor-ssl-001.phpt" role="test" />
<file md5sum="8d337e05d276045180bfba817238f5f9" name="tests/manager/manager-ctor-ssl-002.phpt" role="test" />
<file md5sum="80664e19f82704d7f9fbb9973d34bd4b" name="tests/manager/manager-ctor-ssl-003.phpt" role="test" />
<file md5sum="485381d433a7d2df4e2864183167783d" name="tests/manager/manager-ctor-tls-error-001.phpt" role="test" />
<file md5sum="78fd7230fed15c73d514a4f5bb6b28db" name="tests/manager/manager-ctor-wireversion.phpt" role="test" />
<file md5sum="f5f725515b3e0d3000a190ca90a48902" name="tests/manager/manager-ctor-write_concern-001.phpt" role="test" />
<file md5sum="f57f8e8063d723e1cd9e01a7e65cdcf6" name="tests/manager/manager-ctor-write_concern-002.phpt" role="test" />
<file md5sum="a795c0a05f3f14eee39dc899c6b8b353" name="tests/manager/manager-ctor-write_concern-003.phpt" role="test" />
<file md5sum="243320fdfc028f0156dab89e0a4111fd" name="tests/manager/manager-ctor-write_concern-004.phpt" role="test" />
<file md5sum="3082087d08245cfd506d8e9c065552eb" name="tests/manager/manager-ctor-write_concern-005.phpt" role="test" />
<file md5sum="19a3af22d908692a494ff19407488831" name="tests/manager/manager-ctor-write_concern-006.phpt" role="test" />
<file md5sum="5d28e6043e9e02f5cb9d8cf1888467be" name="tests/manager/manager-ctor-write_concern-error-001.phpt" role="test" />
<file md5sum="90ccf4bb2ee95f53ffbb1e9fb28c77c0" name="tests/manager/manager-ctor-write_concern-error-002.phpt" role="test" />
<file md5sum="e5da84659c4d520d3b4136e0d269bbc6" name="tests/manager/manager-ctor-write_concern-error-003.phpt" role="test" />
<file md5sum="d3b771a0f6d4272d609f30f617ec72cf" name="tests/manager/manager-ctor-write_concern-error-005.phpt" role="test" />
<file md5sum="b84a33ba0c7e0ffbc2d281a260891c96" name="tests/manager/manager-ctor-write_concern-error-006.phpt" role="test" />
<file md5sum="2ad014b8f8dfde5313342d05f0d8198a" name="tests/manager/manager-ctor-write_concern-error-007.phpt" role="test" />
<file md5sum="3ad6b15c16b8d14633b5f677b94a0050" name="tests/manager/manager-ctor_error-001.phpt" role="test" />
<file md5sum="ad3bd333cd908ee4c406c7b110e97f61" name="tests/manager/manager-ctor_error-002.phpt" role="test" />
<file md5sum="86011518b34adc130bbb597b39b95b2e" name="tests/manager/manager-ctor_error-003.phpt" role="test" />
<file md5sum="3626db363099e33cd39331fde78f46c3" name="tests/manager/manager-ctor_error-004.phpt" role="test" />
<file md5sum="1ea3fe7629cdebd837254fd1b0730514" name="tests/manager/manager-ctor_error-005.phpt" role="test" />
<file md5sum="faf8d6c452ba1d3db0765cfdfabf7aee" name="tests/manager/manager-debug-001.phpt" role="test" />
<file md5sum="be7a1f8e254e09eaebe52cfabd489034" name="tests/manager/manager-debug-002.phpt" role="test" />
<file md5sum="b99cf3e782d7e1fba6a320e7815305f5" name="tests/manager/manager-debug-003.phpt" role="test" />
<file md5sum="4259a7b351904d6953d98b315be1ae65" name="tests/manager/manager-destruct-001.phpt" role="test" />
<file md5sum="9858166f195e0b105301c23b6436fdea" name="tests/manager/manager-executeBulkWrite-001.phpt" role="test" />
<file md5sum="9206434f496fb925d1b0a499f4f5b790" name="tests/manager/manager-executeBulkWrite-002.phpt" role="test" />
<file md5sum="d677e3dbe915d7799541477aeb4ea377" name="tests/manager/manager-executeBulkWrite-003.phpt" role="test" />
<file md5sum="3c8bc99af44c66e6c3d36a5a4d5bd8ba" name="tests/manager/manager-executeBulkWrite-004.phpt" role="test" />
<file md5sum="9e2e4162b402edd002462bb5125df34e" name="tests/manager/manager-executeBulkWrite-005.phpt" role="test" />
<file md5sum="795731bd50229fee29f2f80356f9df66" name="tests/manager/manager-executeBulkWrite-006.phpt" role="test" />
<file md5sum="65087ac5e6795aec5235055a07b42d5d" name="tests/manager/manager-executeBulkWrite-007.phpt" role="test" />
<file md5sum="ea6d63c6200730caf72ab5985375bc23" name="tests/manager/manager-executeBulkWrite-008.phpt" role="test" />
<file md5sum="22eecd73ad4e7f112efb4f91dcde274c" name="tests/manager/manager-executeBulkWrite-009.phpt" role="test" />
<file md5sum="1e4b2286bc8e60d3000a70c555857d55" name="tests/manager/manager-executeBulkWrite-010.phpt" role="test" />
<file md5sum="2e069928ae83a0dd0773d30aebab5924" name="tests/manager/manager-executeBulkWrite-011.phpt" role="test" />
<file md5sum="fd19517c24c5a6d555ce057ca860ed71" name="tests/manager/manager-executeBulkWrite-012.phpt" role="test" />
<file md5sum="4a08d8ca47b6634ac392e8551282cd50" name="tests/manager/manager-executeBulkWrite-013.phpt" role="test" />
<file md5sum="d518608f1d6ba9e787603aa42e95a87a" name="tests/manager/manager-executeBulkWrite-014.phpt" role="test" />
<file md5sum="17edeebb5d2d6fe81f16ff75186ecb14" name="tests/manager/manager-executeBulkWrite_error-001.phpt" role="test" />
<file md5sum="055caec5920283895721528c49541692" name="tests/manager/manager-executeBulkWrite_error-002.phpt" role="test" />
<file md5sum="f0eae58e09d0e1059ac6769f99a6fdc4" name="tests/manager/manager-executeBulkWrite_error-003.phpt" role="test" />
<file md5sum="88da3b97b15660e6185a1e9a1bc993ef" name="tests/manager/manager-executeBulkWrite_error-004.phpt" role="test" />
<file md5sum="3dc3b5ef89417bc0590b904585335f88" name="tests/manager/manager-executeBulkWrite_error-005.phpt" role="test" />
<file md5sum="78bf40680ecc66aa370a9bd96e4aa8f9" name="tests/manager/manager-executeBulkWrite_error-006.phpt" role="test" />
<file md5sum="b3ace17b87a0ff9a38535aab0735318f" name="tests/manager/manager-executeBulkWrite_error-007.phpt" role="test" />
<file md5sum="4fc2ff48edb6d3b24c055a79c3768528" name="tests/manager/manager-executeBulkWrite_error-008.phpt" role="test" />
<file md5sum="7c989b5bd98732cfecc3bc46488e76ed" name="tests/manager/manager-executeBulkWrite_error-009.phpt" role="test" />
<file md5sum="0230472d8a9e6e5f979972a5296447e0" name="tests/manager/manager-executeBulkWrite_error-010.phpt" role="test" />
<file md5sum="ec99c21e5928121af04ce66bf708f252" name="tests/manager/manager-executeCommand-001.phpt" role="test" />
<file md5sum="aea9364688bfb5a5b866d50b40ecf86c" name="tests/manager/manager-executeCommand-002.phpt" role="test" />
<file md5sum="9b5c7c64629e6ba652a812a4755a5d9e" name="tests/manager/manager-executeCommand-004.phpt" role="test" />
<file md5sum="eb54735876d5b2cfa2254f36dee96fcb" name="tests/manager/manager-executeCommand-005.phpt" role="test" />
<file md5sum="25703dba306cfa484ea7c7fe150d9a86" name="tests/manager/manager-executeCommand-006.phpt" role="test" />
<file md5sum="c77cc61748533707a12f5fd68839fe9b" name="tests/manager/manager-executeCommand-007.phpt" role="test" />
<file md5sum="414cb9ff3e5179fd483cd2a9d1d5c6c5" name="tests/manager/manager-executeCommand_error-001.phpt" role="test" />
<file md5sum="3a6361131801e5716a8ceacc11632924" name="tests/manager/manager-executeCommand_error-002.phpt" role="test" />
<file md5sum="ac72ebf6080b999ac922854f877c0896" name="tests/manager/manager-executeCommand_error-003.phpt" role="test" />
<file md5sum="609298cc6697cfa6303b3a16ad29fbf2" name="tests/manager/manager-executeCommand_error-004.phpt" role="test" />
<file md5sum="7f2ac9637e5fea5e5a796dffa612ad7b" name="tests/manager/manager-executeCommand_error-005.phpt" role="test" />
<file md5sum="a4bd4054f9e33874b706920dacee6ecf" name="tests/manager/manager-executeQuery-002.phpt" role="test" />
<file md5sum="3fedd10a7a35526ff47009b1e15f98db" name="tests/manager/manager-executeQuery-003.phpt" role="test" />
<file md5sum="0883d41b39acb6bc8347a03038dd19ee" name="tests/manager/manager-executeQuery-005.phpt" role="test" />
<file md5sum="d2b957d04be0f84243425f051329a30c" name="tests/manager/manager-executeQuery-006.phpt" role="test" />
<file md5sum="4397e3a049cf85e53f15beea02220ddc" name="tests/manager/manager-executeQuery-007.phpt" role="test" />
<file md5sum="18e9275267d96345a2365a618bf09ada" name="tests/manager/manager-executeQuery_error-001.phpt" role="test" />
<file md5sum="77de256019cf2c997e2dab1f5bc3a9e0" name="tests/manager/manager-executeQuery_error-002.phpt" role="test" />
<file md5sum="3c9dbb9e16de715ecd2f14d46afe8d0b" name="tests/manager/manager-executeQuery_error-003.phpt" role="test" />
<file md5sum="9dd22c3c91fa7ce10367c4294f55e4ea" name="tests/manager/manager-executeReadCommand-001.phpt" role="test" />
<file md5sum="a0b869caad05b5965cce7cf826904f3c" name="tests/manager/manager-executeReadCommand-002.phpt" role="test" />
<file md5sum="5c93e515f5a14d09fc062d959d105b08" name="tests/manager/manager-executeReadCommand-003.phpt" role="test" />
<file md5sum="10bf137557e0d4db82110694c981d5c6" name="tests/manager/manager-executeReadCommand_error-001.phpt" role="test" />
<file md5sum="4764835d6787201f3457712cf4282f04" name="tests/manager/manager-executeReadWriteCommand-001.phpt" role="test" />
<file md5sum="c813dd43cd5321f0af87763f6b1d9b80" name="tests/manager/manager-executeReadWriteCommand-002.phpt" role="test" />
<file md5sum="4969e1c51e63c5de7dae2228323f51d2" name="tests/manager/manager-executeReadWriteCommand-003.phpt" role="test" />
<file md5sum="7c1a531a50d4abdda38e30aecb95cb28" name="tests/manager/manager-executeReadWriteCommand_error-001.phpt" role="test" />
<file md5sum="c9399ff2f0afba6d4f6eddeef157a0d2" name="tests/manager/manager-executeReadWriteCommand_error-002.phpt" role="test" />
<file md5sum="60e8d449b9e05e92f7bd388728a49fa3" name="tests/manager/manager-executeWriteCommand-001.phpt" role="test" />
<file md5sum="1ad68515d769c576adedc214870fec71" name="tests/manager/manager-executeWriteCommand-002.phpt" role="test" />
<file md5sum="caa13ad0a35b45393296fee760c8624e" name="tests/manager/manager-executeWriteCommand-003.phpt" role="test" />
<file md5sum="3ae03d1aff8ebbc34f63713fc61a3871" name="tests/manager/manager-executeWriteCommand_error-001.phpt" role="test" />
<file md5sum="d0786f10e106a21127d5fffdaac12d90" name="tests/manager/manager-executeWriteCommand_error-002.phpt" role="test" />
<file md5sum="3552239623dd45961c879ac52a69ec17" name="tests/manager/manager-executeWriteCommand_error-003.phpt" role="test" />
<file md5sum="209ae7fa335c75ccbd98deed9d4719f7" name="tests/manager/manager-executeWriteCommand_error-004.phpt" role="test" />
<file md5sum="99763f5ff11405182d4d0ac5fc36d4a2" name="tests/manager/manager-getencryptedfieldsmap-001.phpt" role="test" />
<file md5sum="0c869cc5b61b1891fb9860b5c631797f" name="tests/manager/manager-getreadconcern-001.phpt" role="test" />
<file md5sum="f01ca8d5ec0497d3c83c20fbfbd78df9" name="tests/manager/manager-getreadpreference-001.phpt" role="test" />
<file md5sum="03b5f6a61ced57942d19e3179196e2f3" name="tests/manager/manager-getservers-001.phpt" role="test" />
<file md5sum="ecd5cca20434921ed49475e5bf0a9264" name="tests/manager/manager-getservers-002.phpt" role="test" />
<file md5sum="5cb96f5b8c994e360692ef80b430085d" name="tests/manager/manager-getwriteconcern-001.phpt" role="test" />
<file md5sum="56dac5c4a4ee50a9c4fd1d8d818bf61a" name="tests/manager/manager-invalidnamespace.phpt" role="test" />
<file md5sum="248e50a0cf00d17ab8489cbd5198c47f" name="tests/manager/manager-removeSubscriber-001.phpt" role="test" />
<file md5sum="ec1d9d6544132312d2f961bb0fc6992d" name="tests/manager/manager-removeSubscriber-002.phpt" role="test" />
<file md5sum="59cf29ecacb6f5d625af2b0f72a65445" name="tests/manager/manager-selectServer-001.phpt" role="test" />
<file md5sum="2041bf47ba3d52885998335f0fa3f103" name="tests/manager/manager-selectServer-002.phpt" role="test" />
<file md5sum="85dd0bb1fe863ec492c938eb2f369ae0" name="tests/manager/manager-selectserver_error-001.phpt" role="test" />
<file md5sum="c15437810b5e9743907a04e11ebc4871" name="tests/manager/manager-serialization_error-001.phpt" role="test" />
<file md5sum="8e039926e7293962b4b2fbe1f4b4b02b" name="tests/manager/manager-set-uri-options-001.phpt" role="test" />
<file md5sum="689d0debb6b1cb16c5df289acd7afd78" name="tests/manager/manager-set-uri-options-002.phpt" role="test" />
<file md5sum="b14b9c0c319df84f08950bbb38bfe333" name="tests/manager/manager-set-uri-options-003.phpt" role="test" />
<file md5sum="36c7420f1c3573c6c5fd1e5431b08327" name="tests/manager/manager-startSession_error-001.phpt" role="test" />
<file md5sum="d03c97d72fbfd14acc89562cc6c4f4e1" name="tests/manager/manager-startSession_error-002.phpt" role="test" />
<file md5sum="da2ad1d3d56ad8751c548c3790b56841" name="tests/manager/manager-var-dump-001.phpt" role="test" />
<file md5sum="9fbed7bd60817812ebb3ad0c1554082c" name="tests/manager/manager_error-001.phpt" role="test" />
<file md5sum="2dd9863434c753dd55242243d48091c9" name="tests/query/bug0430-001.phpt" role="test" />
<file md5sum="6cfbe0ca5de33e4402bf779a44d64b4e" name="tests/query/bug0430-002.phpt" role="test" />
<file md5sum="6004d177d8ffc04a0a295eb824697e4a" name="tests/query/bug0430-003.phpt" role="test" />
<file md5sum="98abf3e157699031672444f4bc98193d" name="tests/query/bug2457-001.phpt" role="test" />
<file md5sum="c96eccc22471a2f4b7870adb61fd195b" name="tests/query/query-ctor-001.phpt" role="test" />
<file md5sum="8abde6aa802820f88da79b158033adce" name="tests/query/query-ctor-002.phpt" role="test" />
<file md5sum="67950d4d5797d184b29ac4e09af8a63d" name="tests/query/query-ctor-005.phpt" role="test" />
<file md5sum="260dfd56f6ff3bf9e5bd020136b6109d" name="tests/query/query-ctor-007.phpt" role="test" />
<file md5sum="22863ef6334dfe0cee84c89f08bcdf4f" name="tests/query/query-ctor-comment-001.phpt" role="test" />
<file md5sum="b8d0d76833d79184b7ac187668506dc9" name="tests/query/query-ctor-comment_error-001.phpt" role="test" />
<file md5sum="87fb3754a99ba587db8df50427c44378" name="tests/query/query-ctor-let-001.phpt" role="test" />
<file md5sum="34a38b6cf63e6f4dcbddc2ecff3948a7" name="tests/query/query-ctor-let_error-001.phpt" role="test" />
<file md5sum="1fa6107c1eaf117eaf5407690aea9fd6" name="tests/query/query-ctor_error-001.phpt" role="test" />
<file md5sum="94664c6309b85c31445464a1c7bde394" name="tests/query/query-ctor_error-002.phpt" role="test" />
<file md5sum="de31d8c1a0133c54a5ec710543ebcc52" name="tests/query/query-ctor_error-004.phpt" role="test" />
<file md5sum="d535216394d0c494d16c1b3314a9a84c" name="tests/query/query-ctor_error-005.phpt" role="test" />
<file md5sum="771c2de819fa84ec3f8d89336beb1e14" name="tests/query/query-ctor_error-006.phpt" role="test" />
<file md5sum="fd0c5c65471a77a0390bf9dfd51e6e87" name="tests/query/query-ctor_error-007.phpt" role="test" />
<file md5sum="032695ec9701bef01ec999542edd2d6f" name="tests/query/query-debug-001.phpt" role="test" />
<file md5sum="57f3ca7bf3cfc8f4891162117e0e43ee" name="tests/query/query-debug-002.phpt" role="test" />
<file md5sum="40b6ac367eaa659a9bcfdbd8dc971d9b" name="tests/query/query-debug-003.phpt" role="test" />
<file md5sum="872a288691976f48f0f5c0b03e5cd2ed" name="tests/query/query_error-001.phpt" role="test" />
<file md5sum="a235c15b6d12006dd86cd3fc9d364abd" name="tests/readConcern/bug1598-001.phpt" role="test" />
<file md5sum="a28caee4fb327c3825636a3c84d63b4a" name="tests/readConcern/bug1598-002.phpt" role="test" />
<file md5sum="9d082d9ae5d0620fb87609422f3d848c" name="tests/readConcern/readconcern-bsonserialize-001.phpt" role="test" />
<file md5sum="d69611a05e9f23cc6fc47eb864c6f9fe" name="tests/readConcern/readconcern-bsonserialize-002.phpt" role="test" />
<file md5sum="d964c2eae3f1a7ec5daf4296a9429e0c" name="tests/readConcern/readconcern-constants.phpt" role="test" />
<file md5sum="0b0e4399f655b0af56f9723e68a9ef8f" name="tests/readConcern/readconcern-ctor-001.phpt" role="test" />
<file md5sum="c1f4a3040b96c582e164b9d6aa50e12c" name="tests/readConcern/readconcern-ctor_error-001.phpt" role="test" />
<file md5sum="26e67aad3c09451d3fe96047e0619757" name="tests/readConcern/readconcern-ctor_error-002.phpt" role="test" />
<file md5sum="1754fe8ebbdda6e59d15dabeec37ae71" name="tests/readConcern/readconcern-debug-001.phpt" role="test" />
<file md5sum="84e45c948af32008e5b61eafc1f999fd" name="tests/readConcern/readconcern-getlevel-001.phpt" role="test" />
<file md5sum="7bc12b0529eef007f25068e8a410d755" name="tests/readConcern/readconcern-isdefault-001.phpt" role="test" />
<file md5sum="e270dc3696c9d382c0cf1359aa639992" name="tests/readConcern/readconcern-serialization-002.phpt" role="test" />
<file md5sum="ae3585bd6541c2193757466fed8d911d" name="tests/readConcern/readconcern-serialization_error-002.phpt" role="test" />
<file md5sum="a5049b6a96dd443815d0dd94bb649693" name="tests/readConcern/readconcern-set_state-001.phpt" role="test" />
<file md5sum="324870d2b3da8a4730a2684ffb878724" name="tests/readConcern/readconcern-set_state_error-001.phpt" role="test" />
<file md5sum="b7664c0b4985872d541e1c06f33306da" name="tests/readConcern/readconcern-var_export-001.phpt" role="test" />
<file md5sum="626fe59437a671f6c480e6a813dcf777" name="tests/readConcern/readconcern_error-001.phpt" role="test" />
<file md5sum="ecc8faf6d803e690208d8dec05cf550a" name="tests/readPreference/bug0146-001.phpt" role="test" />
<file md5sum="81d74a6cd47b3ce91943c5e1db170ed8" name="tests/readPreference/bug0851-001.phpt" role="test" />
<file md5sum="bdc1634fe23391ae15928e87da27e5dc" name="tests/readPreference/bug1598-001.phpt" role="test" />
<file md5sum="42932911b10ba1a3be09ef4f883144e9" name="tests/readPreference/bug1598-002.phpt" role="test" />
<file md5sum="20d09af75e7eb7eda7844ad5bb0de8e4" name="tests/readPreference/bug1698-001.phpt" role="test" />
<file md5sum="c881a28c742dd180c730e08bd24383af" name="tests/readPreference/readpreference-bsonserialize-001.phpt" role="test" />
<file md5sum="fbcf4ce321f2aa9e2aa7500858e8716f" name="tests/readPreference/readpreference-bsonserialize-002.phpt" role="test" />
<file md5sum="88d6608ed0e8aca9f935ecb986fec369" name="tests/readPreference/readpreference-constants-001.phpt" role="test" />
<file md5sum="f885a01386ff4e18710df40c06ecb694" name="tests/readPreference/readpreference-ctor-001.phpt" role="test" />
<file md5sum="4fe7a3e52e517e7b76b6bf14e1358a9e" name="tests/readPreference/readpreference-ctor-002.phpt" role="test" />
<file md5sum="f26e3c6d00bee1654069a01df225af66" name="tests/readPreference/readpreference-ctor_error-001.phpt" role="test" />
<file md5sum="8bb8cfd0f7e589fd1c1fd03cc7606613" name="tests/readPreference/readpreference-ctor_error-002.phpt" role="test" />
<file md5sum="7f1b530ab6b5f740104018377027ec88" name="tests/readPreference/readpreference-ctor_error-003.phpt" role="test" />
<file md5sum="abe24d95a13a7c0d837167a8b9a07c1f" name="tests/readPreference/readpreference-ctor_error-004.phpt" role="test" />
<file md5sum="10ef25e96af761a4d69ee7929598d941" name="tests/readPreference/readpreference-ctor_error-007.phpt" role="test" />
<file md5sum="862bf983ced9bcbee9bd9f0f0a852711" name="tests/readPreference/readpreference-ctor_error-008.phpt" role="test" />
<file md5sum="db3aabbd37d4174fa610d708e40a847a" name="tests/readPreference/readpreference-debug-001.phpt" role="test" />
<file md5sum="09ef643089a2ef5a3b7169bd2b4b491b" name="tests/readPreference/readpreference-getHedge-001.phpt" role="test" />
<file md5sum="1a9a6112a7138b77e6466e8ad671bae8" name="tests/readPreference/readpreference-getMaxStalenessMS-001.phpt" role="test" />
<file md5sum="917131aadbd26697fbc3ac5923fa46bf" name="tests/readPreference/readpreference-getMaxStalenessMS-002.phpt" role="test" />
<file md5sum="20dc710725900a46f23dbff1d6366b1d" name="tests/readPreference/readpreference-getModeString-001.phpt" role="test" />
<file md5sum="2c7964e92015a650ab83e5e0f0fc434d" name="tests/readPreference/readpreference-getTagSets-001.phpt" role="test" />
<file md5sum="74a95fd229d950e7116b5ff0fd78db56" name="tests/readPreference/readpreference-getTagSets-002.phpt" role="test" />
<file md5sum="e3c220d3fd305ebe5a13902755779a36" name="tests/readPreference/readpreference-serialization-002.phpt" role="test" />
<file md5sum="203f0edf4dd5661a40d7f1a99a641c90" name="tests/readPreference/readpreference-serialization_error-002.phpt" role="test" />
<file md5sum="bca9617f969c558aabab69cbbb85b54f" name="tests/readPreference/readpreference-set_state-001.phpt" role="test" />
<file md5sum="0b5e53fe4398b1bb8d8fb42487135b39" name="tests/readPreference/readpreference-set_state_error-001.phpt" role="test" />
<file md5sum="862edb823e451326954908c96fa3337d" name="tests/readPreference/readpreference-set_state_error-002.phpt" role="test" />
<file md5sum="60f1af2e0c8526e12b451dffc46c7f03" name="tests/readPreference/readpreference-var_export-001.phpt" role="test" />
<file md5sum="b2df8c5d8346e04359efa29eaab86f3c" name="tests/readPreference/readpreference_error-001.phpt" role="test" />
<file md5sum="8aebe449acfe8c41f341ff03066a6126" name="tests/replicaset/bug0155.phpt" role="test" />
<file md5sum="10bda8d50276bcea0dc8ab4e1b0e07fa" name="tests/replicaset/bug0898-001.phpt" role="test" />
<file md5sum="3055fdc9202aedd4e2ed6c49dd0343c4" name="tests/replicaset/bug0898-002.phpt" role="test" />
<file md5sum="b4785752ada9a060611d03e22d5ad447" name="tests/replicaset/manager-selectserver-001.phpt" role="test" />
<file md5sum="b0086b872237d01e08a0fff849c5787f" name="tests/replicaset/readconcern-001.phpt" role="test" />
<file md5sum="670bad910f75f6a447a68510593da72b" name="tests/replicaset/writeconcernerror-001.phpt" role="test" />
<file md5sum="7e8505a84aebae38f63e488231333e58" name="tests/replicaset/writeconcernerror-002.phpt" role="test" />
<file md5sum="7cf4d893a4cae40d9e7ca817d231c33d" name="tests/replicaset/writeresult-getserver-001.phpt" role="test" />
<file md5sum="47ec43a325b6d0e4a08fae645048ffba" name="tests/replicaset/writeresult-getserver-002.phpt" role="test" />
<file md5sum="f9cb3d4ee014a30264fb5e523e90b377" name="tests/retryable-reads/retryable-reads-001.phpt" role="test" />
<file md5sum="0765100682aed3416ed3f6cdcfb8d9eb" name="tests/retryable-reads/retryable-reads-002.phpt" role="test" />
<file md5sum="3c7da533abca5f44fc2a8c3de857621c" name="tests/retryable-reads/retryable-reads_error-001.phpt" role="test" />
<file md5sum="b183b7709576a5cf64465006b93887e9" name="tests/retryable-reads/retryable-reads_error-002.phpt" role="test" />
<file md5sum="ad58c595b3bd4f7e50bd58be1bb1999c" name="tests/retryable-writes/retryable-writes-001.phpt" role="test" />
<file md5sum="5c9824a483a7ef1ca4a17c0f1cefd313" name="tests/retryable-writes/retryable-writes-002.phpt" role="test" />
<file md5sum="8f6d11e7ca0d9aa16b143099ca6c2d53" name="tests/retryable-writes/retryable-writes-003.phpt" role="test" />
<file md5sum="e79cbdc8001b616fbdbaf81e0e65cca4" name="tests/retryable-writes/retryable-writes-004.phpt" role="test" />
<file md5sum="2bdfbe1a4f28c8a7189e5fd9e492b7d5" name="tests/retryable-writes/retryable-writes-005.phpt" role="test" />
<file md5sum="f73fcc5beca298ed93cfbb920be52a51" name="tests/retryable-writes/retryable-writes_error-001.phpt" role="test" />
<file md5sum="b6eb14c1d79b243c0153dbd551148170" name="tests/server/bug0671-002.phpt" role="test" />
<file md5sum="48b01991b47cc25751a6cf7796aeddaf" name="tests/server/server-constants.phpt" role="test" />
<file md5sum="118b30ef453ec6253600d76cdd450803" name="tests/server/server-construct-001.phpt" role="test" />
<file md5sum="b3317c5a9c1822a706abd8380ad39b96" name="tests/server/server-debug.phpt" role="test" />
<file md5sum="7b1c205df7700100ddd510fe1c02bfa6" name="tests/server/server-errors.phpt" role="test" />
<file md5sum="30bc6beb49545cf838241e2325c1106f" name="tests/server/server-executeBulkWrite-001.phpt" role="test" />
<file md5sum="978ca3d45a1b32970976af272290da75" name="tests/server/server-executeBulkWrite-002.phpt" role="test" />
<file md5sum="1d7b68312471a4c5deeb3163c7955eb6" name="tests/server/server-executeBulkWrite-003.phpt" role="test" />
<file md5sum="4d1ca0190d83fbdef39d6765fc4c53b9" name="tests/server/server-executeBulkWrite-004.phpt" role="test" />
<file md5sum="cd0b19fc4c1aa42280cab30fc403308b" name="tests/server/server-executeBulkWrite-005.phpt" role="test" />
<file md5sum="584c723b46b65ada439833878b9827c0" name="tests/server/server-executeBulkWrite-006.phpt" role="test" />
<file md5sum="df367f2fb167a020a86e4c5f441146bf" name="tests/server/server-executeBulkWrite-007.phpt" role="test" />
<file md5sum="8febec6c2f0d437d0ec29caf8a1bda06" name="tests/server/server-executeBulkWrite-008.phpt" role="test" />
<file md5sum="8e8c4e7c00f1db9cc303003d29b95693" name="tests/server/server-executeBulkWrite-009.phpt" role="test" />
<file md5sum="8aa02e60563a0cd77653110e2f829ebc" name="tests/server/server-executeBulkWrite_error-001.phpt" role="test" />
<file md5sum="62e009034e488ea52b3e4880d5be49eb" name="tests/server/server-executeBulkWrite_error-002.phpt" role="test" />
<file md5sum="c6b762d00285a92cb2ca9d5582bb78fc" name="tests/server/server-executeCommand-001.phpt" role="test" />
<file md5sum="0d30cc0604b5adad99b4de797f87e4c6" name="tests/server/server-executeCommand-002.phpt" role="test" />
<file md5sum="0362d3cada008f319a775a01a9f49c1b" name="tests/server/server-executeCommand-003.phpt" role="test" />
<file md5sum="436a238dc817b3d3c4e8a3b0c599fc45" name="tests/server/server-executeCommand-004.phpt" role="test" />
<file md5sum="95b6835fbd75dd6f1ffcc0568c864e08" name="tests/server/server-executeCommand-006.phpt" role="test" />
<file md5sum="f5cc1886b23eaef43a0f4b743bbbe678" name="tests/server/server-executeCommand-007.phpt" role="test" />
<file md5sum="9a8541f7ee17ee763e2587728a35e70b" name="tests/server/server-executeCommand-008.phpt" role="test" />
<file md5sum="34ba337b799b4d9ac1f6de03ee8c4847" name="tests/server/server-executeCommand-009.phpt" role="test" />
<file md5sum="cb2851e0b80b29bec23b3d87244f6fb5" name="tests/server/server-executeCommand-010.phpt" role="test" />
<file md5sum="6a0b2ee91ae7989f5b0b4157d8beda20" name="tests/server/server-executeCommand_error-001.phpt" role="test" />
<file md5sum="0fba40ada9f345ba296a11e771a4fa28" name="tests/server/server-executeQuery-001.phpt" role="test" />
<file md5sum="7d6abfb7e95373573fbf6fa59e721734" name="tests/server/server-executeQuery-002.phpt" role="test" />
<file md5sum="786fb95ad650d21a3738b31654d6db09" name="tests/server/server-executeQuery-004.phpt" role="test" />
<file md5sum="32f0522d8290b285b64d3c678fcddc1b" name="tests/server/server-executeQuery-006.phpt" role="test" />
<file md5sum="6ddbcd8187987e36aa47b1c91ff47fe5" name="tests/server/server-executeQuery-007.phpt" role="test" />
<file md5sum="bebf95a088f142d1110506924ef8977f" name="tests/server/server-executeQuery-008.phpt" role="test" />
<file md5sum="02bd31c10400675abee9581bff7e3f9b" name="tests/server/server-executeQuery-009.phpt" role="test" />
<file md5sum="66a2e65ff2aeef52273984df64596175" name="tests/server/server-executeQuery-011.phpt" role="test" />
<file md5sum="70627156bf8447754259f4ec54a33ca8" name="tests/server/server-executeQuery-012.phpt" role="test" />
<file md5sum="b82554034b4271053bbe208858cda081" name="tests/server/server-executeQuery-013.phpt" role="test" />
<file md5sum="ac0c93a0c441dba7b48ab59a225b97a9" name="tests/server/server-executeQuery_error-001.phpt" role="test" />
<file md5sum="97d5052ae4e4aef067bf991a1c8ac8a5" name="tests/server/server-executeReadCommand-001.phpt" role="test" />
<file md5sum="8b6fc02521a1901f05e353370e7f8ee5" name="tests/server/server-executeReadCommand-002.phpt" role="test" />
<file md5sum="8fc7bcc947d50d6fccf64fdb34b01e5d" name="tests/server/server-executeReadCommand-003.phpt" role="test" />
<file md5sum="5824b6c364633eed238cf8760bc84295" name="tests/server/server-executeReadCommand_error-001.phpt" role="test" />
<file md5sum="6aa10777cd4b7a5857c71039b58f7940" name="tests/server/server-executeReadWriteCommand-001.phpt" role="test" />
<file md5sum="d1fe71cee62f9491a73b09551840825c" name="tests/server/server-executeReadWriteCommand-002.phpt" role="test" />
<file md5sum="b6350951e4aeb9270d940b551cf5145e" name="tests/server/server-executeReadWriteCommand-003.phpt" role="test" />
<file md5sum="34f3403ae623f7800f68571fd85cf58b" name="tests/server/server-executeReadWriteCommand_error-001.phpt" role="test" />
<file md5sum="a615b7dd0da53299c047a0f905079f1b" name="tests/server/server-executeWriteCommand-001.phpt" role="test" />
<file md5sum="97b1c9cf42fbf431702c78183c6571db" name="tests/server/server-executeWriteCommand-002.phpt" role="test" />
<file md5sum="2f93789872e1453422986a2ed7052f26" name="tests/server/server-executeWriteCommand-003.phpt" role="test" />
<file md5sum="7e3c87b6edf7a64c4465a69530732f98" name="tests/server/server-executeWriteCommand_error-001.phpt" role="test" />
<file md5sum="908279399a57c639c82ff4fe1ea2036d" name="tests/server/server-getInfo-001.phpt" role="test" />
<file md5sum="a0c7cbf92555d8c8a961edbfdac92685" name="tests/server/server-getLatency-001.phpt" role="test" />
<file md5sum="d48bdb590104928b42ace95b62f7ed0a" name="tests/server/server-getLatency-002.phpt" role="test" />
<file md5sum="53d08da4a63f4b403a592c0c4b29526a" name="tests/server/server-getServerDescription-001.phpt" role="test" />
<file md5sum="5a88d70fa5a0cfbf5e0a5030787fb09a" name="tests/server/server-getTags-001.phpt" role="test" />
<file md5sum="93d1818b704c415bb309c58044b299c4" name="tests/server/server-getTags-002.phpt" role="test" />
<file md5sum="eed3333d1956c2ec13d99ad095c5e91c" name="tests/server/server_error-001.phpt" role="test" />
<file md5sum="47317cff71d468ebe61d741d71a2e499" name="tests/serverApi/serverApi-bsonserialize-001.phpt" role="test" />
<file md5sum="afde498a7cdeae0f161a7b130f1c4d8c" name="tests/serverApi/serverApi-bsonserialize-002.phpt" role="test" />
<file md5sum="a2392cc37aa1d30469140b791cc8ed84" name="tests/serverApi/serverApi-construct-001.phpt" role="test" />
<file md5sum="abf58c35668375559c6268ae126efe6d" name="tests/serverApi/serverApi-debug.phpt" role="test" />
<file md5sum="2b7a1a330486b3013688c2f39be19697" name="tests/serverApi/serverApi-serialization-002.phpt" role="test" />
<file md5sum="42f78240cda576fbd76f7e0cfc78f823" name="tests/serverApi/serverApi-serialization_error-002.phpt" role="test" />
<file md5sum="524125419ae9c83fad4fc96533a1a992" name="tests/serverApi/serverApi-set_state-001.phpt" role="test" />
<file md5sum="8e58f2fb54c09f56da57773a188a1c73" name="tests/serverApi/serverApi-set_state_error-001.phpt" role="test" />
<file md5sum="f460a9851721564de331d42d86f44ecd" name="tests/serverApi/serverApi-var_export-001.phpt" role="test" />
<file md5sum="ee1b9429abdc682a0dab5810d5065a49" name="tests/serverDescription/serverDescription-constants.phpt" role="test" />
<file md5sum="0720df3be175bba730376d3dfcc562e0" name="tests/serverDescription/serverDescription-debug-001.phpt" role="test" />
<file md5sum="ee5fcc26ac6494d62d213df062118079" name="tests/serverDescription/serverDescription-getHelloResponse-001.phpt" role="test" />
<file md5sum="85a5f91600730b9909cebef3263269fe" name="tests/serverDescription/serverDescription-getHost-001.phpt" role="test" />
<file md5sum="6260e17daf2ed937773a019b560c0628" name="tests/serverDescription/serverDescription-getLastUpdateTime-001.phpt" role="test" />
<file md5sum="ee367002592bead6eb0f38a96d59fc17" name="tests/serverDescription/serverDescription-getLastUpdateTime-002.phpt" role="test" />
<file md5sum="6da7822ec082fd74c42095dbf0c705ac" name="tests/serverDescription/serverDescription-getPort-001.phpt" role="test" />
<file md5sum="07a5cf52ad8e035fc2ca6e0ed4e08654" name="tests/serverDescription/serverDescription-getRoundTripTime-001.phpt" role="test" />
<file md5sum="00fa91c208967234609f1c70f51b8f4b" name="tests/serverDescription/serverDescription-getType-001.phpt" role="test" />
<file md5sum="e9f4ab03e27a57e3e061428ccfd141ae" name="tests/serverDescription/serverDescription-var_export-001.phpt" role="test" />
<file md5sum="88d6b70b08d0499be1df22f03ffe33fd" name="tests/session/bug1274-001.phpt" role="test" />
<file md5sum="281153d39883a4cfc395347a90766a6e" name="tests/session/bug1274-002.phpt" role="test" />
<file md5sum="6847f7be9faed95de46a43f3b969d078" name="tests/session/bug1274-003.phpt" role="test" />
<file md5sum="77e7a7474ad07ab60895238d17dab331" name="tests/session/bug1274-004.phpt" role="test" />
<file md5sum="24a3b4f65057a4d2edf4a5a7665641d4" name="tests/session/bug1274-005.phpt" role="test" />
<file md5sum="564b331a0c0a0e4865561fa132ac622f" name="tests/session/bug1274-006.phpt" role="test" />
<file md5sum="e02e97bba7cda7f3b1a9f733370d4186" name="tests/session/session-001.phpt" role="test" />
<file md5sum="a0bde2bc600e656ce4fc68c82c962149" name="tests/session/session-002.phpt" role="test" />
<file md5sum="07f179ebe1cd9e281688be12bac98855" name="tests/session/session-003.phpt" role="test" />
<file md5sum="50d18fb03e0c133f58a48ac0567cce0b" name="tests/session/session-004.phpt" role="test" />
<file md5sum="55028dc0255b302ea1e48b70d9c84633" name="tests/session/session-005.phpt" role="test" />
<file md5sum="a1534efa6e4be70889ce4e3cdd5bfeb4" name="tests/session/session-advanceClusterTime-001.phpt" role="test" />
<file md5sum="1f64cf2fc890b0cddf04b0a0694fd2c2" name="tests/session/session-advanceOperationTime-001.phpt" role="test" />
<file md5sum="35cc4f4df8c4f6823d639be1e1d3f5d0" name="tests/session/session-advanceOperationTime-002.phpt" role="test" />
<file md5sum="5918049b83c009a0428450429d89b751" name="tests/session/session-advanceOperationTime-003.phpt" role="test" />
<file md5sum="1f17d580ae59b10f5cf420d554a917c0" name="tests/session/session-advanceOperationTime_error-001.phpt" role="test" />
<file md5sum="fbb595e8678c01364659e4e6b966133c" name="tests/session/session-commitTransaction-001.phpt" role="test" />
<file md5sum="ae4075d8629d54ce74448dc56562af31" name="tests/session/session-constants.phpt" role="test" />
<file md5sum="5b28cc9db2744f230aebbed44e6ccc8c" name="tests/session/session-debug-001.phpt" role="test" />
<file md5sum="820590242b5e118fa46f15087995b766" name="tests/session/session-debug-002.phpt" role="test" />
<file md5sum="7ddae48afa4a0061992d429d7f33994d" name="tests/session/session-debug-003.phpt" role="test" />
<file md5sum="b8428d2436e019d424a16f1e64ae8fe5" name="tests/session/session-debug-004.phpt" role="test" />
<file md5sum="313f189ea60620ce3f23c6ce5c0be05a" name="tests/session/session-debug-005.phpt" role="test" />
<file md5sum="311571cea0857208bf3477d5bf696048" name="tests/session/session-debug-006.phpt" role="test" />
<file md5sum="ebded0814c160954f0f725a1d139ba84" name="tests/session/session-debug-007.phpt" role="test" />
<file md5sum="007301127176ed86d3717a4a120fcabf" name="tests/session/session-endSession-001.phpt" role="test" />
<file md5sum="be157fd514c0e54b02ddd0d001e9b733" name="tests/session/session-endSession-002.phpt" role="test" />
<file md5sum="047663a229a1398ddf09580af0b1065f" name="tests/session/session-getClusterTime-001.phpt" role="test" />
<file md5sum="dd1b4d449e49ff4ad12b7dcae787a045" name="tests/session/session-getLogicalSessionId-001.phpt" role="test" />
<file md5sum="c7731b7bb01087a5a302e193d4d4de04" name="tests/session/session-getOperationTime-001.phpt" role="test" />
<file md5sum="4f144ae06868c02faddbeaf7a3c99a85" name="tests/session/session-getTransactionOptions-001.phpt" role="test" />
<file md5sum="d8861674e657c7f538bfec79587d8daa" name="tests/session/session-getTransactionState-001.phpt" role="test" />
<file md5sum="b2f2659248eac4a9fa069c1764d8a458" name="tests/session/session-isDirty-001.phpt" role="test" />
<file md5sum="79abf68b491c002b36c67b1485dcea20" name="tests/session/session-isInTransaction-001.phpt" role="test" />
<file md5sum="d2e85244ca1595ea1aea216ce74cb3b0" name="tests/session/session-startTransaction-001.phpt" role="test" />
<file md5sum="66b3d2185152fed858c46a333cf7cfb4" name="tests/session/session-startTransaction_error-001.phpt" role="test" />
<file md5sum="7e0f0cb9c9acaab18feb93171707fad3" name="tests/session/session-startTransaction_error-002.phpt" role="test" />
<file md5sum="8ed626b15b7b51bc62a30ed19d9164d5" name="tests/session/session-startTransaction_error-004.phpt" role="test" />
<file md5sum="f11a7d20e9064f2e464aa3472dac377f" name="tests/session/session-startTransaction_error-005.phpt" role="test" />
<file md5sum="cf9cb4bd8e63acaad16ffb6a1b3cf4e1" name="tests/session/transaction-integration-001.phpt" role="test" />
<file md5sum="0e8b366aa9781103bb1fc37fc685b9ab" name="tests/session/transaction-integration-002.phpt" role="test" />
<file md5sum="c0a958f2da4e0e64e946b2d21a391475" name="tests/session/transaction-integration-003.phpt" role="test" />
<file md5sum="2205a55501e7d1b51873749f6f73380b" name="tests/session/transaction-integration_error-001.phpt" role="test" />
<file md5sum="8f80677316e350aa0f839263120d32df" name="tests/session/transaction-integration_error-002.phpt" role="test" />
<file md5sum="005c410b5eae4853c8181e9da9dfe9d9" name="tests/session/transaction-integration_error-003.phpt" role="test" />
<file md5sum="8d57f720d8c54d0a09ed8dd5c3b57998" name="tests/session/transaction-integration_error-004.phpt" role="test" />
<file md5sum="f8500fd70f234db2c5b176de9768fc18" name="tests/standalone/bug0231.phpt" role="test" />
<file md5sum="d3780db83fa5dd757b2fa14e6e8cee69" name="tests/standalone/bug0357.phpt" role="test" />
<file md5sum="5252574e766615dc8e3f59832aef1214" name="tests/standalone/bug0545.phpt" role="test" />
<file md5sum="7ec0be606371d41790ba43b1de8fc308" name="tests/standalone/bug0655.phpt" role="test" />
<file md5sum="ec3c0bb4e15c9c29e46f84c4b0189794" name="tests/standalone/command-aggregate-001.phpt" role="test" />
<file md5sum="545faf9d019b2c579f0cebc65e78927a" name="tests/standalone/connectiontimeoutexception-001.phpt" role="test" />
<file md5sum="1d77a988b9eb32025b6e87f228ad0363" name="tests/standalone/executiontimeoutexception-001.phpt" role="test" />
<file md5sum="4d78ffda28c4d6ec4201ad9c7311bd9d" name="tests/standalone/executiontimeoutexception-002.phpt" role="test" />
<file md5sum="68994a8889b0374c6cda3226457901bb" name="tests/standalone/manager-as-singleton.phpt" role="test" />
<file md5sum="bb25fc25c134935d184b9f5dff5a9a79" name="tests/standalone/update-multi-001.phpt" role="test" />
<file md5sum="30a26e97af13ade9aa65992a5d5d85d8" name="tests/standalone/write-error-001.phpt" role="test" />
<file md5sum="6a29cd2e4dc1dcbbd4eb4f22eabec4f5" name="tests/standalone/writeresult-isacknowledged-001.phpt" role="test" />
<file md5sum="dadcd10a51366a31ba1782e8073dffb5" name="tests/standalone/writeresult-isacknowledged-002.phpt" role="test" />
<file md5sum="013890a5136f2606e6632ce1cc13525c" name="tests/standalone/writeresult-isacknowledged-003.phpt" role="test" />
<file md5sum="3add3334968577e9622a91649d79c63a" name="tests/topologyDescription/topologyDescription-constants.phpt" role="test" />
<file md5sum="2fae346fdc3e134dbe622f5035ff1be6" name="tests/topologyDescription/topologyDescription-debug-001.phpt" role="test" />
<file md5sum="7c85ec90de7a1bfa3c29fe3224245cd7" name="tests/topologyDescription/topologyDescription-getServers-001.phpt" role="test" />
<file md5sum="882e1374fc007a5578707b86c660f8c8" name="tests/topologyDescription/topologyDescription-getType-001.phpt" role="test" />
<file md5sum="b31e651818dc08504eb7b09a0c919be0" name="tests/topologyDescription/topologyDescription-hasReadableServer-001.phpt" role="test" />
<file md5sum="69425510e007602bfaecdb2d36c77221" name="tests/topologyDescription/topologyDescription-hasReadableServer-002.phpt" role="test" />
<file md5sum="5d0dabd42c4e862cd6b9dca2b5769dab" name="tests/topologyDescription/topologyDescription-hasReadableServer_error-001.phpt" role="test" />
<file md5sum="8cd6d1bf40d0e2d5e1e59311525aafbd" name="tests/topologyDescription/topologyDescription-hasWritableServer-001.phpt" role="test" />
<file md5sum="59adebd29ef983f00c4d55cfc4b2d10d" name="tests/utils/PHONGO-FIXTURES.json.gz" role="test" />
<file md5sum="20bcdb186e464bebff08400730d55afd" name="tests/utils/basic-skipif.inc" role="test" />
<file md5sum="db6db9ef2eaccae822679906332c27a2" name="tests/utils/basic.inc" role="test" />
<file md5sum="087aa9fa4d115c8c971e7b1db8cf59f9" name="tests/utils/classes.inc" role="test" />
<file md5sum="8e3aeef58e3b8540755e37817a8b4d8d" name="tests/utils/observer.php" role="test" />
<file md5sum="c2267289417ef149ff27a5df1ed06a58" name="tests/utils/skipif.php" role="test" />
<file md5sum="e414de7f7a7d5508845ada571238d2ab" name="tests/utils/tools.php" role="test" />
<file md5sum="64ee8e2ef24e46d681df686739aa4e69" name="tests/writeConcern/bug1598-001.phpt" role="test" />
<file md5sum="c7771ec7a47f2d16de18a16c0b932576" name="tests/writeConcern/bug1598-002.phpt" role="test" />
<file md5sum="040454fc69c09b2b2238cfa218f4b434" name="tests/writeConcern/writeconcern-bsonserialize-001.phpt" role="test" />
<file md5sum="073e73d11253900ad6d1e3e1b0656d20" name="tests/writeConcern/writeconcern-bsonserialize-002.phpt" role="test" />
<file md5sum="a02e1015d4bc797ff8a68613342f28c5" name="tests/writeConcern/writeconcern-bsonserialize-003.phpt" role="test" />
<file md5sum="64c7fb44e466938561d753546b82c22f" name="tests/writeConcern/writeconcern-bsonserialize-004.phpt" role="test" />
<file md5sum="08cc65bfe3d89314eca5a43616e12202" name="tests/writeConcern/writeconcern-constants.phpt" role="test" />
<file md5sum="3dbbdae846359bf00358aad47b0b7ae6" name="tests/writeConcern/writeconcern-ctor-001.phpt" role="test" />
<file md5sum="1f9f66d9446fa0f5ce954d88abe56e70" name="tests/writeConcern/writeconcern-ctor-002.phpt" role="test" />
<file md5sum="04b1a413620234518b86f7ce3d5c7be0" name="tests/writeConcern/writeconcern-ctor_error-001.phpt" role="test" />
<file md5sum="02824e85df59bb1d26cd28e0c6d4775d" name="tests/writeConcern/writeconcern-ctor_error-002.phpt" role="test" />
<file md5sum="727cc4fe9885dc11716446782384160f" name="tests/writeConcern/writeconcern-ctor_error-003.phpt" role="test" />
<file md5sum="be881f8e0077d593ce05110808600265" name="tests/writeConcern/writeconcern-ctor_error-004.phpt" role="test" />
<file md5sum="6ff4840ca262801e9e58c69253f45ae8" name="tests/writeConcern/writeconcern-ctor_error-005.phpt" role="test" />
<file md5sum="22dfaec3917fe798f71c15d857a36921" name="tests/writeConcern/writeconcern-debug-001.phpt" role="test" />
<file md5sum="56555f30c1e42233cb65ef12a0fb870b" name="tests/writeConcern/writeconcern-debug-002.phpt" role="test" />
<file md5sum="7feb66ce332c7b57016aa3f40e157480" name="tests/writeConcern/writeconcern-debug-003.phpt" role="test" />
<file md5sum="544bc7904161390cd99e1603b71eb0c6" name="tests/writeConcern/writeconcern-getjournal-001.phpt" role="test" />
<file md5sum="c64faac6dd9eeb55bb27b2d82acb7d86" name="tests/writeConcern/writeconcern-getw-001.phpt" role="test" />
<file md5sum="9ec2c850fc6202678ea402e96a56e530" name="tests/writeConcern/writeconcern-getwtimeout-001.phpt" role="test" />
<file md5sum="c63e6a803d425dd751247d43f24b3525" name="tests/writeConcern/writeconcern-getwtimeout-002.phpt" role="test" />
<file md5sum="7ac2556e20b9fda6524d291b695f9241" name="tests/writeConcern/writeconcern-isdefault-001.phpt" role="test" />
<file md5sum="61667a3f963d47a96695a7eaddae1b18" name="tests/writeConcern/writeconcern-serialization-002.phpt" role="test" />
<file md5sum="40f5922b4844e84db3ba9d4e5633e292" name="tests/writeConcern/writeconcern-serialization_error-002.phpt" role="test" />
<file md5sum="4ac22dfa32fef83cf3ad4a2aa7c0de26" name="tests/writeConcern/writeconcern-set_state-001.phpt" role="test" />
<file md5sum="6866ee01eeb3334135ae6daf61f1463d" name="tests/writeConcern/writeconcern-set_state_error-001.phpt" role="test" />
<file md5sum="b55df581a202f138f22b142055eb7073" name="tests/writeConcern/writeconcern-var_export-001.phpt" role="test" />
<file md5sum="17b4be0b8f641686cbfa42b324101697" name="tests/writeConcern/writeconcern_error-001.phpt" role="test" />
<file md5sum="c01b4c9c46c154a0e934effdaaed37f1" name="tests/writeConcernError/writeconcernerror-debug-001.phpt" role="test" />
<file md5sum="9de1c12ff56885812a9a66441bab5417" name="tests/writeConcernError/writeconcernerror-getcode-001.phpt" role="test" />
<file md5sum="a583c58406aa12633b755bbebd0f8dc6" name="tests/writeConcernError/writeconcernerror-getinfo-001.phpt" role="test" />
<file md5sum="4ab25052d470f07ce79ade5ab7f853ba" name="tests/writeConcernError/writeconcernerror-getmessage-001.phpt" role="test" />
<file md5sum="3aca836caa673a3a3f636679f5216839" name="tests/writeConcernError/writeconcernerror_error-001.phpt" role="test" />
<file md5sum="5e4dafe8f5dbe27f4628ad27c597d4b9" name="tests/writeError/writeerror-debug-001.phpt" role="test" />
<file md5sum="0bd364116e4769f2267bc4957eec4b26" name="tests/writeError/writeerror-getCode-001.phpt" role="test" />
<file md5sum="239052e89e6a23ff9ad83cb504e84115" name="tests/writeError/writeerror-getIndex-001.phpt" role="test" />
<file md5sum="b2a070ca4c4ecb4655b9e26a8b42d1bd" name="tests/writeError/writeerror-getInfo-001.phpt" role="test" />
<file md5sum="68999c6e5b802d35c1fbb8c5dfaad920" name="tests/writeError/writeerror-getInfo-002.phpt" role="test" />
<file md5sum="8f029a6c06d58a0ba358b281589e3712" name="tests/writeError/writeerror-getMessage-001.phpt" role="test" />
<file md5sum="8c4a875920ce58be5d2b2bd54329f277" name="tests/writeError/writeerror_error-001.phpt" role="test" />
<file md5sum="b018cf23e251de1fbafba2e1afef0d85" name="tests/writeResult/bug0671-003.phpt" role="test" />
<file md5sum="2f29fbdfe9c9df0d86d52822c8d66623" name="tests/writeResult/writeresult-debug-001.phpt" role="test" />
<file md5sum="cca4b70f2d08c782ab85630bc43bad7c" name="tests/writeResult/writeresult-debug-002.phpt" role="test" />
<file md5sum="7a4777eeb06443ee9373e54382de4da5" name="tests/writeResult/writeresult-getErrorReplies-001.phpt" role="test" />
<file md5sum="528005c11553cf65c27292a21c846eed" name="tests/writeResult/writeresult-getdeletedcount-001.phpt" role="test" />
<file md5sum="c387a44a9bbfc5d297a3ed86b97a331d" name="tests/writeResult/writeresult-getdeletedcount-002.phpt" role="test" />
<file md5sum="77194d0db2a6c41f1e449ccebf5bb8c3" name="tests/writeResult/writeresult-getinsertedcount-001.phpt" role="test" />
<file md5sum="a19cb16e3c49c424bfc7526346ade6bc" name="tests/writeResult/writeresult-getinsertedcount-002.phpt" role="test" />
<file md5sum="ba801c202cd4376858f2bb6cbf80dd2a" name="tests/writeResult/writeresult-getmatchedcount-001.phpt" role="test" />
<file md5sum="bab247c6101572ea2265ac9519568da5" name="tests/writeResult/writeresult-getmatchedcount-002.phpt" role="test" />
<file md5sum="5d5e9abd30c4abb7847c1de3419c28c7" name="tests/writeResult/writeresult-getmodifiedcount-001.phpt" role="test" />
<file md5sum="8a181a3fcbe32647901c720d3aed176c" name="tests/writeResult/writeresult-getmodifiedcount-002.phpt" role="test" />
<file md5sum="3b63ddad569b29fa0a6a6efd047807c0" name="tests/writeResult/writeresult-getserver-001.phpt" role="test" />
<file md5sum="7713f25147d7307652fccf53314438b4" name="tests/writeResult/writeresult-getupsertedcount-001.phpt" role="test" />
<file md5sum="c3ac8f7608857b8f1d82b6f04bcdac84" name="tests/writeResult/writeresult-getupsertedcount-002.phpt" role="test" />
<file md5sum="394e1ffea610e9132248ca78a99a4a34" name="tests/writeResult/writeresult-getupsertedids-001.phpt" role="test" />
<file md5sum="1b9fe5f2a6241ff8973cc4d222f9da0a" name="tests/writeResult/writeresult-getupsertedids-002.phpt" role="test" />
<file md5sum="cf82781569a619836ee6f7276a808bb9" name="tests/writeResult/writeresult-getwriteconcernerror-001.phpt" role="test" />
<file md5sum="d5e00a45b430969dc5b0787e9fe8adf2" name="tests/writeResult/writeresult-getwriteconcernerror-002.phpt" role="test" />
<file md5sum="0d2bc8d0be8bd62a0a1c098aa342c936" name="tests/writeResult/writeresult-getwriteerrors-001.phpt" role="test" />
<file md5sum="6c58b57bc400142dc88ce373dacdc1f5" name="tests/writeResult/writeresult-getwriteerrors-002.phpt" role="test" />
<file md5sum="ad5c7f8d6390f4e14ef1f13f945a48eb" name="tests/writeResult/writeresult-isacknowledged-001.phpt" role="test" />
<file md5sum="089e1618e09d5e4ba4b79eb4c1f54ea3" name="tests/writeResult/writeresult_error-001.phpt" role="test" />
<file md5sum="f224d15e15cc2f3789d62447379500d9" name="CONTRIBUTING.md" role="doc" />
<file md5sum="198d0ffaabbd88f77e9b9067b694ca10" name="CREDITS" role="doc" />
<file md5sum="b1e01b26bacfc2232046c90a330332b3" name="LICENSE" role="doc" />
<file md5sum="689288240bbe5442850399ed56daa2a1" name="Makefile.frag" role="src" />
<file md5sum="7d2544e26d9b709c280d498a42cf5177" name="README.md" role="doc" />
<file md5sum="eadbe8ccffa540f5ac53ffc59e36a727" name="THIRD_PARTY_NOTICES" role="doc" />
<file md5sum="0962c850da28d6d16b471cc9e9c976d9" name="Vagrantfile" role="test" />
- <file md5sum="140c78a6374a231739a266104578499e" name="config.m4" role="src" />
- <file md5sum="8e6993921fd09da5c73fd79af7b3d6c0" name="config.w32" role="src" />
- <file md5sum="3b75d4903eaa84eda03d97b8b24b2c13" name="phongo_version.h" role="src" />
+ <file md5sum="9030eb40f8e73c62a429e156681d1ef5" name="config.m4" role="src" />
+ <file md5sum="e10a6fa4aef2a417be06cc30c9db51f1" name="config.w32" role="src" />
+ <file md5sum="5870a464ff7b2dd1964e0d661a6525af" name="phongo_version.h" role="src" />
<file md5sum="be0ef9b4dba2cd07730fb5843e8c9ffe" name="php_phongo.c" role="src" />
<file md5sum="94777b5ce41b5b029b994def2333ea9c" name="php_phongo.h" role="src" />
</dir>
</contents>
<dependencies>
<required>
<php>
<min>8.1.0</min>
<max>8.99.99</max>
</php>
<pearinstaller>
<min>1.4.8</min>
</pearinstaller>
</required>
</dependencies>
<providesextension>mongodb</providesextension>
<extsrcrelease>
<configureoption default="no" name="enable-mongodb-developer-flags" prompt="Enable developer flags? (yes/no)" />
<configureoption default="no" name="enable-mongodb-coverage" prompt="Enable code coverage? (yes/no)" />
<configureoption default="no" name="with-mongodb-system-libs" prompt="Use system libraries for libbson, libmongoc, and libmongocrypt? (yes/no)" />
<configureoption default="auto" name="with-mongodb-client-side-encryption" prompt="Enable client-side encryption? (auto/yes/no)" />
<configureoption default="auto" name="with-mongodb-snappy" prompt="Enable Snappy for compression? (auto/yes/no)" />
<configureoption default="auto" name="with-mongodb-zlib" prompt="Enable zlib for compression? (auto/system/bundled/no)" />
<configureoption default="auto" name="with-mongodb-zstd" prompt="Enable zstd for compression? (auto/yes/no)" />
<configureoption default="auto" name="with-mongodb-sasl" prompt="Enable SASL for Kerberos authentication? (auto/cyrus/no)" />
<configureoption default="auto" name="with-mongodb-ssl" prompt="Enable crypto and TLS? (auto/openssl/libressl/darwin/no)" />
<configureoption default="no" name="enable-mongodb-crypto-system-profile" prompt="Use system crypto profile (OpenSSL only)? (yes/no)" />
<configureoption default="bundled" name="with-mongodb-utf8proc" prompt="Use bundled or system utf8proc for SCRAM-SHA-256 SASLprep? (bundled/system)" />
</extsrcrelease>
</package>

File Metadata

Mime Type
text/x-diff
Expires
Wed, Sep 10, 11:38 AM (3 h, 8 m ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
72/2b/6e40d1d7ba041f33c85be7462c2b
Default Alt Text
(1 MB)

Event Timeline