Nicky 2016-01-25 15:06:34 +01:00
commit 0184c2fc83
9 changed files with 85 additions and 48 deletions

View File

@ -1710,7 +1710,7 @@
</map>
</map>
<key>version</key>
<string>1.5.1.310043</string>
<string>1.5.3.310159</string>
</map>
<key>llphysicsextensions_source</key>
<map>

View File

@ -304,6 +304,11 @@ bool HttpLibcurl::completeRequest(CURLM * multi_handle, CURL * handle, CURLcode
curl_easy_getinfo(handle, CURLINFO_PRIVATE, &ophandle);
HttpOpRequest::ptr_t op(HttpOpRequest::fromHandle<HttpOpRequest>(ophandle));
if (!op)
{
LL_WARNS() << "Unable to locate operation by handle. May have expired!" << LL_ENDL;
return false;
}
if (handle != op->mCurlHandle || ! op->mCurlActive)
{
@ -332,37 +337,53 @@ bool HttpLibcurl::completeRequest(CURLM * multi_handle, CURL * handle, CURLcode
{
op->mStatus = HttpStatus(HttpStatus::EXT_CURL_EASY, status);
}
if (op->mStatus)
{
if (op->mStatus)
{
//<FS:TS> The cURL library doc specifies that you need to pass
// a pointer to a long, not a pointer to an int, here.
//int http_status(HTTP_OK);
long int http_status(HTTP_OK);
long http_status(HTTP_OK);
curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &http_status);
if (http_status >= 100 && http_status <= 999)
{
char * cont_type(NULL);
curl_easy_getinfo(handle, CURLINFO_CONTENT_TYPE, &cont_type);
if (cont_type)
{
op->mReplyConType = cont_type;
}
op->mStatus = HttpStatus(http_status);
}
else
{
LL_WARNS(LOG_CORE) << "Invalid HTTP response code ("
<< http_status << ") received from server."
<< LL_ENDL;
op->mStatus = HttpStatus(HttpStatus::LLCORE, HE_INVALID_HTTP_STATUS);
}
if (handle)
{
curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &http_status);
if (http_status >= 100 && http_status <= 999)
{
char * cont_type(NULL);
curl_easy_getinfo(handle, CURLINFO_CONTENT_TYPE, &cont_type);
if (cont_type)
{
op->mReplyConType = cont_type;
}
op->mStatus = HttpStatus(http_status);
}
else
{
LL_WARNS(LOG_CORE) << "Invalid HTTP response code ("
<< http_status << ") received from server."
<< LL_ENDL;
op->mStatus = HttpStatus(HttpStatus::LLCORE, HE_INVALID_HTTP_STATUS);
}
}
else
{
LL_WARNS(LOG_CORE) << "Attempt to retrieve status from NULL handle!" << LL_ENDL;
}
}
// Detach from multi and recycle handle
curl_multi_remove_handle(multi_handle, handle);
mHandleCache.freeHandle(op->mCurlHandle);
op->mCurlHandle = NULL;
if (multi_handle && handle)
{
// Detach from multi and recycle handle
curl_multi_remove_handle(multi_handle, handle);
mHandleCache.freeHandle(op->mCurlHandle);
}
else
{
LL_WARNS(LOG_CORE) << "Curl multi_handle or handle is NULL on remove! multi:"
<< std::hex << multi_handle << " h:" << std::hex << handle << std::dec << LL_ENDL;
}
op->mCurlHandle = NULL;
// Tracing
if (op->mTracing > HTTP_TRACE_OFF)

View File

@ -11,6 +11,7 @@ include(LLMessage)
include(LLRender)
include(LLXML)
include(LLWindow)
include(Boost)
include_directories(
${LLCOMMON_INCLUDE_DIRS}

View File

@ -77,12 +77,6 @@ target_link_libraries(SLPlugin
${PLUGIN_API_WINDOWS_LIBRARIES}
)
add_dependencies(SLPlugin
${LLPLUGIN_LIBRARIES}
${LLMESSAGE_LIBRARIES}
${LLCOMMON_LIBRARIES}
)
if (DARWIN)
# Mac version needs to link against Carbon
target_link_libraries(SLPlugin ${COCOA_LIBRARY})

View File

@ -2,6 +2,7 @@
project(media_plugin_cef)
include(Boost)
include(00-Common)
include(LLCommon)
include(LLImage)
@ -57,8 +58,8 @@ set(media_plugin_cef_HEADER_FILES
set (media_plugin_cef_LINK_LIBRARIES
${LLPLUGIN_LIBRARIES}
${MEDIA_PLUGIN_BASE_LIBRARIES}
${LLCOMMON_LIBRARIES}
${CEF_PLUGIN_LIBRARIES}
${LLCOMMON_LIBRARIES}
${PLUGIN_API_WINDOWS_LIBRARIES})
@ -97,11 +98,9 @@ add_library(media_plugin_cef
${media_plugin_cef_SOURCE_FILES}
)
add_dependencies(media_plugin_cef
${LLPLUGIN_LIBRARIES}
${MEDIA_PLUGIN_BASE_LIBRARIES}
${LLCOMMON_LIBRARIES}
)
#add_dependencies(media_plugin_cef
# ${MEDIA_PLUGIN_BASE_LIBRARIES}
#)
target_link_libraries(media_plugin_cef
${media_plugin_cef_LINK_LIBRARIES}

View File

@ -76,6 +76,7 @@ private:
bool onHTTPAuthCallback(const std::string host, const std::string realm, std::string& username, std::string& password);
void onCursorChangedCallback(LLCEFLib::ECursorType type, unsigned int handle);
void onFileDownloadCallback(std::string filename);
const std::string onFileDialogCallback();
void postDebugMessage(const std::string& msg);
void authResponse(LLPluginMessage &message);
@ -102,6 +103,7 @@ private:
bool mCanPaste;
std::string mCachePath;
std::string mCookiePath;
std::string mPickedFile;
LLCEFLib* mLLCEFLib;
VolumeCatcher mVolumeCatcher;
@ -142,6 +144,7 @@ MediaPluginBase(host_send_func, host_user_data)
mCanPaste = false;
mCachePath = "";
mCookiePath = "";
mPickedFile = "";
mLLCEFLib = new LLCEFLib();
// <FS:ND> FS specific CEF settings
@ -393,6 +396,20 @@ void MediaPluginCEF::onFileDownloadCallback(const std::string filename)
sendMessage(message);
}
////////////////////////////////////////////////////////////////////////////////
//
const std::string MediaPluginCEF::onFileDialogCallback()
{
mPickedFile.clear();
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "pick_file");
message.setValueBoolean("blocking_request", true);
sendMessage(message);
return mPickedFile;
}
void MediaPluginCEF::onCursorChangedCallback(LLCEFLib::ECursorType type, unsigned int handle)
{
std::string name = "";
@ -533,6 +550,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
mLLCEFLib->setOnNavigateURLCallback(boost::bind(&MediaPluginCEF::onNavigateURLCallback, this, _1, _2));
mLLCEFLib->setOnHTTPAuthCallback(boost::bind(&MediaPluginCEF::onHTTPAuthCallback, this, _1, _2, _3, _4));
mLLCEFLib->setOnFileDownloadCallback(boost::bind(&MediaPluginCEF::onFileDownloadCallback, this, _1));
mLLCEFLib->setOnFileDialogCallback(boost::bind(&MediaPluginCEF::onFileDialogCallback, this));
mLLCEFLib->setOnCursorChangedCallback(boost::bind(&MediaPluginCEF::onCursorChangedCallback, this, _1, _2));
mLLCEFLib->setOnRequestExitCallback(boost::bind(&MediaPluginCEF::onRequestExitCallback, this));
@ -748,6 +766,10 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
{
mEnableMediaPluginDebugging = message_in.getValueBoolean("enable");
}
if (message_name == "pick_file_response")
{
mPickedFile = message_in.getValue("file");
}
if (message_name == "auth_response")
{
authResponse(message_in);

View File

@ -14,6 +14,7 @@ include(PluginAPI)
include(MediaPluginBase)
include(OpenGL)
include(QuickTimePlugin)
include(Boost)
include_directories(
${LLPLUGIN_INCLUDE_DIRS}
@ -53,12 +54,6 @@ target_link_libraries(media_plugin_quicktime
${PLUGIN_API_WINDOWS_LIBRARIES}
)
add_dependencies(media_plugin_quicktime
${LLPLUGIN_LIBRARIES}
${MEDIA_PLUGIN_BASE_LIBRARIES}
${LLCOMMON_LIBRARIES}
)
if (WINDOWS)
set_target_properties(
media_plugin_quicktime

View File

@ -599,7 +599,7 @@ void LLMaterialMgr::processGetQueue()
//
get_queue_t::iterator itRegionQueue = loopRegionQueue++;
const LLUUID& region_id = itRegionQueue->first;
LLUUID region_id = itRegionQueue->first;
if (isGetAllPending(region_id))
{
continue;
@ -647,6 +647,7 @@ void LLMaterialMgr::processGetQueue()
if (materials.empty())
{
mGetQueue.erase(itRegionQueue);
// $TODO*: We may be able to issue a continue here. Research.
}
std::string materialString = zip_llsd(materialsData);

View File

@ -867,7 +867,7 @@ bool LLVivoxVoiceClient::establishVoiceConnection()
do
{
result = llcoro::suspendUntilEventOn(voiceConnectPump);
LL_DEBUGS("Voice") << "event=" << ll_pretty_print_sd(result) << LL_ENDL;
LL_WARNS("Voice") << "event=" << ll_pretty_print_sd(result) << LL_ENDL;
}
while (!result.has("connector"));
@ -1230,7 +1230,7 @@ bool LLVivoxVoiceClient::addAndJoinSession(const sessionStatePtr_t &nextSession)
{
result = llcoro::suspendUntilEventOn(voicePump);
LL_DEBUGS("Voice") << "event=" << ll_pretty_print_sd(result) << LL_ENDL;
LL_WARNS("Voice") << "event=" << ll_pretty_print_sd(result) << LL_ENDL;
if (result.has("session"))
{
if (result.has("handle"))
@ -1483,7 +1483,11 @@ bool LLVivoxVoiceClient::runSession(const sessionStatePtr_t &session)
if (mSessionTerminateRequested)
terminateAudioSession(true);
return false;
// if a relog has been requested then addAndJoineSession
// failed in a spectacular way and we need to back out.
// If this is not the case then we were simply trying to
// make a call and the other party rejected it.
return !mRelogRequested;
}
notifyParticipantObservers();