Remove B_PROT_* and related code
Use standard error codes instead. This allows using error code returned by the underlying functions directly, and makes it possible to use strerror for debugging. So, we can also remove StatusString() from the various *Request classes.
This commit is contained in:
@@ -49,7 +49,6 @@ public:
|
|||||||
|
|
||||||
status_t Stop();
|
status_t Stop();
|
||||||
const BUrlResult& Result() const;
|
const BUrlResult& Result() const;
|
||||||
const char* StatusString(status_t threadStatus) const;
|
|
||||||
|
|
||||||
static bool IsInformationalStatusCode(int16 code);
|
static bool IsInformationalStatusCode(int16 code);
|
||||||
static bool IsSuccessStatusCode(int16 code);
|
static bool IsSuccessStatusCode(int16 code);
|
||||||
@@ -123,13 +122,6 @@ private:
|
|||||||
bool fOptAutoReferer : 1;
|
bool fOptAutoReferer : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
// ProtocolLoop return status
|
|
||||||
enum {
|
|
||||||
B_PROT_HTTP_NOT_FOUND = B_PROT_THREAD_STATUS__END,
|
|
||||||
B_PROT_HTTP_THREAD_STATUS__END
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// Request method
|
// Request method
|
||||||
const char* const B_HTTP_GET = "GET";
|
const char* const B_HTTP_GET = "GET";
|
||||||
const char* const B_HTTP_POST = "POST";
|
const char* const B_HTTP_POST = "POST";
|
||||||
|
|||||||
@@ -42,8 +42,6 @@ public:
|
|||||||
// URL protocol informations
|
// URL protocol informations
|
||||||
bool IsRunning() const;
|
bool IsRunning() const;
|
||||||
status_t Status() const;
|
status_t Status() const;
|
||||||
virtual const char* StatusString(status_t threadStatus)
|
|
||||||
const;
|
|
||||||
virtual const BUrlResult& Result() const = 0;
|
virtual const BUrlResult& Result() const = 0;
|
||||||
|
|
||||||
|
|
||||||
@@ -66,23 +64,4 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// TODO: Rename, this is in the global namespace.
|
|
||||||
enum {
|
|
||||||
B_PROT_THREAD_STATUS__BASE = 0,
|
|
||||||
B_PROT_SUCCESS = B_PROT_THREAD_STATUS__BASE,
|
|
||||||
B_PROT_RUNNING,
|
|
||||||
B_PROT_PAUSED,
|
|
||||||
B_PROT_ABORTED,
|
|
||||||
B_PROT_SOCKET_ERROR,
|
|
||||||
B_PROT_CONNECTION_FAILED,
|
|
||||||
B_PROT_CANT_RESOLVE_HOSTNAME,
|
|
||||||
B_PROT_WRITE_FAILED,
|
|
||||||
B_PROT_READ_FAILED,
|
|
||||||
B_PROT_NO_MEMORY,
|
|
||||||
B_PROT_PROTOCOL_ERROR,
|
|
||||||
// Thread status over this one are guaranteed to be
|
|
||||||
// errors
|
|
||||||
B_PROT_THREAD_STATUS__END
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // _B_URL_REQUEST_H_
|
#endif // _B_URL_REQUEST_H_
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ BDataRequest::_ProtocolLoop()
|
|||||||
BString mimeType;
|
BString mimeType;
|
||||||
BString charset;
|
BString charset;
|
||||||
const char* payload;
|
const char* payload;
|
||||||
size_t length;
|
ssize_t length;
|
||||||
bool isBase64 = false;
|
bool isBase64 = false;
|
||||||
|
|
||||||
fUrl.UrlDecode(true);
|
fUrl.UrlDecode(true);
|
||||||
@@ -86,6 +86,12 @@ BDataRequest::_ProtocolLoop()
|
|||||||
// payload must be a const char* so we can assign data.String() to
|
// payload must be a const char* so we can assign data.String() to
|
||||||
// it below, but decode_64 modifies buffer.
|
// it below, but decode_64 modifies buffer.
|
||||||
length = decode_base64(buffer, data.String(), data.Length());
|
length = decode_base64(buffer, data.String(), data.Length());
|
||||||
|
|
||||||
|
// There may be some padding at the end of the base64 stream. This
|
||||||
|
// prevents us from computing the exact length we should get, so allow
|
||||||
|
// for some error margin.
|
||||||
|
if(length > data.Length() * 4 / 3 || length < data.Length() * 4 / 3 - 3)
|
||||||
|
return B_BAD_DATA;
|
||||||
} else {
|
} else {
|
||||||
payload = data.String();
|
payload = data.String();
|
||||||
length = data.Length();
|
length = data.Length();
|
||||||
@@ -102,5 +108,5 @@ BDataRequest::_ProtocolLoop()
|
|||||||
if (isBase64)
|
if (isBase64)
|
||||||
delete[] payload;
|
delete[] payload;
|
||||||
|
|
||||||
return B_PROT_SUCCESS;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <Directory.h>
|
#include <Directory.h>
|
||||||
@@ -42,26 +43,35 @@ BFileRequest::_ProtocolLoop()
|
|||||||
{
|
{
|
||||||
BNode node(fUrl.Path().String());
|
BNode node(fUrl.Path().String());
|
||||||
node_ref ref;
|
node_ref ref;
|
||||||
if (node.GetNodeRef(&ref) != B_OK)
|
status_t error = node.GetNodeRef(&ref);
|
||||||
return B_PROT_CONNECTION_FAILED;
|
if (error != B_OK)
|
||||||
|
return error;
|
||||||
|
|
||||||
|
ssize_t transferredSize = 0;
|
||||||
if (node.IsFile()) {
|
if (node.IsFile()) {
|
||||||
BFile file(fUrl.Path().String(), B_READ_ONLY);
|
BFile file(fUrl.Path().String(), B_READ_ONLY);
|
||||||
if (file.InitCheck() != B_OK)
|
error = file.InitCheck();
|
||||||
return B_PROT_CONNECTION_FAILED;
|
if (error != B_OK)
|
||||||
|
return error;
|
||||||
|
|
||||||
// Send all notifications to listener, if any
|
// Send all notifications to listener, if any
|
||||||
if (fListener != NULL) {
|
if (fListener != NULL) {
|
||||||
fListener->ConnectionOpened(this);
|
fListener->ConnectionOpened(this);
|
||||||
off_t size = 0;
|
off_t size = 0;
|
||||||
file.GetSize(&size);
|
file.GetSize(&size);
|
||||||
fListener->DownloadProgress(this, size, size);
|
|
||||||
fResult.SetLength(size);
|
fResult.SetLength(size);
|
||||||
|
|
||||||
ssize_t chunkSize;
|
ssize_t chunkSize;
|
||||||
char chunk[4096];
|
char chunk[4096];
|
||||||
while ((chunkSize = file.Read(chunk, sizeof(chunk))) > 0)
|
while ((chunkSize = file.Read(chunk, sizeof(chunk))) > 0) {
|
||||||
fListener->DataReceived(this, chunk, chunkSize);
|
fListener->DataReceived(this, chunk, chunkSize);
|
||||||
|
|
||||||
|
if (chunkSize > 0)
|
||||||
|
transferredSize += chunkSize;
|
||||||
|
else if (transferredSize != size)
|
||||||
|
return chunkSize;
|
||||||
|
}
|
||||||
|
fListener->DownloadProgress(this, size, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
BNodeInfo info(&file);
|
BNodeInfo info(&file);
|
||||||
@@ -69,52 +79,51 @@ BFileRequest::_ProtocolLoop()
|
|||||||
if (info.GetType(mimeType) == B_OK)
|
if (info.GetType(mimeType) == B_OK)
|
||||||
fResult.SetContentType(mimeType);
|
fResult.SetContentType(mimeType);
|
||||||
|
|
||||||
return B_PROT_SUCCESS;
|
return B_OK;
|
||||||
} else if (node.IsDirectory()) {
|
|
||||||
BDirectory directory(&ref);
|
|
||||||
|
|
||||||
fResult.SetContentType("application/x-ftp-directory");
|
|
||||||
// This tells WebKit to use its FTP directory rendering code.
|
|
||||||
|
|
||||||
// Send all notifications to listener, if any
|
|
||||||
if (fListener != NULL)
|
|
||||||
fListener->ConnectionOpened(this);
|
|
||||||
|
|
||||||
int size = 0;
|
|
||||||
char name[B_FILE_NAME_LENGTH];
|
|
||||||
BEntry entry;
|
|
||||||
while (directory.GetNextEntry(&entry) != B_ENTRY_NOT_FOUND) {
|
|
||||||
// We read directories using the EPFL (Easily Parsed List Format)
|
|
||||||
// This happens to be one of the formats that WebKit can understand,
|
|
||||||
// and it is not too hard to parse or generate.
|
|
||||||
// http://tools.ietf.org/html/draft-bernstein-eplf-02
|
|
||||||
BString epfl("+");
|
|
||||||
if (entry.IsFile() || entry.IsSymLink()) {
|
|
||||||
epfl += "r,";
|
|
||||||
off_t fileSize;
|
|
||||||
if (entry.GetSize(&fileSize) == B_OK)
|
|
||||||
epfl << "s" << fileSize << ",";
|
|
||||||
|
|
||||||
} else if (entry.IsDirectory())
|
|
||||||
epfl += "/,";
|
|
||||||
|
|
||||||
time_t modification;
|
|
||||||
if (entry.GetModificationTime(&modification) == B_OK)
|
|
||||||
epfl << "m" << modification << ",";
|
|
||||||
|
|
||||||
entry.GetName(name);
|
|
||||||
epfl << "\t" << name << "\r\n";
|
|
||||||
if (fListener != NULL)
|
|
||||||
fListener->DataReceived(this, epfl.String(), epfl.Length());
|
|
||||||
size += epfl.Length();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fListener != NULL)
|
|
||||||
fListener->DownloadProgress(this, size, size);
|
|
||||||
fResult.SetLength(size);
|
|
||||||
|
|
||||||
return B_PROT_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return B_PROT_CONNECTION_FAILED;
|
assert(node.IsDirectory());
|
||||||
|
BDirectory directory(&ref);
|
||||||
|
|
||||||
|
fResult.SetContentType("application/x-ftp-directory");
|
||||||
|
// This tells WebKit to use its FTP directory rendering code.
|
||||||
|
|
||||||
|
// Send all notifications to listener, if any
|
||||||
|
if (fListener != NULL)
|
||||||
|
fListener->ConnectionOpened(this);
|
||||||
|
|
||||||
|
int size = 0;
|
||||||
|
char name[B_FILE_NAME_LENGTH];
|
||||||
|
BEntry entry;
|
||||||
|
while (directory.GetNextEntry(&entry) != B_ENTRY_NOT_FOUND) {
|
||||||
|
// We read directories using the EPFL (Easily Parsed List Format)
|
||||||
|
// This happens to be one of the formats that WebKit can understand,
|
||||||
|
// and it is not too hard to parse or generate.
|
||||||
|
// http://tools.ietf.org/html/draft-bernstein-eplf-02
|
||||||
|
BString epfl("+");
|
||||||
|
if (entry.IsFile() || entry.IsSymLink()) {
|
||||||
|
epfl += "r,";
|
||||||
|
off_t fileSize;
|
||||||
|
if (entry.GetSize(&fileSize) == B_OK)
|
||||||
|
epfl << "s" << fileSize << ",";
|
||||||
|
|
||||||
|
} else if (entry.IsDirectory())
|
||||||
|
epfl += "/,";
|
||||||
|
|
||||||
|
time_t modification;
|
||||||
|
if (entry.GetModificationTime(&modification) == B_OK)
|
||||||
|
epfl << "m" << modification << ",";
|
||||||
|
|
||||||
|
entry.GetName(name);
|
||||||
|
epfl << "\t" << name << "\r\n";
|
||||||
|
if (fListener != NULL)
|
||||||
|
fListener->DataReceived(this, epfl.String(), epfl.Length());
|
||||||
|
size += epfl.Length();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fListener != NULL)
|
||||||
|
fListener->DownloadProgress(this, size, size);
|
||||||
|
fResult.SetLength(size);
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,12 +24,6 @@
|
|||||||
|
|
||||||
|
|
||||||
static const int32 kHttpBufferSize = 4096;
|
static const int32 kHttpBufferSize = 4096;
|
||||||
static const char* kHttpProtocolThreadStrStatus[
|
|
||||||
B_PROT_HTTP_THREAD_STATUS__END - B_PROT_THREAD_STATUS__END]
|
|
||||||
= {
|
|
||||||
"The remote server did not found the requested resource"
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
BHttpRequest::BHttpRequest(const BUrl& url, bool ssl, const char* protocolName,
|
BHttpRequest::BHttpRequest(const BUrl& url, bool ssl, const char* protocolName,
|
||||||
BUrlProtocolListener* listener, BUrlContext* context)
|
BUrlProtocolListener* listener, BUrlContext* context)
|
||||||
@@ -237,19 +231,6 @@ BHttpRequest::StatusCodeClass(int16 code)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const char*
|
|
||||||
BHttpRequest::StatusString(status_t threadStatus) const
|
|
||||||
{
|
|
||||||
if (threadStatus < B_PROT_THREAD_STATUS__END)
|
|
||||||
return BUrlRequest::StatusString(threadStatus);
|
|
||||||
else if (threadStatus >= B_PROT_HTTP_THREAD_STATUS__END)
|
|
||||||
return BUrlRequest::StatusString(-1);
|
|
||||||
else
|
|
||||||
return kHttpProtocolThreadStrStatus[threadStatus
|
|
||||||
- B_PROT_THREAD_STATUS__END];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const BUrlResult&
|
const BUrlResult&
|
||||||
BHttpRequest::Result() const
|
BHttpRequest::Result() const
|
||||||
{
|
{
|
||||||
@@ -308,11 +289,11 @@ BHttpRequest::_ProtocolLoop()
|
|||||||
_EmitDebug(B_URL_PROTOCOL_DEBUG_ERROR,
|
_EmitDebug(B_URL_PROTOCOL_DEBUG_ERROR,
|
||||||
"Unable to resolve hostname (%s), aborting.",
|
"Unable to resolve hostname (%s), aborting.",
|
||||||
fUrl.Host().String());
|
fUrl.Host().String());
|
||||||
return B_PROT_CANT_RESOLVE_HOSTNAME;
|
return B_SERVER_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t requestStatus = _MakeRequest();
|
status_t requestStatus = _MakeRequest();
|
||||||
if (requestStatus != B_PROT_SUCCESS)
|
if (requestStatus != B_OK)
|
||||||
return requestStatus;
|
return requestStatus;
|
||||||
|
|
||||||
// Prepare the referer for the next request if needed
|
// Prepare the referer for the next request if needed
|
||||||
@@ -396,9 +377,9 @@ BHttpRequest::_ProtocolLoop()
|
|||||||
fHeaders.CountHeaders(), fInputBuffer.Size());
|
fHeaders.CountHeaders(), fInputBuffer.Size());
|
||||||
|
|
||||||
if (fResult.StatusCode() == 404)
|
if (fResult.StatusCode() == 404)
|
||||||
return B_PROT_HTTP_NOT_FOUND;
|
return B_RESOURCE_NOT_FOUND;
|
||||||
|
|
||||||
return B_PROT_SUCCESS;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -440,7 +421,7 @@ BHttpRequest::_MakeRequest()
|
|||||||
if (connectError != B_OK) {
|
if (connectError != B_OK) {
|
||||||
_EmitDebug(B_URL_PROTOCOL_DEBUG_ERROR, "Socket connection error %s",
|
_EmitDebug(B_URL_PROTOCOL_DEBUG_ERROR, "Socket connection error %s",
|
||||||
strerror(connectError));
|
strerror(connectError));
|
||||||
return B_PROT_CONNECTION_FAILED;
|
return connectError;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! ProtocolHook:ConnectionOpened
|
//! ProtocolHook:ConnectionOpened
|
||||||
@@ -506,8 +487,8 @@ BHttpRequest::_MakeRequest()
|
|||||||
fSocket->Write("\r\n", 2);
|
fSocket->Write("\r\n", 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
fSocket->Write(fOptPostFields->GetMultipartFooter().String(),
|
BString footer = fOptPostFields->GetMultipartFooter();
|
||||||
fOptPostFields->GetMultipartFooter().Length());
|
fSocket->Write(footer.String(), footer.Length());
|
||||||
}
|
}
|
||||||
} else if ((fRequestMethod == B_HTTP_POST || fRequestMethod == B_HTTP_PUT)
|
} else if ((fRequestMethod == B_HTTP_POST || fRequestMethod == B_HTTP_PUT)
|
||||||
&& fOptInputData != NULL) {
|
&& fOptInputData != NULL) {
|
||||||
@@ -546,7 +527,7 @@ BHttpRequest::_MakeRequest()
|
|||||||
bool receiveEnd = false;
|
bool receiveEnd = false;
|
||||||
bool parseEnd = false;
|
bool parseEnd = false;
|
||||||
bool readByChunks = false;
|
bool readByChunks = false;
|
||||||
bool readError = false;
|
status_t readError = B_OK;
|
||||||
ssize_t bytesRead = 0;
|
ssize_t bytesRead = 0;
|
||||||
ssize_t bytesReceived = 0;
|
ssize_t bytesReceived = 0;
|
||||||
ssize_t bytesTotal = 0;
|
ssize_t bytesTotal = 0;
|
||||||
@@ -561,7 +542,7 @@ BHttpRequest::_MakeRequest()
|
|||||||
bytesRead = fSocket->Read(chunk.Data(), kHttpBufferSize);
|
bytesRead = fSocket->Read(chunk.Data(), kHttpBufferSize);
|
||||||
|
|
||||||
if (bytesRead < 0) {
|
if (bytesRead < 0) {
|
||||||
readError = true;
|
readError = bytesRead;
|
||||||
break;
|
break;
|
||||||
} else if (bytesRead == 0)
|
} else if (bytesRead == 0)
|
||||||
receiveEnd = true;
|
receiveEnd = true;
|
||||||
@@ -692,10 +673,10 @@ BHttpRequest::_MakeRequest()
|
|||||||
fSocket->Disconnect();
|
fSocket->Disconnect();
|
||||||
delete[] inputTempBuffer;
|
delete[] inputTempBuffer;
|
||||||
|
|
||||||
if (readError)
|
if (readError != B_OK)
|
||||||
return B_PROT_READ_FAILED;
|
return readError;
|
||||||
|
|
||||||
return fQuit ? B_PROT_ABORTED : B_PROT_SUCCESS;
|
return fQuit ? B_INTERRUPTED : B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,21 +12,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
static const char* kProtocolThreadStrStatus[B_PROT_THREAD_STATUS__END + 1]
|
|
||||||
= {
|
|
||||||
"Request successfully completed",
|
|
||||||
"Request running",
|
|
||||||
"Socket error",
|
|
||||||
"Connection failed",
|
|
||||||
"Hostname resolution failed",
|
|
||||||
"Network write failed",
|
|
||||||
"Network read failed",
|
|
||||||
"Out of memory",
|
|
||||||
"Protocol-specific error",
|
|
||||||
"Unknown error"
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
BUrlRequest::BUrlRequest(const BUrl& url, BUrlProtocolListener* listener,
|
BUrlRequest::BUrlRequest(const BUrl& url, BUrlProtocolListener* listener,
|
||||||
BUrlContext* context, const char* threadName, const char* protocolName)
|
BUrlContext* context, const char* threadName, const char* protocolName)
|
||||||
:
|
:
|
||||||
@@ -35,7 +20,7 @@ BUrlRequest::BUrlRequest(const BUrl& url, BUrlProtocolListener* listener,
|
|||||||
fListener(listener),
|
fListener(listener),
|
||||||
fQuit(false),
|
fQuit(false),
|
||||||
fRunning(false),
|
fRunning(false),
|
||||||
fThreadStatus(B_PROT_PAUSED),
|
fThreadStatus(B_NO_INIT),
|
||||||
fThreadId(0),
|
fThreadId(0),
|
||||||
fThreadName(threadName),
|
fThreadName(threadName),
|
||||||
fProtocol(protocolName)
|
fProtocol(protocolName)
|
||||||
@@ -195,18 +180,6 @@ BUrlRequest::Status() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const char*
|
|
||||||
BUrlRequest::StatusString(status_t threadStatus) const
|
|
||||||
{
|
|
||||||
if (threadStatus < B_PROT_THREAD_STATUS__BASE)
|
|
||||||
threadStatus = B_PROT_THREAD_STATUS__END;
|
|
||||||
else if (threadStatus >= B_PROT_PROTOCOL_ERROR)
|
|
||||||
threadStatus = B_PROT_PROTOCOL_ERROR;
|
|
||||||
|
|
||||||
return kProtocolThreadStrStatus[threadStatus];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark Thread management
|
// #pragma mark Thread management
|
||||||
|
|
||||||
|
|
||||||
@@ -214,7 +187,7 @@ BUrlRequest::StatusString(status_t threadStatus) const
|
|||||||
BUrlRequest::_ThreadEntry(void* arg)
|
BUrlRequest::_ThreadEntry(void* arg)
|
||||||
{
|
{
|
||||||
BUrlRequest* urlProtocol = reinterpret_cast<BUrlRequest*>(arg);
|
BUrlRequest* urlProtocol = reinterpret_cast<BUrlRequest*>(arg);
|
||||||
urlProtocol->fThreadStatus = B_PROT_RUNNING;
|
urlProtocol->fThreadStatus = B_BUSY;
|
||||||
|
|
||||||
status_t protocolLoopExitStatus = urlProtocol->_ProtocolLoop();
|
status_t protocolLoopExitStatus = urlProtocol->_ProtocolLoop();
|
||||||
|
|
||||||
@@ -223,7 +196,7 @@ BUrlRequest::_ThreadEntry(void* arg)
|
|||||||
|
|
||||||
if (urlProtocol->fListener != NULL) {
|
if (urlProtocol->fListener != NULL) {
|
||||||
urlProtocol->fListener->RequestCompleted(urlProtocol,
|
urlProtocol->fListener->RequestCompleted(urlProtocol,
|
||||||
protocolLoopExitStatus == B_PROT_SUCCESS);
|
protocolLoopExitStatus == B_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -240,8 +213,8 @@ BUrlRequest::_EmitDebug(BUrlProtocolDebugMessage type,
|
|||||||
va_list arguments;
|
va_list arguments;
|
||||||
va_start(arguments, format);
|
va_start(arguments, format);
|
||||||
|
|
||||||
char debugMsg[256];
|
char debugMsg[1024];
|
||||||
vsnprintf(debugMsg, 256, format, arguments);
|
vsnprintf(debugMsg, sizeof(debugMsg), format, arguments);
|
||||||
fListener->DebugMessage(this, type, debugMsg);
|
fListener->DebugMessage(this, type, debugMsg);
|
||||||
va_end(arguments);
|
va_end(arguments);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,6 +107,6 @@ void
|
|||||||
BUrlSynchronousRequest::RequestCompleted(BUrlRequest* caller, bool success)
|
BUrlSynchronousRequest::RequestCompleted(BUrlRequest* caller, bool success)
|
||||||
{
|
{
|
||||||
PRINT(("SynchronousRequest::RequestCompleted(%s) : %s\n", (success?"true":"false"),
|
PRINT(("SynchronousRequest::RequestCompleted(%s) : %s\n", (success?"true":"false"),
|
||||||
caller->StatusString(caller->Status())));
|
strerror(caller->Status())));
|
||||||
fRequestComplete = true;
|
fRequestComplete = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user