Skip to content

Commit 3f2f4f8

Browse files
authored
Merge pull request #4364 from esl/graphql_sse
Fixing GraphQL SSE crash with large stanza payloads
2 parents a82aa72 + 398fffd commit 3f2f4f8

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

Diff for: big_tests/tests/graphql_sse_SUITE.erl

+12-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ all() ->
2121
groups() ->
2222
[{admin, [parallel], admin_tests()},
2323
{user, [parallel], user_tests()},
24-
{timeout, [], [sse_should_not_get_timeout]}].
24+
{timeout, [parallel], [sse_should_not_get_timeout, sse_works_with_long_messages]}].
2525

2626
init_per_suite(Config) ->
2727
Config1 = escalus:init_per_suite(Config),
@@ -148,6 +148,17 @@ sse_should_not_get_timeout(Config) ->
148148
sse_helper:stop_sse(Stream)
149149
end).
150150

151+
sse_works_with_long_messages(Config) ->
152+
escalus:fresh_story(Config, [{alice, 1}, {bob, 1}], fun (Alice, Bob) ->
153+
From = escalus_client:full_jid(Bob),
154+
To = escalus_client:short_jid(Alice),
155+
{200, Stream} = graphql_helper:execute_user_command_sse(<<"stanza">>, <<"subscribeForMessages">>, Alice, #{}, Config),
156+
Message = binary:copy(<<"0">>, 2000),
157+
escalus:send(Bob, escalus_stanza:chat(From, To, Message)),
158+
sse_helper:wait_for_event(Stream),
159+
sse_helper:stop_sse(Stream)
160+
end).
161+
151162
%% Helpers
152163

153164
get_graphql_user_listener() ->

Diff for: src/graphql/mongoose_graphql_response.erl

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
-export([term_to_json/1, term_to_pretty_json/1]).
44

55
term_to_json(Term) ->
6-
jiffy:encode(fixup(Term)).
6+
iolist_to_binary(jiffy:encode(fixup(Term))).
77

88
term_to_pretty_json(Term) ->
9-
jiffy:encode(fixup(Term), [pretty]).
9+
iolist_to_binary(jiffy:encode(fixup(Term), [pretty])).
1010

1111
%% Ground types
1212
fixup(Term) when is_number(Term) -> Term;

0 commit comments

Comments
 (0)