Five minute timeout

This commit is contained in:
Neil Alexander 2020-09-07 10:17:33 +01:00
parent 1cb4e8a3af
commit cced1ce25a
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -19,6 +19,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"net/http" "net/http"
"time"
"github.com/matrix-org/dendrite/clientapi/jsonerror" "github.com/matrix-org/dendrite/clientapi/jsonerror"
eduserverAPI "github.com/matrix-org/dendrite/eduserver/api" eduserverAPI "github.com/matrix-org/dendrite/eduserver/api"
@ -369,7 +370,6 @@ func (t *txnReq) processEvent(e gomatrixserverlib.Event, isInboundTxn bool) erro
} }
if !stateResp.PrevEventsExist { if !stateResp.PrevEventsExist {
t.context = context.Background()
return t.processEventWithMissingState(e, stateResp.RoomVersion, isInboundTxn) return t.processEventWithMissingState(e, stateResp.RoomVersion, isInboundTxn)
} }
@ -401,6 +401,12 @@ func checkAllowedByState(e gomatrixserverlib.Event, stateEvents []gomatrixserver
} }
func (t *txnReq) processEventWithMissingState(e gomatrixserverlib.Event, roomVersion gomatrixserverlib.RoomVersion, isInboundTxn bool) error { func (t *txnReq) processEventWithMissingState(e gomatrixserverlib.Event, roomVersion gomatrixserverlib.RoomVersion, isInboundTxn bool) error {
// Do this with a fresh context, so that we keep working even if the
// original request times out. With any luck, by the time the remote
// side retries, we'll have fetched the missing state.
var cancel context.CancelFunc
t.context, cancel = context.WithTimeout(context.Background(), time.Minute*5)
defer cancel()
// We are missing the previous events for this events. // We are missing the previous events for this events.
// This means that there is a gap in our view of the history of the // This means that there is a gap in our view of the history of the
// room. There two ways that we can handle such a gap: // room. There two ways that we can handle such a gap: