}
if (u.host.len >= NGX_JS_HOST_MAX_LEN) {
- njs_vm_error(vm, "Host name too long");
+ njs_vm_type_error(vm, "Host name too long");
goto fail;
}
&http->proxy.url, &http->proxy.auth)
!= NGX_OK)
{
- njs_vm_error(vm, "failed to evaluate proxy URL");
+ njs_vm_internal_error(vm, "failed to evaluate proxy URL");
goto fail;
}
}
if (ngx_js_check_request_line_component(u.uri.data, u.uri.len) != NGX_OK) {
- njs_vm_error(vm, "invalid url");
+ njs_vm_type_error(vm, "invalid url");
goto fail;
}
}
if (ctx == NGX_NO_RESOLVER) {
- njs_vm_error(vm, "no resolver defined");
+ njs_vm_internal_error(vm, "no resolver defined");
goto fail;
}
value = njs_vm_object_prop(vm, init, &status, &lvalue);
if (value != NULL) {
if (ngx_js_integer(vm, value, &response->code) != NGX_OK) {
- njs_vm_error(vm, "invalid Response status");
return NJS_ERROR;
}
if (response->code < 200 || response->code > 599) {
- njs_vm_error(vm, "status provided (%i) is outside of "
- "[200, 599] range", response->code);
+ njs_vm_range_error(vm, "status provided (%i) is outside of "
+ "[200, 599] range", response->code);
return NJS_ERROR;
}
}
value = njs_vm_object_prop(vm, init, &status_text, &lvalue);
if (value != NULL) {
if (ngx_js_ngx_string(vm, value, &response->status_text) != NGX_OK) {
- njs_vm_error(vm, "invalid Response statusText");
return NJS_ERROR;
}
while (p < end) {
if (*p != '\t' && *p < ' ') {
- njs_vm_error(vm, "invalid Response statusText");
+ njs_vm_type_error(vm, "invalid Response statusText");
return NJS_ERROR;
}
value = njs_vm_object_prop(vm, init, &headers, &lvalue);
if (value != NULL) {
if (!njs_value_is_object(value)) {
- njs_vm_error(vm, "Headers is not an object");
+ njs_vm_type_error(vm, "Headers is not an object");
return NJS_ERROR;
}
if (!njs_value_is_null_or_undefined(body)) {
if (ngx_js_string(vm, body, &bd) != NGX_OK) {
- njs_vm_error(vm, "invalid Response body");
return NJS_ERROR;
}
request->method.len)
!= NGX_OK)
{
- njs_vm_error(vm, "invalid Request method");
+ njs_vm_type_error(vm, "invalid Request method");
return NJS_ERROR;
}
for (m = &forbidden[0]; m->length != 0; m++) {
if (njs_strstr_case_eq(&str, m)) {
- njs_vm_error(vm, "forbidden method: %V", m);
+ njs_vm_type_error(vm, "forbidden method: %V", m);
return NJS_ERROR;
}
}
start++;
if (len != 2) {
- njs_vm_error(vm, "header does not contain exactly two items");
+ njs_vm_type_error(vm,
+ "header does not contain exactly two items");
return NJS_ERROR;
}
failed:
- njs_vm_error(vm, "internal error");
+ njs_vm_internal_error(vm, "internal error");
return NULL;
}
error:
- njs_vm_error(vm, "internal error");
+ njs_vm_internal_error(vm, "internal error");
return NJS_ERROR;
}
input = njs_arg(args, nargs, 1);
if (njs_value_is_undefined(input)) {
- njs_vm_error(vm, "1st argument is required");
+ njs_vm_type_error(vm, "1st argument is required");
return NJS_ERROR;
}
if (njs_value_is_string(input)) {
ret = ngx_js_ngx_string(vm, input, &request->url);
if (ret != NJS_OK) {
- njs_vm_error(vm, "failed to convert url arg");
return NJS_ERROR;
}
} else {
orig = njs_vm_external(vm, ngx_http_js_fetch_request_proto_id, input);
if (orig == NULL) {
- njs_vm_error(vm, "input is not string or a Request object");
+ njs_vm_type_error(vm, "input is not string or a Request object");
return NJS_ERROR;
}
#endif
} else {
- njs_vm_error(vm, "unsupported URL schema (only http or https are"
- " supported)");
+ njs_vm_type_error(vm, "unsupported URL schema (only http or https are"
+ " supported)");
return NJS_ERROR;
}
if (ngx_parse_url(pool, u) != NGX_OK) {
- njs_vm_error(vm, "invalid url");
+ njs_vm_type_error(vm, "invalid url");
return NJS_ERROR;
}
if (value != NULL && ngx_js_ngx_string(vm, value, &request->method)
!= NGX_OK)
{
- njs_vm_error(vm, "invalid Request method");
return NJS_ERROR;
}
headers = njs_vm_object_prop(vm, init, &headers_key, &lvalue);
if (headers != NULL) {
if (!njs_value_is_object(headers)) {
- njs_vm_error(vm, "Headers is not an object");
+ njs_vm_type_error(vm, "Headers is not an object");
return NJS_ERROR;
}
value = njs_vm_object_prop(vm, init, &body_key, &lvalue);
if (value != NULL) {
if (ngx_js_ngx_string(vm, value, &request->body) != NGX_OK) {
- njs_vm_error(vm, "invalid Request body");
return NJS_ERROR;
}
ret = ngx_js_check_header_name(name, len);
if (ret != NGX_OK) {
- njs_vm_error(vm, "invalid header name");
+ njs_vm_type_error(vm, "invalid header name");
return NJS_ERROR;
}
ret = ngx_js_check_header_value(value, vlen);
if (ret != NGX_OK) {
- njs_vm_error(vm, "invalid header value");
+ njs_vm_type_error(vm, "invalid header value");
return NJS_ERROR;
}
if (headers->guard == GUARD_IMMUTABLE) {
- njs_vm_error(vm, "cannot append to immutable object");
+ njs_vm_type_error(vm, "cannot append to immutable object");
return NJS_ERROR;
}
headers = njs_vm_external(vm, ngx_http_js_fetch_headers_proto_id,
njs_argument(args, 0));
if (headers == NULL) {
- njs_vm_error(vm, "\"this\" is not fetch headers object");
+ njs_vm_type_error(vm, "\"this\" is not fetch headers object");
return NJS_ERROR;
}
headers = njs_vm_external(vm, ngx_http_js_fetch_headers_proto_id,
njs_argument(args, 0));
if (headers == NULL) {
- njs_vm_error(vm, "\"this\" is not fetch headers object");
+ njs_vm_type_error(vm, "\"this\" is not fetch headers object");
return NJS_ERROR;
}
headers = njs_vm_external(vm, ngx_http_js_fetch_headers_proto_id, this);
if (headers == NULL) {
- njs_vm_error(vm, "\"this\" is not fetch headers object");
+ njs_vm_type_error(vm, "\"this\" is not fetch headers object");
return NJS_ERROR;
}
callback = njs_arg(args, nargs, 1);
if (!njs_value_is_function(callback)) {
- njs_vm_error(vm, "\"callback\" is not a function");
+ njs_vm_type_error(vm, "\"callback\" is not a function");
return NJS_ERROR;
}
headers = njs_vm_external(vm, ngx_http_js_fetch_headers_proto_id,
njs_argument(args, 0));
if (headers == NULL) {
- njs_vm_error(vm, "\"this\" is not fetch headers object");
+ njs_vm_type_error(vm, "\"this\" is not fetch headers object");
return NJS_ERROR;
}
}
if (request->body_used) {
- njs_vm_error(vm, "body stream already read");
+ njs_vm_type_error(vm, "body stream already read");
return NJS_ERROR;
}
ngx_http_js_fetch_headers_proto_id,
&request->headers, 0);
if (ret != NJS_OK) {
- njs_vm_error(vm, "fetch header creation failed");
+ njs_vm_memory_error(vm);
return NJS_ERROR;
}
}
}
if (response->body_used) {
- njs_vm_error(vm, "body stream already read");
+ njs_vm_type_error(vm, "body stream already read");
return NJS_ERROR;
}
ngx_http_js_fetch_headers_proto_id,
&response->headers, 0);
if (ret != NJS_OK) {
- njs_vm_error(vm, "fetch header creation failed");
+ njs_vm_memory_error(vm);
return NJS_ERROR;
}
}
}
}
- njs_vm_error(vm, "unknown %s type: %V", type, &flag);
+ njs_vm_type_error(vm, "unknown %s type: %V", type, &flag);
return NJS_ERROR;
}
}
if (u.host.len >= NGX_JS_HOST_MAX_LEN) {
- JS_ThrowInternalError(cx, "Host name too long");
+ JS_ThrowTypeError(cx, "Host name too long");
goto fail;
}
}
if (ngx_js_check_request_line_component(u.uri.data, u.uri.len) != NGX_OK) {
- JS_ThrowInternalError(cx, "invalid url");
+ JS_ThrowTypeError(cx, "invalid url");
goto fail;
}
input = argv[0];
if (JS_IsUndefined(input)) {
- JS_ThrowInternalError(cx, "1st argument is required");
+ JS_ThrowTypeError(cx, "1st argument is required");
return NGX_ERROR;
}
} else {
orig = JS_GetOpaque(input, NGX_QJS_CLASS_ID_FETCH_REQUEST);
if (orig == NULL) {
- JS_ThrowInternalError(cx,
- "input is not string or a Request object");
+ JS_ThrowTypeError(cx,
+ "input is not string or a Request object");
return NGX_ERROR;
}
#endif
} else {
- JS_ThrowInternalError(cx, "unsupported URL schema (only http or https"
- " are supported)");
+ JS_ThrowTypeError(cx, "unsupported URL schema (only http or https"
+ " are supported)");
return NGX_ERROR;
}
if (ngx_parse_url(pool, u) != NGX_OK) {
- JS_ThrowInternalError(cx, "invalid url");
+ JS_ThrowTypeError(cx, "invalid url");
return NGX_ERROR;
}
init = argv[1];
value = JS_GetPropertyStr(cx, init, "method");
if (JS_IsException(value)) {
- JS_ThrowInternalError(cx, "invalid Request method");
return NGX_ERROR;
}
value = JS_GetPropertyStr(cx, init, "headers");
if (JS_IsException(value)) {
- JS_ThrowInternalError(cx, "invalid Request headers");
return NGX_ERROR;
}
if (!JS_IsUndefined(value)) {
if (!JS_IsObject(value)) {
JS_FreeValue(cx, value);
- JS_ThrowInternalError(cx, "Headers is not an object");
+ JS_ThrowTypeError(cx, "Headers is not an object");
return NGX_ERROR;
}
value = JS_GetPropertyStr(cx, init, "body");
if (JS_IsException(value)) {
- JS_ThrowInternalError(cx, "invalid Request body");
return NGX_ERROR;
}
if (JS_IsObject(init)) {
value = JS_GetPropertyStr(cx, init, "status");
if (JS_IsException(value)) {
- return JS_ThrowInternalError(cx, "invalid Response status");
+ return JS_EXCEPTION;
}
if (!JS_IsUndefined(value)) {
}
if (response->code < 200 || response->code > 599) {
- return JS_ThrowInternalError(cx, "status provided (%d) is "
- "outside of [200, 599] range",
- (int) response->code);
+ return JS_ThrowRangeError(cx, "status provided (%d) is "
+ "outside of [200, 599] range",
+ (int) response->code);
}
}
value = JS_GetPropertyStr(cx, init, "statusText");
if (JS_IsException(value)) {
- return JS_ThrowInternalError(cx, "invalid Response statusText");
+ return JS_EXCEPTION;
}
if (!JS_IsUndefined(value)) {
while (p < end) {
if (*p != '\t' && *p < ' ') {
- return JS_ThrowInternalError(cx,
- "invalid Response statusText");
+ return JS_ThrowTypeError(cx,
+ "invalid Response statusText");
}
p++;
value = JS_GetPropertyStr(cx, init, "headers");
if (JS_IsException(value)) {
- return JS_ThrowInternalError(cx, "invalid Response headers");
+ return JS_EXCEPTION;
}
if (!JS_IsUndefined(value)) {
if (!JS_IsObject(value)) {
JS_FreeValue(cx, value);
- return JS_ThrowInternalError(cx, "Headers is not an object");
+ return JS_ThrowTypeError(cx, "Headers is not an object");
}
rc = ngx_qjs_headers_fill(cx, &response->headers, value);
request->method.len)
!= NGX_OK)
{
- JS_ThrowInternalError(cx, "invalid Request method");
+ JS_ThrowTypeError(cx, "invalid Request method");
return NGX_ERROR;
}
if (request->method.len == m->len
&& ngx_strncasecmp(request->method.data, m->data, m->len) == 0)
{
- JS_ThrowInternalError(cx, "forbidden method: %.*s",
- (int) m->len, m->data);
+ JS_ThrowTypeError(cx, "forbidden method: %.*s",
+ (int) m->len, m->data);
return NGX_ERROR;
}
}
if (length != 2) {
JS_FreeValue(cx, header);
- JS_ThrowInternalError(cx,
- "header does not contain exactly two items");
+ JS_ThrowTypeError(cx,
+ "header does not contain exactly two items");
goto fail;
}
ret = ngx_js_check_header_name(name, len);
if (ret != NGX_OK) {
- JS_ThrowInternalError(cx, "invalid header name");
+ JS_ThrowTypeError(cx, "invalid header name");
return NGX_ERROR;
}
ret = ngx_js_check_header_value(value, vlen);
if (ret != NGX_OK) {
- JS_ThrowInternalError(cx, "invalid header value");
+ JS_ThrowTypeError(cx, "invalid header value");
return NGX_ERROR;
}
if (headers->guard == GUARD_IMMUTABLE) {
- JS_ThrowInternalError(cx, "cannot append to immutable object");
+ JS_ThrowTypeError(cx, "cannot append to immutable object");
return NGX_ERROR;
}
ngx_js_tb_elt_t *h;
ngx_js_headers_t *headers;
- headers = JS_GetOpaque2(cx, obj, NGX_QJS_CLASS_ID_FETCH_HEADERS);
+ headers = JS_GetOpaque(obj, NGX_QJS_CLASS_ID_FETCH_HEADERS);
if (headers == NULL) {
- (void) JS_ThrowInternalError(cx, "\"this\" is not a Headers object");
+ (void) JS_ThrowTypeError(cx, "\"this\" is not a Headers object");
return -1;
}
ngx_int_t rc;
ngx_js_headers_t *headers;
- headers = JS_GetOpaque2(cx, this_val, NGX_QJS_CLASS_ID_FETCH_HEADERS);
+ headers = JS_GetOpaque(this_val, NGX_QJS_CLASS_ID_FETCH_HEADERS);
if (headers == NULL) {
- return JS_ThrowInternalError(cx,
- "\"this\" is not fetch headers object");
+ return JS_ThrowTypeError(cx,
+ "\"this\" is not fetch headers object");
}
rc = ngx_qjs_headers_fill_header_free(cx, headers,
ngx_js_tb_elt_t *h;
ngx_js_headers_t *headers;
- headers = JS_GetOpaque2(cx, this_val, NGX_QJS_CLASS_ID_FETCH_HEADERS);
+ headers = JS_GetOpaque(this_val, NGX_QJS_CLASS_ID_FETCH_HEADERS);
if (headers == NULL) {
- return JS_ThrowInternalError(cx,
- "\"this\" is not fetch headers object");
+ return JS_ThrowTypeError(cx,
+ "\"this\" is not fetch headers object");
}
name.data = (u_char *) JS_ToCStringLen(cx, &name.len, argv[0]);
ngx_uint_t i;
ngx_js_headers_t *headers;
- headers = JS_GetOpaque2(cx, this_val, NGX_QJS_CLASS_ID_FETCH_HEADERS);
+ headers = JS_GetOpaque(this_val, NGX_QJS_CLASS_ID_FETCH_HEADERS);
if (headers == NULL) {
- return JS_ThrowInternalError(cx,
- "\"this\" is not fetch headers object");
+ return JS_ThrowTypeError(cx,
+ "\"this\" is not fetch headers object");
}
callback = argv[0];
if (!JS_IsFunction(cx, callback)) {
- return JS_ThrowInternalError(cx, "\"callback\" is not a function");
+ return JS_ThrowTypeError(cx, "\"callback\" is not a function");
}
keys = ngx_qjs_headers_ext_keys(cx, this_val);
ngx_js_tb_elt_t *h, **ph, **pp;
ngx_js_headers_t *headers;
- headers = JS_GetOpaque2(cx, this_val, NGX_QJS_CLASS_ID_FETCH_HEADERS);
+ headers = JS_GetOpaque(this_val, NGX_QJS_CLASS_ID_FETCH_HEADERS);
if (headers == NULL) {
- return JS_ThrowInternalError(cx,
- "\"this\" is not fetch headers object");
+ return JS_ThrowTypeError(cx,
+ "\"this\" is not fetch headers object");
}
name.data = (u_char *) JS_ToCStringLen(cx, &name.len, argv[0]);
}
if (request->body_used) {
- return JS_ThrowInternalError(cx, "body stream already read");
+ return JS_ThrowTypeError(cx, "body stream already read");
}
request->body_used = 1;
if (JS_IsUndefined(header)) {
header = JS_NewObjectClass(cx, NGX_QJS_CLASS_ID_FETCH_HEADERS);
if (JS_IsException(header)) {
- return JS_ThrowInternalError(cx, "fetch header creation failed");
+ return JS_ThrowOutOfMemory(cx);
}
JS_SetOpaque(header, &request->headers);
if (JS_IsUndefined(header)) {
header = JS_NewObjectClass(cx, NGX_QJS_CLASS_ID_FETCH_HEADERS);
if (JS_IsException(header)) {
- return JS_ThrowInternalError(cx, "fetch header creation failed");
+ return JS_ThrowOutOfMemory(cx);
}
JS_SetOpaque(header, &response->headers);
}
if (response->body_used) {
- return JS_ThrowInternalError(cx, "body stream already read");
+ return JS_ThrowTypeError(cx, "body stream already read");
}
response->body_used = 1;
value = JS_GetPropertyStr(cx, object, prop);
if (JS_IsException(value)) {
- JS_ThrowInternalError(cx, "failed to get %s property", prop);
return NGX_ERROR;
}
}
}
- JS_ThrowInternalError(cx, "unknown %s type: %.*s", prop,
- (int) flag.len, flag.data);
+ JS_ThrowTypeError(cx, "unknown %s type: %.*s", prop,
+ (int) flag.len, flag.data);
JS_FreeCString(cx, (const char *) flag.data);