Return pointers

This commit is contained in:
Mark Haines 2017-05-25 15:31:42 +01:00
parent 7e6a47663c
commit d4ff1cde68

View file

@ -167,8 +167,8 @@ func (r joinRoomReq) joinRoomUsingServers(
} }
} }
var response util.JSONResponse
for _, server := range servers { for _, server := range servers {
var response *util.JSONResponse
response, err = r.joinRoomUsingServer(roomID, server) response, err = r.joinRoomUsingServer(roomID, server)
if err != nil { if err != nil {
// There was a problem talking to one of the servers. // There was a problem talking to one of the servers.
@ -176,7 +176,7 @@ func (r joinRoomReq) joinRoomUsingServers(
// Try the next server. // Try the next server.
continue continue
} }
return response return *response
} }
// Every server we tried to join through resulted in an error. // Every server we tried to join through resulted in an error.
@ -199,11 +199,11 @@ func (r joinRoomReq) joinRoomUsingServers(
// If there was a failure communicating with the server or the response from the // If there was a failure communicating with the server or the response from the
// server was invalid this returns an error. // server was invalid this returns an error.
// Otherwise this returns a JSONResponse. // Otherwise this returns a JSONResponse.
func (r joinRoomReq) joinRoomUsingServer(roomID string, server gomatrixserverlib.ServerName) (util.JSONResponse, error) { func (r joinRoomReq) joinRoomUsingServer(roomID string, server gomatrixserverlib.ServerName) (*util.JSONResponse, error) {
respMakeJoin, err := r.federation.MakeJoin(server, roomID, r.userID) respMakeJoin, err := r.federation.MakeJoin(server, roomID, r.userID)
if err != nil { if err != nil {
// TODO: Check if the user was not allowed to join the room. // TODO: Check if the user was not allowed to join the room.
return util.JSONResponse{}, err return nil, err
} }
// Set all the fields to be what they should be, this should be a no-op // Set all the fields to be what they should be, this should be a no-op
@ -216,25 +216,27 @@ func (r joinRoomReq) joinRoomUsingServer(roomID string, server gomatrixserverlib
eventID, now, r.cfg.ServerName, r.cfg.KeyID, r.cfg.PrivateKey, eventID, now, r.cfg.ServerName, r.cfg.KeyID, r.cfg.PrivateKey,
) )
if err != nil { if err != nil {
return httputil.LogThenError(r.req, err), nil res := httputil.LogThenError(r.req, err)
return &res, nil
} }
respSendJoin, err := r.federation.SendJoin(server, event) respSendJoin, err := r.federation.SendJoin(server, event)
if err != nil { if err != nil {
return util.JSONResponse{}, err return nil, err
} }
if err = respSendJoin.Check(r.keyRing, event); err != nil { if err = respSendJoin.Check(r.keyRing, event); err != nil {
return util.JSONResponse{}, err return nil, err
} }
if err = r.producer.SendEventWithState( if err = r.producer.SendEventWithState(
gomatrixserverlib.RespState(respSendJoin), event, gomatrixserverlib.RespState(respSendJoin), event,
); err != nil { ); err != nil {
return httputil.LogThenError(r.req, err), nil res := httputil.LogThenError(r.req, err)
return &res, nil
} }
return util.JSONResponse{ return &util.JSONResponse{
Code: 200, Code: 200,
// TODO: Put the response struct somewhere common. // TODO: Put the response struct somewhere common.
JSON: struct { JSON: struct {