merge with master
[framework/osp/net.git] / src / http / FNetHttp_HttpSessionImpl.cpp
index 072e7c8..f80eec6 100644 (file)
@@ -902,6 +902,7 @@ _HttpSessionImpl::IsConnectionStarted(void) const
 void
 _HttpSessionImpl::IgnoreSslVerification(void)
 {
+       SysLog(NID_NET_HTTP, "Ignore to verify server certificate of current HttpSession[%d]", __sessionId);
        __isAlreadyResumed = true;
 }
 
@@ -986,7 +987,7 @@ _HttpSessionImpl::OpenTransactionN(const HttpAuthentication& auth)
 }
 
 HttpTransaction*
-_HttpSessionImpl::OpenTransactionWithCurlN(CURL* pCurl)
+_HttpSessionImpl::OpenTransactionWithCurlN(CURL* pCurl, bool uncheckedMaxTransactions)
 {
        SysAssertf(!__isClosed, "The HttpSession[%d] has been closed.", __sessionId);
 
@@ -996,7 +997,7 @@ _HttpSessionImpl::OpenTransactionWithCurlN(CURL* pCurl)
        unique_ptr<HttpTransaction> pHttpTransaction;
        _HttpTransactionImpl* pHttpTransactionImpl = null;
 
-       if (__sessionMode != NET_HTTP_SESSION_MODE_MULTIPLE_HOST)
+       if (__sessionMode != NET_HTTP_SESSION_MODE_MULTIPLE_HOST && !uncheckedMaxTransactions)
        {
                SysTryReturn(NID_NET_HTTP, __countOfTransaction < GetMaxTransactionCount(), null, E_MAX_EXCEEDED,
                                         "[E_MAX_EXCEEDED] Number(%d) of HttpTransaction exceeds max HttpTransaction count(%d).", __countOfTransaction, GetMaxTransactionCount());
@@ -1012,7 +1013,7 @@ _HttpSessionImpl::OpenTransactionWithCurlN(CURL* pCurl)
        SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r,
                                "[%s] Failed to construct the HttpTransaction.", GetErrorMessage(r));
 
-       if (__isAlreadyResumed == true)
+       if (__isAlreadyResumed == true && __sessionMode != NET_HTTP_SESSION_MODE_MULTIPLE_HOST)
        {
                pHttpTransactionImpl->IgnoreSslVerification();
                SysLog(NID_NET_HTTP, "Ignore SSL verification.");
@@ -1166,96 +1167,27 @@ _HttpSessionImpl::ReopenTransactionWithAuthN(HttpTransaction& httpTransaction)
 
        unique_ptr<HttpTransaction> pCreatedTransaction;
        _HttpTransactionImpl* pCreatedTransactionImpl = null;
-       _HttpRequestImpl* pCreatedHttpRequestImpl = null;
-
        _HttpTransactionImpl* pHttpTransactionImpl = null;
-       HttpRequest* pHttpRequest = null;
-       _HttpRequestImpl* pHttpRequestImpl = null;
-       _HttpAuthenticationImpl* pAuthenticationImpl = null;
-
-       ByteBuffer bodyBuffer;
-       ByteBuffer* pRequestBuffer = null;
-       String uri;
-       NetHttpMethod method;
-       ArrayListT< IHttpTransactionEventListener* > listenerList;
-       Object* pUserData = null;
 
        pHttpTransactionImpl = _HttpTransactionImpl::GetInstance(httpTransaction);
        SysTryReturn(NID_NET_HTTP, pHttpTransactionImpl != null, null, E_SYSTEM,
                                 "[E_SYSTEM] An internal error has occurred.");
 
-       pHttpRequest = pHttpTransactionImpl->GetRequest();
-       SysTryReturn(NID_NET_HTTP, pHttpRequest != null, null, E_SYSTEM,
-                                "[E_SYSTEM] An internal error has occurred.");
-
-       pHttpRequestImpl = _HttpRequestImpl::GetInstance(*pHttpRequest);
-       SysTryReturn(NID_NET_HTTP, pHttpRequestImpl != null, null, E_SYSTEM,
-                                "[E_SYSTEM] An internal error has occurred.");
-
-       method = pHttpRequestImpl->GetMethod();
-
-       r = pHttpRequestImpl->GetUri(uri);
-       SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r,
-                                "[%s] Failed to get the uri.", GetErrorMessage(r));
-
-       r = listenerList.Construct(*(pHttpTransactionImpl->GetEventListenerList()));
-       SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, E_OUT_OF_MEMORY,
-                                "[E_OUT_OF_MEMORY] Memory allocation failed.");
-
-       pAuthenticationImpl = pHttpTransactionImpl->GetHttpAuthenticationImpl();
-       SysTryReturn(NID_NET_HTTP, pAuthenticationImpl != null, null, E_INVALID_STATE,
-                                "[E_INVALID_STATE] The HttpAuthentication is null.");
-
-       pUserData = httpTransaction.GetUserObject();
-
-       r = CloseTransaction(httpTransaction);
-       SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r,
-                               "[%s] Propagating.", GetErrorMessage(r));
-
-       pCreatedTransaction.reset(OpenTransactionN());
+       pCreatedTransaction.reset(OpenTransactionWithCurlN(null, true));
        r = GetLastResult();
        SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r,
                                "[%s] Failed to open the HttpTransaction.", GetErrorMessage(r));
 
        pCreatedTransactionImpl = _HttpTransactionImpl::GetInstance(*pCreatedTransaction);
 
