--- /dev/null
+diff -up openchange-openchange-2.3-VULCAN/libmapi/IMSProvider.c.fix-connection-args openchange-openchange-2.3-VULCAN/libmapi/IMSProvider.c
+--- openchange-openchange-2.3-VULCAN/libmapi/IMSProvider.c.fix-connection-args 2015-05-16 17:22:04.000000000 +0200
++++ openchange-openchange-2.3-VULCAN/libmapi/IMSProvider.c 2016-04-07 19:10:30.340959912 +0200
+@@ -91,6 +91,7 @@ static char *build_binding_string(struct
+ struct mapi_profile *profile)
+ {
+ char *binding;
++ bool any_string_added = false;
+
+ /* Sanity Checks */
+ if (!profile) return NULL;
+@@ -101,15 +102,23 @@ static char *build_binding_string(struct
+
+ /* If dump-data option is enabled */
+ if (mapi_ctx->dumpdata == true) {
+- binding = talloc_strdup_append(binding, "print,");
++ binding = talloc_strdup_append(binding, "print");
++ any_string_added = true;
+ }
+ /* If seal option is enabled in the profile */
+ if (profile->seal == true) {
+- binding = talloc_strdup_append(binding, "seal,");
++ if (any_string_added) {
++ binding = talloc_strdup_append(binding, ",");
++ }
++ binding = talloc_strdup_append(binding, "seal");
++ any_string_added = true;
+ }
+ /* If localaddress parameter is available in the profile */
+ if (profile->localaddr) {
+- binding = talloc_asprintf_append(binding, "localaddress=%s,", profile->localaddr);
++ if (any_string_added) {
++ binding = talloc_strdup_append(binding, ",");
++ }
++ binding = talloc_asprintf_append(binding, "localaddress=%s", profile->localaddr);
+ }
+
+ binding = talloc_strdup_append(binding, "]");