1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-06 12:03:50 +08:00

fix(server): always send response.

This commit is contained in:
wdvxdr 2021-07-25 13:28:25 +08:00
parent 19b2a86c7c
commit 89eaf91371
No known key found for this signature in database
GPG Key ID: 703F8C071DE7A1B6

View File

@ -1,7 +1,6 @@
package server
import (
"bytes"
"fmt"
"io"
"net/http"
@ -36,7 +35,6 @@ type lambdaResponse struct {
type lambdaResponseWriter struct {
statusCode int
header http.Header
buf *bytes.Buffer
}
func (l *lambdaResponseWriter) Header() http.Header {
@ -47,7 +45,7 @@ func (l *lambdaResponseWriter) Write(data []byte) (int, error) {
buffer := global.NewBuffer()
defer global.PutBuffer(buffer)
body := ""
if l.buf != nil {
if data != nil {
body = utils.B2S(data)
}
header := make(map[string]string)
@ -116,18 +114,18 @@ func RunLambdaClient(bot *coolq.CQBot, conf *config.LambdaServer) {
for {
req := cli.next()
if req == nil {
writer := lambdaResponseWriter{statusCode: 200}
writer.Write(nil)
continue
}
func() {
defer func() {
if e := recover(); e != nil {
log.Warnf("Lambda 出现不可恢复错误: %v\n%s", e, debug.Stack())
}
}()
buffer := global.NewBuffer()
defer global.PutBuffer(buffer)
server.ServeHTTP(&lambdaResponseWriter{
header: make(http.Header),
buf: buffer,
}, req)
server.ServeHTTP(&lambdaResponseWriter{header: make(http.Header)}, req)
}()
}
}
@ -159,6 +157,9 @@ func (c *lambdaClient) next() *http.Request {
var req = new(http.Request)
var invoke = new(lambdaInvoke)
_ = json.NewDecoder(resp.Body).Decode(invoke)
if invoke.HTTPMethod == "" { // 不是 api 网关
return nil
}
req.Method = invoke.HTTPMethod
req.Body = io.NopCloser(strings.NewReader(invoke.Body))