You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2010/03/16 13:39:07 UTC

svn commit: r923711 - in /subversion/trunk/subversion: libsvn_ra_neon/session.c tests/libsvn_subr/dirent_uri-test.c

Author: rhuijben
Date: Tue Mar 16 12:39:06 2010
New Revision: 923711

URL: http://svn.apache.org/viewvc?rev=923711&view=rev
Log:
Perform some path->uri/dirent cleanup in libsvn_ra_neon.

* subversion/libsvn_ra_neon/session.c
  (svn_ra_neon__open): Assert that the uri is canonical and remove some
    cleanups that are better handled in svn_uri_canonicalize(). Also
    fix a call to svn_path_local_style().

* subversion/tests/libsvn_subr/dirent_uri-test.c
  (test_uri_is_canonical): Add a few more http targeted testcases.

Modified:
    subversion/trunk/subversion/libsvn_ra_neon/session.c
    subversion/trunk/subversion/tests/libsvn_subr/dirent_uri-test.c

Modified: subversion/trunk/subversion/libsvn_ra_neon/session.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_neon/session.c?rev=923711&r1=923710&r2=923711&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_neon/session.c (original)
+++ subversion/trunk/subversion/libsvn_ra_neon/session.c Tue Mar 16 12:39:06 2010
@@ -761,7 +761,6 @@ svn_ra_neon__open(svn_ra_session_t *sess
   svn_boolean_t compression;
   svn_config_t *cfg, *cfg_client;
   const char *server_group;
-  char *itr;
   unsigned int neon_auth_types = 0;
   const char *pkcs11_provider;
   neonprogress_baton_t *neonprogress_baton =
@@ -770,6 +769,8 @@ svn_ra_neon__open(svn_ra_session_t *sess
   const char *client_string = NULL;
   svn_revnum_t ignored_revnum;
 
+  SVN_ERR_ASSERT(svn_uri_is_canonical(repos_URL, pool));
+
   if (callbacks->get_client_string)
     callbacks->get_client_string(callback_baton, &client_string, pool);
 
@@ -791,16 +792,7 @@ svn_ra_neon__open(svn_ra_session_t *sess
   /* we want to know if the repository is actually somewhere else */
   /* ### not yet: http_redirect_register(sess, ... ); */
 
-  /* HACK!  Neon uses strcmp when checking for https, but RFC 2396 says
-   * we should be using case-insensitive comparisons when checking for
-   * URI schemes.  To allow our users to use WeIrd CasE HttPS we force
-   * the scheme to lower case before we pass it on to Neon, otherwise we
-   * would crash later on when we assume Neon has set up its https stuff
-   * but it really didn't. */
-  for (itr = uri->scheme; *itr; ++itr)
-    *itr = tolower(*itr);
-
-  is_ssl_session = (svn_cstring_casecmp(uri->scheme, "https") == 0);
+  is_ssl_session = (strcmp(uri->scheme, "https") == 0);
   if (is_ssl_session)
     {
       if (ne_has_support(NE_FEATURE_SSL) == 0)
@@ -975,10 +967,10 @@ svn_ra_neon__open(svn_ra_session_t *sess
               ca_cert = ne_ssl_cert_read(file);
               if (ca_cert == NULL)
                 {
-                  return svn_error_createf
-                    (SVN_ERR_BAD_CONFIG_VALUE, NULL,
-                     _("Invalid config: unable to load certificate file '%s'"),
-                     svn_path_local_style(file, pool));
+                  return svn_error_createf(
+                    SVN_ERR_BAD_CONFIG_VALUE, NULL,
+                    _("Invalid config: unable to load certificate file '%s'"),
+                    svn_dirent_local_style(file, pool));
                 }
               ne_ssl_trust_cert(sess, ca_cert);
               ne_ssl_trust_cert(sess2, ca_cert);

Modified: subversion/trunk/subversion/tests/libsvn_subr/dirent_uri-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_subr/dirent_uri-test.c?rev=923711&r1=923710&r2=923711&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/dirent_uri-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_subr/dirent_uri-test.c Tue Mar 16 12:39:06 2010
@@ -1227,6 +1227,9 @@ test_uri_is_canonical(apr_pool_t *pool)
     { "http://hst/",           FALSE },
     { "http://HST/",           FALSE },
     { "http://HST/FOO/BaR",    FALSE },
+    { "http://hst/foo/./bar",  FALSE },
+    { "hTTp://hst/foo/bar",   FALSE },
+    { "http://hst/foo/bar/",   FALSE },
     { "svn+ssh://jens@10.0.1.1", TRUE },
     { "svn+ssh://j.raNDom@HST/BaR", FALSE },
     { "svn+SSH://j.random:jRaY@HST/BaR", FALSE },