> -----Original Message----- > From: hwri...@apache.org [mailto:hwri...@apache.org] > Sent: woensdag 15 september 2010 11:18 > To: comm...@subversion.apache.org > Subject: svn commit: r997237 - in > /subversion/trunk/subversion/bindings/javahl/native: ClientContext.cpp > ClientContext.h SVNClient.cpp > > Author: hwright > Date: Wed Sep 15 09:17:34 2010 > New Revision: 997237 > > URL: http://svn.apache.org/viewvc?rev=997237&view=rev > Log: > Revert r997228. Apparently, some of the improved error handling added > in that > revision wasn't to friendly with the tests. It will require further > digging, > but I'm reverting in the intrim. > > Modified: > > subversion/trunk/subversion/bindings/javahl/native/ClientContext.cpp > subversion/trunk/subversion/bindings/javahl/native/ClientContext.h > subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp > > Modified: > subversion/trunk/subversion/bindings/javahl/native/ClientContext.cpp > URL: > http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javah > l/native/ClientContext.cpp?rev=997237&r1=997236&r2=997237&view=diff > ======================================================================= > ======= > --- > subversion/trunk/subversion/bindings/javahl/native/ClientContext.cpp > (original) > +++ > subversion/trunk/subversion/bindings/javahl/native/ClientContext.cpp > Wed Sep 15 09:17:34 2010 > @@ -97,20 +97,20 @@ ClientContext::~ClientContext() > env->DeleteGlobalRef(m_jctx); > } > > -svn_error_t * > -ClientContext::getContext(svn_client_ctx_t **ctx, CommitMessage > *message) > +svn_client_ctx_t * > +ClientContext::getContext(CommitMessage *message) > { > SVN::Pool *requestPool = JNIUtil::getRequestPool(); > apr_pool_t *pool = requestPool->pool(); > svn_auth_baton_t *ab; > - > - *ctx = persistentCtx; > + svn_client_ctx_t *ctx = persistentCtx; > + //SVN_JNI_ERR(svn_client_create_context(&ctx, pool), NULL); > > const char *configDir = m_configDir.c_str(); > if (m_configDir.length() == 0) > configDir = NULL; > - SVN_ERR(svn_config_get_config(&((*ctx)->config), configDir, > pool)); > - svn_config_t *config = (svn_config_t *) apr_hash_get((*ctx)- > >config, > + SVN_JNI_ERR(svn_config_get_config(&(ctx->config), configDir, > pool), NULL); > + svn_config_t *config = (svn_config_t *) apr_hash_get(ctx->config, > > SVN_CONFIG_CATEGORY_CONFIG, > > APR_HASH_KEY_STRING); > > @@ -118,8 +118,10 @@ ClientContext::getContext(svn_client_ctx > apr_array_header_t *providers; > > /* Populate the registered providers with the platform-specific > providers */ > - > SVN_ERR(svn_auth_get_platform_specific_client_providers(&providers, > - config, > pool)); > + > SVN_JNI_ERR(svn_auth_get_platform_specific_client_providers(&providers, > + > config, > + pool), > + NULL);
This doesn't look right (in the old and new code). If you use a client session multiple time, you shouldn't recreate the auth baton on every invocation, but only if there is a reason to recreate. The auth baton also handles some caching for the auth providers. (At least it stores the used passwords that weren't saved to disk, but I think it also stores some context state for a few providers) Bert