void
_HttpSessionImpl::IgnoreSslVerification(void)
{
+ SysLog(NID_NET_HTTP, "Ignore to verify server certificate of current HttpSession[%d]", __sessionId);
__isAlreadyResumed = true;
}
}
HttpTransaction*
-_HttpSessionImpl::OpenTransactionWithCurlN(CURL* pCurl)
+_HttpSessionImpl::OpenTransactionWithCurlN(CURL* pCurl, bool uncheckedMaxTransactions)
{
SysAssertf(!__isClosed, "The HttpSession[%d] has been closed.", __sessionId);
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());
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.");
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());