stomp decode возвращает неправильный заголовок - PullRequest
0 голосов
/ 11 января 2020

Я реализую клиент STOMP, и у меня есть функция декодирования, которая принимает string и декодирует его в кадр. Это мой Decode:

Message* EncoderDecoder::Decode(std::string msg) {
    vector <string> allMessage;
    boost::split(allMessage, msg, boost::is_any_of("\n"));
    Command* c = Command::valueOf(allMessage[0]);
    map <string, string> headers;
    string body = "";
    vector<string> headerValue = {};
    int i = 1;
    while (allMessage[i] != "") {
        boost::split(headerValue, allMessage[i], boost::is_any_of(":"));
        string first = headerValue[0];
        string second = headerValue[1];
        headers.insert({first, second});
        i++;
    }
    i++;
    while (i < allMessage.size()) {
        body.append(allMessage[i]);
        i++;
    }
    Message* message = new Message(c, &headers, body);
    return message;
}

Когда я использую отладчик, при достижении возврата все идеально. Но затем перед возвратом значения он меняет значение заголовка на случайные байты и возвращает их.

Например, если msg равно

ERROR\nmessage:User already logged in\n\n

В конце я получаю заголовок

\340\021\000T\344\177\000\000eady logged in
...