<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:18:09 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[CDRIVER-3476] Lowercase options before storing when set via mongoc_uri_set_option_as_*</title>
                <link>https://jira.mongodb.org/browse/CDRIVER-3476</link>
                <project id="10030" key="CDRIVER">C Driver</project>
                    <description>&lt;p&gt;When options are parsed from the connection string passed to &lt;tt&gt;mongoc_uri_new&lt;/tt&gt;, they are internally stored on &lt;tt&gt;uri-&amp;gt;options&lt;/tt&gt; after being converted to lowercase in &lt;tt&gt;mongoc_uri_split_option&lt;/tt&gt; &lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/blob/1.15.0/src/libmongoc/src/mongoc/mongoc-uri.c/#L871-L872&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;However, options that are set via the &lt;tt&gt;mongoc_uri_set_option_as_*&lt;/tt&gt; are &lt;em&gt;not&lt;/em&gt; lowercased before being stored in &lt;tt&gt;uri-&amp;gt;options&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;For consistency, let&apos;s lowercase options before storing them in the &lt;tt&gt;mongoc_uri_set_options_as_*&lt;/tt&gt; functions. This should allow us to remove a lot of case sensitivity checks in URI related functions.&lt;/p&gt;

&lt;p&gt;In addition, there may be a bug caused by the inconsistent casing. Specifying a mongodb+srv URI can result in options being added to a mongoc_uri_t after polling for TXT records in client construction. See the &lt;a href=&quot;https://github.com/mongodb/specifications/blob/master/source/initial-dns-seedlist-discovery/initial-dns-seedlist-discovery.rst&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Initial Seedlist Spec&lt;/a&gt; for background. TXT records are polled for in mongoc_topology_new &lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/blob/1.15.0/src/libmongoc/src/mongoc/mongoc-topology.c/#L314-L318&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;mongoc_uri_options_validate_names&lt;/tt&gt;, is used to check for canonical/non-canonical mismatches between &lt;tt&gt;uri-&amp;gt;options&lt;/tt&gt; and options being added. It appears to assume that both cases of the options are the same. So I think this scenario could be a bug:&lt;/p&gt;
&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;uri = mongoc_uri_new(&quot;mongodb+srv://host&quot;)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;mongoc_uri_set_option_as_bool (uri, &quot;TLS&quot;, true)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;client = mongoc_client_new_from_uri (uri)&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;/* TXT record comes back with option ssl=false. mongoc_uri_options_validate_names does not find the conflicting options because it expects TLS to be stored in lowercase. */&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;Perhaps adding a test should be a part of this work. We don&apos;t have automated SRV tests, but we could simulate the TXT records by calling the private function &lt;tt&gt;mongoc_uri_parse_options&lt;/tt&gt;.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1080765">CDRIVER-3476</key>
            <summary>Lowercase options before storing when set via mongoc_uri_set_option_as_*</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="13201">Fixed</resolution>
                                        <assignee username="andrew.witten@mongodb.com">Andrew Witten</assignee>
                                    <reporter username="kevin.albertson@mongodb.com">Kevin Albertson</reporter>
                        <labels>
                            <label>new-eng</label>
                    </labels>
                <created>Wed, 8 Jan 2020 19:39:13 +0000</created>
                <updated>Sat, 28 Oct 2023 11:28:59 +0000</updated>
                            <resolved>Mon, 29 Jun 2020 14:33:55 +0000</resolved>
                                                    <fixVersion>1.17.0-rc0</fixVersion>
                    <fixVersion>1.17.0</fixVersion>
                                    <component>libmongoc</component>
                    <component>uri</component>
                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="3281144" author="xgen-internal-githook" created="Sat, 11 Jul 2020 16:20:23 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Andrew Witten&apos;, &apos;email&apos;: &apos;andrew.witten@mongodb.com&apos;, &apos;username&apos;: &apos;awitten1&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-3476&quot; title=&quot;Lowercase options before storing when set via mongoc_uri_set_option_as_*&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-3476&quot;&gt;&lt;del&gt;CDRIVER-3476&lt;/del&gt;&lt;/a&gt; lower case options (#645)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-3476&quot; title=&quot;Lowercase options before storing when set via mongoc_uri_set_option_as_*&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-3476&quot;&gt;&lt;del&gt;CDRIVER-3476&lt;/del&gt;&lt;/a&gt; lower case options set with&lt;br/&gt;
mongoc_uri_set_options_as_* functions&lt;br/&gt;
Branch: r1.17&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/commit/eab26ddf0eaacc9560359e639b9f877acd11fd2f&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-c-driver/commit/eab26ddf0eaacc9560359e639b9f877acd11fd2f&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="3226404" author="xgen-internal-githook" created="Fri, 26 Jun 2020 20:20:47 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Andrew Witten&apos;, &apos;email&apos;: &apos;andrew.witten@mongodb.com&apos;, &apos;username&apos;: &apos;awitten1&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-3476&quot; title=&quot;Lowercase options before storing when set via mongoc_uri_set_option_as_*&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-3476&quot;&gt;&lt;del&gt;CDRIVER-3476&lt;/del&gt;&lt;/a&gt; lower case options (#645)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-3476&quot; title=&quot;Lowercase options before storing when set via mongoc_uri_set_option_as_*&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-3476&quot;&gt;&lt;del&gt;CDRIVER-3476&lt;/del&gt;&lt;/a&gt; lower case options set with&lt;br/&gt;
mongoc_uri_set_options_as_* functions&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/commit/162c9a5e8e62b97c2fad756d2c2278c3c18f755e&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-c-driver/commit/162c9a5e8e62b97c2fad756d2c2278c3c18f755e&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="3224457" author="JIRAUSER1253381" created="Thu, 25 Jun 2020 18:34:35 +0000"  >&lt;p&gt;PR:&#160;&#160;&lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/pull/645&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-c-driver/pull/645&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="1384145">CDRIVER-3723</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="412600">PHPC-991</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hw3rav:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>