[node] Handle tiles which 404 better
This commit is contained in:
@@ -7,7 +7,7 @@ namespace mbgl {
|
||||
|
||||
class Response {
|
||||
public:
|
||||
enum Status : bool { Error, Successful };
|
||||
enum Status { Error, Successful, NotFound };
|
||||
|
||||
Status status = Error;
|
||||
std::string message;
|
||||
|
||||
@@ -64,7 +64,9 @@ NAN_METHOD(NodeRequest::Respond) {
|
||||
auto resource = std::move(nodeRequest->resource);
|
||||
|
||||
if (info.Length() < 1) {
|
||||
return Nan::ThrowTypeError("First argument must be an error object");
|
||||
auto response = std::make_shared<mbgl::Response>();
|
||||
response->status = mbgl::Response::NotFound;
|
||||
source->notify(*resource, response);
|
||||
} else if (info[0]->BooleanValue()) {
|
||||
auto response = std::make_shared<mbgl::Response>();
|
||||
|
||||
|
||||
@@ -33,6 +33,12 @@ void RasterTileData::request(float pixelRatio,
|
||||
req = fs->request({ Resource::Kind::Tile, url }, util::RunLoop::getLoop(), [url, callback, this](const Response &res) {
|
||||
req = nullptr;
|
||||
|
||||
if (res.status == Response::NotFound) {
|
||||
state = State::parsed;
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
if (res.status != Response::Successful) {
|
||||
std::stringstream message;
|
||||
message << "Failed to load [" << url << "]: " << res.message;
|
||||
|
||||
@@ -44,6 +44,12 @@ void VectorTileData::request(float pixelRatio, const std::function<void()>& call
|
||||
req = fs->request({ Resource::Kind::Tile, url }, util::RunLoop::getLoop(), [url, callback, this](const Response &res) {
|
||||
req = nullptr;
|
||||
|
||||
if (res.status == Response::NotFound) {
|
||||
state = State::parsed;
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
if (res.status != Response::Successful) {
|
||||
std::stringstream message;
|
||||
message << "Failed to load [" << url << "]: " << res.message;
|
||||
|
||||
Reference in New Issue
Block a user