Просмотр исходного кода

Fix: correct encoding for statusData field in SSH API requests

Rod Hynes 9 лет назад
Родитель
Сommit
41d073ef1d
2 измененных файлов с 7 добавлено и 4 удалено
  1. 3 2
      psiphon/server/api.go
  2. 4 2
      psiphon/serverApi.go

+ 3 - 2
psiphon/server/api.go

@@ -496,11 +496,12 @@ func getJSONObjectRequestParam(params requestJSONObject, name string) (requestJS
 	if params[name] == nil {
 		return nil, psiphon.ContextError(fmt.Errorf("missing param: %s", name))
 	}
-	value, ok := params[name].(requestJSONObject)
+	// TODO: can't use requestJSONObject type?
+	value, ok := params[name].(map[string]interface{})
 	if !ok {
 		return nil, psiphon.ContextError(fmt.Errorf("invalid param: %s", name))
 	}
-	return value, nil
+	return requestJSONObject(value), nil
 }
 
 func getJSONObjectArrayRequestParam(params requestJSONObject, name string) ([]requestJSONObject, error) {

+ 4 - 2
psiphon/serverApi.go

@@ -345,7 +345,8 @@ func (serverContext *ServerContext) DoStatusRequest(tunnel *Tunnel) error {
 
 	if serverContext.psiphonHttpsClient == nil {
 
-		params["statusData"] = json.RawMessage(statusPayload)
+		rawMessage := json.RawMessage(statusPayload)
+		params["statusData"] = &rawMessage
 
 		var request []byte
 		request, err = makeSSHAPIRequestPayload(params)
@@ -655,7 +656,8 @@ func (serverContext *ServerContext) DoClientVerificationRequest(
 
 	if serverContext.psiphonHttpsClient == nil {
 
-		params["verificationData"] = json.RawMessage(verificationPayload)
+		rawMessage := json.RawMessage(verificationPayload)
+		params["verificationData"] = &rawMessage
 
 		request, err := makeSSHAPIRequestPayload(params)
 		if err != nil {