-       r = pCreatedTransactionImpl->SetUserObject(pUserData);
-       SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r,
-                               "[%s] Failed to set the user object.", GetErrorMessage(r));
-
-       pCreatedHttpRequestImpl = _HttpRequestImpl::GetInstance(*pCreatedTransactionImpl->GetRequest());
-
-       r = pCreatedHttpRequestImpl->SetMethod(method);
-       SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r,
-                               "[%s] Failed to set the method.", GetErrorMessage(r));
+       // The data of pHttpTransactionImpl is set to the pCreatedTransactionImpl.
+       r = pCreatedTransactionImpl->Set(pHttpTransactionImpl);
+       SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, E_SYSTEM,
+                                "[E_SYSTEM] An internal error has occurred.");
 
-       r = pCreatedHttpRequestImpl->SetUri(uri);
+       r = CloseTransaction(httpTransaction);
        SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r,
-                               "[%s] Failed to set the URI.", GetErrorMessage(r));
-
-       pRequestBuffer = pHttpTransactionImpl->GetRequestBuffer();
-       if (pRequestBuffer != null)
-       {
-               //Clear the flag of _HttpRequestImpl
-               pHttpRequestImpl->SetReceivedTransactionReadyToWriteEvent(false);
-
-               r = pCreatedHttpRequestImpl->WriteBody(*pRequestBuffer);
-               SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r, "[%s] Failed to write the body.", GetErrorMessage(r));
-
-               SysLog(NID_NET_HTTP, "The __pRequestBuffer is added to the Body.");
-       }
-
-       for (int i = 0; i < listenerList.GetCount(); i++)
-       {
-               IHttpTransactionEventListener* pListener = null;
-               r = listenerList.GetAt(i, pListener);
-               SysTryReturn(NID_NET_HTTP, r == E_SUCCESS && pListener != null, null, E_SYSTEM,
-                                       "[E_SYSTEM] A system error has occurred.");
-
-               r = pCreatedTransactionImpl->AddHttpTransactionListener(*pListener);
-               SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r,
-                                       "[%s] Failed to add the HttpTransactionEventListener.", GetErrorMessage(r));
-       }
+                               "[%s] Propagating.", GetErrorMessage(r));
 
        SysLog(NID_NET_HTTP, "The HttpTransaction[%d] was re-opened.", pCreatedTransactionImpl->GetTransactionId());