Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
338c2e55
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1187
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
338c2e55
编写于
6月 16, 2021
作者:
S
Shengliang Guan
提交者:
GitHub
6月 16, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #6509 from taosdata/feature/TD-4598
[TD-4598]<enhance>: refactored mapping of TD error code to HTTP error code
上级
97952bff
83aa4e11
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
200 addition
and
136 deletion
+200
-136
src/plugins/http/inc/httpParser.h
src/plugins/http/inc/httpParser.h
+64
-0
src/plugins/http/src/httpParser.c
src/plugins/http/src/httpParser.c
+97
-97
src/plugins/http/src/httpResp.c
src/plugins/http/src/httpResp.c
+39
-39
未找到文件。
src/plugins/http/inc/httpParser.h
浏览文件 @
338c2e55
...
...
@@ -19,6 +19,70 @@
#define HTTP_MAX_URL 5 // http url stack size
#define HTTP_CODE_CONTINUE 100
#define HTTP_CODE_SWITCHING_PROTOCOL 101
#define HTTP_CODE_PROCESSING 102
#define HTTP_CODE_EARLY_HINTS 103
#define HTTP_CODE_OK 200
#define HTTP_CODE_CREATED 201
#define HTTP_CODE_ACCEPTED 202
#define HTTP_CODE_NON_AUTHORITATIVE_INFO 203
#define HTTP_CODE_NO_CONTENT 204
#define HTTP_CODE_RESET_CONTENT 205
#define HTTP_CODE_PARTIAL_CONTENT 206
#define HTTP_CODE_MULTI_STATUS 207
#define HTTP_CODE_ALREADY_REPORTED 208
#define HTTP_CODE_IM_USED 226
#define HTTP_CODE_MULTIPLE_CHOICE 300
#define HTTP_CODE_MOVED_PERMANENTLY 301
#define HTTP_CODE_FOUND 302
#define HTTP_CODE_SEE_OTHER 303
#define HTTP_CODE_NOT_MODIFIED 304
#define HTTP_CODE_USE_PROXY 305
#define HTTP_CODE_UNUSED 306
#define HTTP_CODE_TEMPORARY_REDIRECT 307
#define HTTP_CODE_PERMANENT_REDIRECT 308
#define HTTP_CODE_BAD_REQUEST 400
#define HTTP_CODE_UNAUTHORIZED 401
#define HTTP_CODE_PAYMENT_REQUIRED 402
#define HTTP_CODE_FORBIDDEN 403
#define HTTP_CODE_NOT_FOUND 404
#define HTTP_CODE_METHOD_NOT_ALLOWED 405
#define HTTP_CODE_NOT_ACCEPTABLE 406
#define HTTP_CODE_PROXY_AUTH_REQUIRED 407
#define HTTP_CODE_REQUEST_TIMEOUT 408
#define HTTP_CODE_CONFLICT 409
#define HTTP_CODE_GONE 410
#define HTTP_CODE_LENGTH_REQUIRED 411
#define HTTP_CODE_PRECONDITION_FAILED 412
#define HTTP_CODE_PAYLOAD_TOO_LARGE 413
#define HTTP_CODE_URI_TOO_LARGE 414
#define HTTP_CODE_UNSUPPORTED_MEDIA_TYPE 415
#define HTTP_CODE_RANGE_NOT_SATISFIABLE 416
#define HTTP_CODE_EXPECTATION_FAILED 417
#define HTTP_CODE_IM_A_TEAPOT 418
#define HTTP_CODE_MISDIRECTED_REQUEST 421
#define HTTP_CODE_UNPROCESSABLE_ENTITY 422
#define HTTP_CODE_LOCKED 423
#define HTTP_CODE_FAILED_DEPENDENCY 424
#define HTTP_CODE_TOO_EARLY 425
#define HTTP_CODE_UPGRADE_REQUIRED 426
#define HTTP_CODE_PRECONDITION_REQUIRED 428
#define HTTP_CODE_TOO_MANY_REQUESTS 429
#define HTTP_CODE_REQ_HDR_FIELDS_TOO_LARGE 431
#define HTTP_CODE_UNAVAIL_4_LEGAL_REASONS 451
#define HTTP_CODE_INTERNAL_SERVER_ERROR 500
#define HTTP_CODE_NOT_IMPLEMENTED 501
#define HTTP_CODE_BAD_GATEWAY 502
#define HTTP_CODE_SERVICE_UNAVAILABLE 503
#define HTTP_CODE_GATEWAY_TIMEOUT 504
#define HTTP_CODE_HTTP_VER_NOT_SUPPORTED 505
#define HTTP_CODE_VARIANT_ALSO_NEGOTIATES 506
#define HTTP_CODE_INSUFFICIENT_STORAGE 507
#define HTTP_CODE_LOOP_DETECTED 508
#define HTTP_CODE_NOT_EXTENDED 510
#define HTTP_CODE_NETWORK_AUTH_REQUIRED 511
typedef
enum
HTTP_PARSER_STATE
{
HTTP_PARSER_BEGIN
,
HTTP_PARSER_REQUEST_OR_RESPONSE
,
...
...
src/plugins/http/src/httpParser.c
浏览文件 @
338c2e55
...
...
@@ -25,70 +25,70 @@
static
void
httpOnData
(
ehttp_gzip_t
*
gzip
,
void
*
arg
,
const
char
*
buf
,
int32_t
len
);
static
HttpStatus
httpStatusCodes
[]
=
{
{
100
,
"Continue"
},
{
101
,
"Switching Protocol"
},
{
102
,
"Processing (WebDAV)"
},
{
103
,
"Early Hints"
},
{
200
,
"OK"
},
{
201
,
"Created"
},
{
202
,
"Accepted"
},
{
203
,
"Non-Authoritative Information"
},
{
204
,
"No Content"
},
{
205
,
"Reset Content"
},
{
206
,
"Partial Content"
},
{
207
,
"Multi-Status (WebDAV)"
},
{
208
,
"Already Reported (WebDAV)"
},
{
226
,
"IM Used (HTTP Delta encoding)"
},
{
300
,
"Multiple Choice"
},
{
301
,
"Moved Permanently"
},
{
302
,
"Found"
},
{
303
,
"See Other"
},
{
304
,
"Not Modified"
},
{
305
,
"Use Proxy"
},
{
306
,
"unused"
},
{
307
,
"Temporary Redirect"
},
{
308
,
"Permanent Redirect"
},
{
400
,
"Bad Request"
},
{
401
,
"Unauthorized"
},
{
402
,
"Payment Required"
},
{
403
,
"Forbidden"
},
{
404
,
"Not Found"
},
{
405
,
"Method Not Allowed"
},
{
406
,
"Not Acceptable"
},
{
407
,
"Proxy Authentication Required"
},
{
408
,
"Request Timeout"
},
{
409
,
"Conflict"
},
{
410
,
"Gone"
},
{
411
,
"Length Required"
},
{
412
,
"Precondition Failed"
},
{
413
,
"Payload Too Large"
},
{
414
,
"URI Too Long"
},
{
415
,
"Unsupported Media Type"
},
{
416
,
"Range Not Satisfiable"
},
{
417
,
"Expectation Failed"
},
{
418
,
"I'm a teapot"
},
{
421
,
"Misdirected Request"
},
{
422
,
"Unprocessable Entity (WebDAV)"
},
{
423
,
"Locked (WebDAV)"
},
{
424
,
"Failed Dependency (WebDAV)"
},
{
425
,
"Too Early"
},
{
426
,
"Upgrade Required"
},
{
428
,
"Precondition Required"
},
{
429
,
"Too Many Requests"
},
{
431
,
"Request Header Fields Too Large"
},
{
451
,
"Unavailable For Legal Reasons"
},
{
500
,
"Internal Server Error"
},
{
501
,
"Not Implemented"
},
{
502
,
"Bad Gateway"
},
{
503
,
"Service Unavailable"
},
{
504
,
"Gateway Timeout"
},
{
505
,
"HTTP Version Not Supported"
},
{
506
,
"Variant Also Negotiates"
},
{
507
,
"Insufficient Storage"
},
{
508
,
"Loop Detected (WebDAV)"
},
{
510
,
"Not Extended"
},
{
511
,
"Network Authentication Required"
},
{
0
,
NULL
}
{
HTTP_CODE_CONTINUE
,
"Continue"
},
{
HTTP_CODE_SWITCHING_PROTOCOL
,
"Switching Protocol"
},
{
HTTP_CODE_PROCESSING
,
"Processing (WebDAV)"
},
{
HTTP_CODE_EARLY_HINTS
,
"Early Hints"
},
{
HTTP_CODE_OK
,
"OK"
},
{
HTTP_CODE_CREATED
,
"Created"
},
{
HTTP_CODE_ACCEPTED
,
"Accepted"
},
{
HTTP_CODE_NON_AUTHORITATIVE_INFO
,
"Non-Authoritative Information"
},
{
HTTP_CODE_NO_CONTENT
,
"No Content"
},
{
HTTP_CODE_RESET_CONTENT
,
"Reset Content"
},
{
HTTP_CODE_PARTIAL_CONTENT
,
"Partial Content"
},
{
HTTP_CODE_MULTI_STATUS
,
"Multi-Status (WebDAV)"
},
{
HTTP_CODE_ALREADY_REPORTED
,
"Already Reported (WebDAV)"
},
{
HTTP_CODE_IM_USED
,
"IM Used (HTTP Delta encoding)"
},
{
HTTP_CODE_MULTIPLE_CHOICE
,
"Multiple Choice"
},
{
HTTP_CODE_MOVED_PERMANENTLY
,
"Moved Permanently"
},
{
HTTP_CODE_FOUND
,
"Found"
},
{
HTTP_CODE_SEE_OTHER
,
"See Other"
},
{
HTTP_CODE_NOT_MODIFIED
,
"Not Modified"
},
{
HTTP_CODE_USE_PROXY
,
"Use Proxy"
},
{
HTTP_CODE_UNUSED
,
"unused"
},
{
HTTP_CODE_TEMPORARY_REDIRECT
,
"Temporary Redirect"
},
{
HTTP_CODE_PERMANENT_REDIRECT
,
"Permanent Redirect"
},
{
HTTP_CODE_BAD_REQUEST
,
"Bad Request"
},
{
HTTP_CODE_UNAUTHORIZED
,
"Unauthorized"
},
{
HTTP_CODE_PAYMENT_REQUIRED
,
"Payment Required"
},
{
HTTP_CODE_FORBIDDEN
,
"Forbidden"
},
{
HTTP_CODE_NOT_FOUND
,
"Not Found"
},
{
HTTP_CODE_METHOD_NOT_ALLOWED
,
"Method Not Allowed"
},
{
HTTP_CODE_NOT_ACCEPTABLE
,
"Not Acceptable"
},
{
HTTP_CODE_PROXY_AUTH_REQUIRED
,
"Proxy Authentication Required"
},
{
HTTP_CODE_REQUEST_TIMEOUT
,
"Request Timeout"
},
{
HTTP_CODE_CONFLICT
,
"Conflict"
},
{
HTTP_CODE_GONE
,
"Gone"
},
{
HTTP_CODE_LENGTH_REQUIRED
,
"Length Required"
},
{
HTTP_CODE_PRECONDITION_FAILED
,
"Precondition Failed"
},
{
HTTP_CODE_PAYLOAD_TOO_LARGE
,
"Payload Too Large"
},
{
HTTP_CODE_URI_TOO_LARGE
,
"URI Too Long"
},
{
HTTP_CODE_UNSUPPORTED_MEDIA_TYPE
,
"Unsupported Media Type"
},
{
HTTP_CODE_RANGE_NOT_SATISFIABLE
,
"Range Not Satisfiable"
},
{
HTTP_CODE_EXPECTATION_FAILED
,
"Expectation Failed"
},
{
HTTP_CODE_IM_A_TEAPOT
,
"I'm a teapot"
},
{
HTTP_CODE_MISDIRECTED_REQUEST
,
"Misdirected Request"
},
{
HTTP_CODE_UNPROCESSABLE_ENTITY
,
"Unprocessable Entity (WebDAV)"
},
{
HTTP_CODE_LOCKED
,
"Locked (WebDAV)"
},
{
HTTP_CODE_FAILED_DEPENDENCY
,
"Failed Dependency (WebDAV)"
},
{
HTTP_CODE_TOO_EARLY
,
"Too Early"
},
{
HTTP_CODE_UPGRADE_REQUIRED
,
"Upgrade Required"
},
{
HTTP_CODE_PRECONDITION_REQUIRED
,
"Precondition Required"
},
{
HTTP_CODE_TOO_MANY_REQUESTS
,
"Too Many Requests"
},
{
HTTP_CODE_REQ_HDR_FIELDS_TOO_LARGE
,
"Request Header Fields Too Large"
},
{
HTTP_CODE_UNAVAIL_4_LEGAL_REASONS
,
"Unavailable For Legal Reasons"
},
{
HTTP_CODE_INTERNAL_SERVER_ERROR
,
"Internal Server Error"
},
{
HTTP_CODE_NOT_IMPLEMENTED
,
"Not Implemented"
},
{
HTTP_CODE_BAD_GATEWAY
,
"Bad Gateway"
},
{
HTTP_CODE_SERVICE_UNAVAILABLE
,
"Service Unavailable"
},
{
HTTP_CODE_GATEWAY_TIMEOUT
,
"Gateway Timeout"
},
{
HTTP_CODE_HTTP_VER_NOT_SUPPORTED
,
"HTTP Version Not Supported"
},
{
HTTP_CODE_VARIANT_ALSO_NEGOTIATES
,
"Variant Also Negotiates"
},
{
HTTP_CODE_INSUFFICIENT_STORAGE
,
"Insufficient Storage"
},
{
HTTP_CODE_LOOP_DETECTED
,
"Loop Detected (WebDAV)"
},
{
HTTP_CODE_NOT_EXTENDED
,
"Not Extended"
},
{
HTTP_CODE_NETWORK_AUTH_REQUIRED
,
"Network Authentication Required"
},
{
0
,
NULL
}
};
char
*
httpGetStatusDesc
(
int32_t
statusCode
)
{
...
...
@@ -552,7 +552,7 @@ static int32_t httpParserOnBegin(HttpParser *parser, HTTP_PARSER_STATE state, co
if
(
httpAppendString
(
&
parser
->
str
,
&
c
,
1
))
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_METHOD_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_METHOD_FAILED
);
break
;
}
httpPopStack
(
parser
);
...
...
@@ -561,7 +561,7 @@ static int32_t httpParserOnBegin(HttpParser *parser, HTTP_PARSER_STATE state, co
}
httpError
(
"context:%p, fd:%d, parser state:%d, unexpected char:[%c]%02x"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
400
,
TSDB_CODE_HTTP_PARSE_METHOD_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_BAD_REQUEST
,
TSDB_CODE_HTTP_PARSE_METHOD_FAILED
);
}
while
(
0
);
return
ok
;
}
...
...
@@ -599,7 +599,7 @@ static int32_t httpParserOnRquestOrResponse(HttpParser *parser, HTTP_PARSER_STAT
httpError
(
"context:%p, fd:%d, parser state:%d, unexpected char:[%c]%02x"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
400
,
TSDB_CODE_HTTP_PARSE_METHOD_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_BAD_REQUEST
,
TSDB_CODE_HTTP_PARSE_METHOD_FAILED
);
}
while
(
0
);
return
ok
;
}
...
...
@@ -612,7 +612,7 @@ static int32_t httpParserOnMethod(HttpParser *parser, HTTP_PARSER_STATE state, c
if
(
httpAppendString
(
&
parser
->
str
,
&
c
,
1
))
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_METHOD_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_METHOD_FAILED
);
break
;
}
break
;
...
...
@@ -621,7 +621,7 @@ static int32_t httpParserOnMethod(HttpParser *parser, HTTP_PARSER_STATE state, c
if
(
!
parser
->
method
)
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_METHOD_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_METHOD_FAILED
);
break
;
}
else
{
httpTrace
(
"context:%p, fd:%d, httpMethod:%s"
,
pContext
,
pContext
->
fd
,
parser
->
method
);
...
...
@@ -641,7 +641,7 @@ static int32_t httpParserOnTarget(HttpParser *parser, HTTP_PARSER_STATE state, c
if
(
httpAppendString
(
&
parser
->
str
,
&
c
,
1
))
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_TARGET_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_TARGET_FAILED
);
break
;
}
break
;
...
...
@@ -650,7 +650,7 @@ static int32_t httpParserOnTarget(HttpParser *parser, HTTP_PARSER_STATE state, c
if
(
!
parser
->
target
)
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_TARGET_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_TARGET_FAILED
);
break
;
}
httpClearString
(
&
parser
->
str
);
...
...
@@ -670,13 +670,13 @@ static int32_t httpParserOnVersion(HttpParser *parser, HTTP_PARSER_STATE state,
if
(
prefix
[
parser
->
str
.
pos
]
!=
c
)
{
httpError
(
"context:%p, fd:%d, parser state:%d, unexpected char:[%c]%02x"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
400
,
TSDB_CODE_HTTP_PARSE_VERSION_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_BAD_REQUEST
,
TSDB_CODE_HTTP_PARSE_VERSION_FAILED
);
break
;
}
if
(
httpAppendString
(
&
parser
->
str
,
&
c
,
1
))
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_VERSION_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_VERSION_FAILED
);
break
;
}
break
;
...
...
@@ -685,14 +685,14 @@ static int32_t httpParserOnVersion(HttpParser *parser, HTTP_PARSER_STATE state,
if
(
c
!=
'0'
&&
c
!=
'1'
&&
c
!=
'2'
)
{
httpError
(
"context:%p, fd:%d, parser state:%d, unexpected char:[%c]%02x"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
400
,
TSDB_CODE_HTTP_PARSE_VERSION_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_BAD_REQUEST
,
TSDB_CODE_HTTP_PARSE_VERSION_FAILED
);
break
;
}
if
(
httpAppendString
(
&
parser
->
str
,
&
c
,
1
))
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_VERSION_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_VERSION_FAILED
);
break
;
}
...
...
@@ -709,7 +709,7 @@ static int32_t httpParserOnVersion(HttpParser *parser, HTTP_PARSER_STATE state,
if
(
!
parser
->
version
)
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_VERSION_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_VERSION_FAILED
);
break
;
}
...
...
@@ -739,7 +739,7 @@ static int32_t httpParserOnSp(HttpParser *parser, HTTP_PARSER_STATE state, const
}
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_SP_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_SP_FAILED
);
}
while
(
0
);
return
ok
;
}
...
...
@@ -752,7 +752,7 @@ static int32_t httpParserOnStatusCode(HttpParser *parser, HTTP_PARSER_STATE stat
if
(
httpAppendString
(
&
parser
->
str
,
&
c
,
1
))
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_STATUS_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_STATUS_FAILED
);
break
;
}
if
(
parser
->
str
.
pos
<
3
)
break
;
...
...
@@ -764,7 +764,7 @@ static int32_t httpParserOnStatusCode(HttpParser *parser, HTTP_PARSER_STATE stat
}
httpError
(
"context:%p, fd:%d, parser state:%d, unexpected char:[%c]%02x"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
400
,
TSDB_CODE_HTTP_PARSE_STATUS_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_BAD_REQUEST
,
TSDB_CODE_HTTP_PARSE_STATUS_FAILED
);
}
while
(
0
);
return
ok
;
}
...
...
@@ -778,7 +778,7 @@ static int32_t httpParserOnReasonPhrase(HttpParser *parser, HTTP_PARSER_STATE st
if
(
!
parser
->
reasonPhrase
)
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_PHRASE_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_PHRASE_FAILED
);
break
;
}
ok
=
httpOnStatusLine
(
parser
,
parser
->
statusCode
,
parser
->
reasonPhrase
);
...
...
@@ -790,7 +790,7 @@ static int32_t httpParserOnReasonPhrase(HttpParser *parser, HTTP_PARSER_STATE st
if
(
httpAppendString
(
&
parser
->
str
,
&
c
,
1
))
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_PHRASE_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_PHRASE_FAILED
);
break
;
}
}
while
(
0
);
...
...
@@ -802,7 +802,7 @@ static int32_t httpParserPostProcess(HttpParser *parser) {
if
(
parser
->
gzip
)
{
if
(
ehttp_gzip_finish
(
parser
->
gzip
))
{
httpError
(
"context:%p, fd:%d, gzip failed"
,
pContext
,
pContext
->
fd
);
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_FINISH_GZIP_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_FINISH_GZIP_FAILED
);
return
-
1
;
}
}
...
...
@@ -819,13 +819,13 @@ static int32_t httpParserOnCrlf(HttpParser *parser, HTTP_PARSER_STATE state, con
if
(
s
[
parser
->
str
.
pos
]
!=
c
)
{
httpError
(
"context:%p, fd:%d, parser state:%d, unexpected char:[%c]%02x"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
400
,
TSDB_CODE_HTTP_PARSE_CRLF_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_BAD_REQUEST
,
TSDB_CODE_HTTP_PARSE_CRLF_FAILED
);
break
;
}
if
(
httpAppendString
(
&
parser
->
str
,
&
c
,
1
))
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_CRLF_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_CRLF_FAILED
);
break
;
}
if
(
parser
->
str
.
pos
==
len
)
{
...
...
@@ -862,7 +862,7 @@ static int32_t httpParserOnHeader(HttpParser *parser, HTTP_PARSER_STATE state, c
if
(
httpAppendString
(
&
parser
->
str
,
&
c
,
1
))
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_HEADER_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_HEADER_FAILED
);
break
;
}
httpPushStack
(
parser
,
HTTP_PARSER_CRLF
);
...
...
@@ -873,7 +873,7 @@ static int32_t httpParserOnHeader(HttpParser *parser, HTTP_PARSER_STATE state, c
}
httpError
(
"context:%p, fd:%d, parser state:%d, unexpected char:[%c]%02x"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
400
,
TSDB_CODE_HTTP_PARSE_HEADER_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_BAD_REQUEST
,
TSDB_CODE_HTTP_PARSE_HEADER_FAILED
);
}
while
(
0
);
return
ok
;
}
...
...
@@ -886,7 +886,7 @@ static int32_t httpParserOnHeaderKey(HttpParser *parser, HTTP_PARSER_STATE state
if
(
httpAppendString
(
&
parser
->
str
,
&
c
,
1
))
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_HEADER_KEY_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_HEADER_KEY_FAILED
);
break
;
}
break
;
...
...
@@ -896,7 +896,7 @@ static int32_t httpParserOnHeaderKey(HttpParser *parser, HTTP_PARSER_STATE state
if
(
!
parser
->
key
)
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_HEADER_KEY_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_HEADER_KEY_FAILED
);
break
;
}
httpClearString
(
&
parser
->
str
);
...
...
@@ -905,7 +905,7 @@ static int32_t httpParserOnHeaderKey(HttpParser *parser, HTTP_PARSER_STATE state
}
httpError
(
"context:%p, fd:%d, parser state:%d, unexpected char:[%c]%02x"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
400
,
TSDB_CODE_HTTP_PARSE_HEADER_KEY_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_BAD_REQUEST
,
TSDB_CODE_HTTP_PARSE_HEADER_KEY_FAILED
);
}
while
(
0
);
return
ok
;
}
...
...
@@ -919,7 +919,7 @@ static int32_t httpParserOnHeaderVal(HttpParser *parser, HTTP_PARSER_STATE state
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
parser
->
parseCode
=
TSDB_CODE_HTTP_PARSE_HEADER_VAL_FAILED
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_HEADER_VAL_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_HEADER_VAL_FAILED
);
break
;
}
break
;
...
...
@@ -948,7 +948,7 @@ static int32_t httpParserOnChunkSize(HttpParser *parser, HTTP_PARSER_STATE state
if
(
httpAppendString
(
&
parser
->
str
,
&
c
,
1
))
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_CHUNK_SIZE_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_CHUNK_SIZE_FAILED
);
break
;
}
break
;
...
...
@@ -982,7 +982,7 @@ static int32_t httpParserOnChunkSize(HttpParser *parser, HTTP_PARSER_STATE state
}
httpError
(
"context:%p, fd:%d, parser state:%d, unexpected char:[%c]%02x"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
400
,
TSDB_CODE_HTTP_PARSE_CHUNK_SIZE_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_BAD_REQUEST
,
TSDB_CODE_HTTP_PARSE_CHUNK_SIZE_FAILED
);
}
while
(
0
);
return
ok
;
}
...
...
@@ -994,7 +994,7 @@ static int32_t httpParserOnChunk(HttpParser *parser, HTTP_PARSER_STATE state, co
if
(
httpAppendString
(
&
parser
->
str
,
&
c
,
1
))
{
httpError
(
"context:%p, fd:%d, parser state:%d, char:[%c]%02x, oom"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_CHUNK_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_CHUNK_FAILED
);
break
;
}
++
parser
->
receivedSize
;
...
...
@@ -1005,7 +1005,7 @@ static int32_t httpParserOnChunk(HttpParser *parser, HTTP_PARSER_STATE state, co
if
(
ehttp_gzip_write
(
parser
->
gzip
,
parser
->
str
.
str
,
parser
->
str
.
pos
))
{
httpError
(
"context:%p, fd:%d, gzip failed"
,
pContext
,
pContext
->
fd
);
ok
=
-
1
;
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_CHUNK_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_CHUNK_FAILED
);
break
;
}
}
else
{
...
...
@@ -1027,7 +1027,7 @@ static int32_t httpParserOnEnd(HttpParser *parser, HTTP_PARSER_STATE state, cons
do
{
ok
=
-
1
;
httpError
(
"context:%p, fd:%d, parser state:%d, unexpected char:[%c]%02x"
,
pContext
,
pContext
->
fd
,
state
,
c
,
c
);
httpOnError
(
parser
,
507
,
TSDB_CODE_HTTP_PARSE_END_FAILED
);
httpOnError
(
parser
,
HTTP_CODE_INSUFFICIENT_STORAGE
,
TSDB_CODE_HTTP_PARSE_END_FAILED
);
}
while
(
0
);
return
ok
;
}
...
...
@@ -1104,7 +1104,7 @@ static int32_t httpParseChar(HttpParser *parser, const char c, int32_t *again) {
ok
=
-
1
;
httpError
(
"context:%p, fd:%d, unknown parse state:%d"
,
pContext
,
pContext
->
fd
,
state
);
httpOnError
(
parser
,
500
,
TSDB_CODE_HTTP_PARSE_INVALID_STATE
);
httpOnError
(
parser
,
HTTP_CODE_INTERNAL_SERVER_ERROR
,
TSDB_CODE_HTTP_PARSE_INVALID_STATE
);
}
while
(
0
);
if
(
ok
==
-
1
)
{
...
...
@@ -1115,7 +1115,7 @@ static int32_t httpParseChar(HttpParser *parser, const char c, int32_t *again) {
if
(
ok
==
-
2
)
{
ok
=
-
1
;
httpError
(
"context:%p, fd:%d, failed to parse, invalid state"
,
pContext
,
pContext
->
fd
);
httpOnError
(
parser
,
500
,
TSDB_CODE_HTTP_PARSE_ERROR_STATE
);
httpOnError
(
parser
,
HTTP_CODE_INTERNAL_SERVER_ERROR
,
TSDB_CODE_HTTP_PARSE_ERROR_STATE
);
}
return
ok
;
...
...
src/plugins/http/src/httpResp.c
浏览文件 @
338c2e55
...
...
@@ -67,81 +67,81 @@ static void httpSendErrorRespImp(HttpContext *pContext, int32_t httpCode, char *
}
void
httpSendErrorResp
(
HttpContext
*
pContext
,
int32_t
errNo
)
{
int32_t
httpCode
=
500
;
int32_t
httpCode
=
HTTP_CODE_INTERNAL_SERVER_ERROR
;
if
(
errNo
==
TSDB_CODE_SUCCESS
)
httpCode
=
200
;
httpCode
=
HTTP_CODE_OK
;
else
if
(
errNo
==
TSDB_CODE_HTTP_SERVER_OFFLINE
)
httpCode
=
404
;
httpCode
=
HTTP_CODE_NOT_FOUND
;
else
if
(
errNo
==
TSDB_CODE_HTTP_UNSUPPORT_URL
)
httpCode
=
404
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_INVALID_URL
)
httpCode
=
404
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_NO_ENOUGH_MEMORY
)
httpCode
=
507
;
httpCode
=
HTTP_CODE_INSUFFICIENT_STORAGE
;
else
if
(
errNo
==
TSDB_CODE_HTTP_REQUSET_TOO_BIG
)
httpCode
=
413
;
httpCode
=
HTTP_CODE_PAYLOAD_TOO_LARGE
;
else
if
(
errNo
==
TSDB_CODE_HTTP_NO_AUTH_INFO
)
httpCode
=
401
;
httpCode
=
HTTP_CODE_UNAUTHORIZED
;
else
if
(
errNo
==
TSDB_CODE_HTTP_NO_MSG_INPUT
)
httpCode
=
400
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_NO_SQL_INPUT
)
httpCode
=
400
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_NO_EXEC_USEDB
)
httpCode
=
400
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_SESSION_FULL
)
httpCode
=
421
;
httpCode
=
HTTP_CODE_INTERNAL_SERVER_ERROR
;
else
if
(
errNo
==
TSDB_CODE_HTTP_GEN_TAOSD_TOKEN_ERR
)
httpCode
=
507
;
httpCode
=
HTTP_CODE_INTERNAL_SERVER_ERROR
;
else
if
(
errNo
==
TSDB_CODE_HTTP_INVALID_MULTI_REQUEST
)
httpCode
=
400
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_CREATE_GZIP_FAILED
)
httpCode
=
507
;
httpCode
=
HTTP_CODE_INTERNAL_SERVER_ERROR
;
else
if
(
errNo
==
TSDB_CODE_HTTP_FINISH_GZIP_FAILED
)
httpCode
=
507
;
httpCode
=
HTTP_CODE_INTERNAL_SERVER_ERROR
;
else
if
(
errNo
==
TSDB_CODE_HTTP_INVALID_VERSION
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_HTTP_VER_NOT_SUPPORTED
;
else
if
(
errNo
==
TSDB_CODE_HTTP_INVALID_CONTENT_LENGTH
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_LENGTH_REQUIRED
;
else
if
(
errNo
==
TSDB_CODE_HTTP_INVALID_AUTH_TYPE
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_UNAUTHORIZED
;
else
if
(
errNo
==
TSDB_CODE_HTTP_INVALID_AUTH_FORMAT
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_UNAUTHORIZED
;
else
if
(
errNo
==
TSDB_CODE_HTTP_INVALID_BASIC_AUTH
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_UNAUTHORIZED
;
else
if
(
errNo
==
TSDB_CODE_HTTP_INVALID_TAOSD_AUTH
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_UNAUTHORIZED
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_METHOD_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_TARGET_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_VERSION_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_SP_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_STATUS_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_PHRASE_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_CRLF_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_HEADER_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_HEADER_KEY_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_HEADER_VAL_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_CHUNK_SIZE_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_CHUNK_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_END_FAILED
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_INVALID_STATE
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
if
(
errNo
==
TSDB_CODE_HTTP_PARSE_ERROR_STATE
)
httpCode
=
406
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
else
httpCode
=
400
;
httpCode
=
HTTP_CODE_BAD_REQUEST
;
if
(
pContext
->
parser
&&
pContext
->
parser
->
httpCode
!=
0
)
{
httpCode
=
pContext
->
parser
->
httpCode
;
...
...
@@ -152,7 +152,7 @@ void httpSendErrorResp(HttpContext *pContext, int32_t errNo) {
}
void
httpSendTaosdInvalidSqlErrorResp
(
HttpContext
*
pContext
,
char
*
errMsg
)
{
int32_t
httpCode
=
400
;
int32_t
httpCode
=
HTTP_CODE_BAD_REQUEST
;
char
temp
[
512
]
=
{
0
};
int32_t
len
=
sprintf
(
temp
,
"invalid SQL: %s"
,
errMsg
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录