@@ -3163,19 +3163,20 @@ transfer_frames(Transfer, Sections, unlimited) ->
3163
3163
[[Transfer , Sections ]];
3164
3164
transfer_frames (Transfer , Sections , MaxFrameSize ) ->
3165
3165
PerformativeSize = iolist_size (amqp10_framing :encode_bin (Transfer )),
3166
- encode_frames (Transfer , Sections , MaxFrameSize - PerformativeSize , []).
3166
+ MaxPayloadSize = MaxFrameSize - ? FRAME_HEADER_SIZE - PerformativeSize ,
3167
+ split_msg (Transfer , Sections , MaxPayloadSize , []).
3167
3168
3168
- encode_frames (_T , _Msg , MaxPayloadSize , _Transfers ) when MaxPayloadSize =< 0 ->
3169
+ split_msg (_T , _Msg , MaxPayloadSize , _Transfers ) when MaxPayloadSize =< 0 ->
3169
3170
protocol_error (? V_1_0_AMQP_ERROR_FRAME_SIZE_TOO_SMALL ,
3170
3171
" Frame size is too small by ~b bytes" ,
3171
3172
[- MaxPayloadSize ]);
3172
- encode_frames (T , Msg , MaxPayloadSize , Transfers ) ->
3173
+ split_msg (T , Msg , MaxPayloadSize , Transfers ) ->
3173
3174
case iolist_size (Msg ) > MaxPayloadSize of
3174
3175
true ->
3175
3176
MsgBin = iolist_to_binary (Msg ),
3176
3177
{Chunk , Rest } = split_binary (MsgBin , MaxPayloadSize ),
3177
3178
T1 = T # 'v1_0.transfer' {more = true },
3178
- encode_frames (T , Rest , MaxPayloadSize , [[T1 , Chunk ] | Transfers ]);
3179
+ split_msg (T , Rest , MaxPayloadSize , [[T1 , Chunk ] | Transfers ]);
3179
3180
false ->
3180
3181
lists :reverse ([[T , Msg ] | Transfers ])
3181
3182
end .
0 commit comments