@@ -3163,19 +3163,20 @@ transfer_frames(Transfer, Sections, unlimited) ->
31633163 [[Transfer , Sections ]];
31643164transfer_frames (Transfer , Sections , MaxFrameSize ) ->
31653165 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 , []).
31673168
3168- encode_frames (_T , _Msg , MaxPayloadSize , _Transfers ) when MaxPayloadSize =< 0 ->
3169+ split_msg (_T , _Msg , MaxPayloadSize , _Transfers ) when MaxPayloadSize =< 0 ->
31693170 protocol_error (? V_1_0_AMQP_ERROR_FRAME_SIZE_TOO_SMALL ,
31703171 " Frame size is too small by ~b bytes" ,
31713172 [- MaxPayloadSize ]);
3172- encode_frames (T , Msg , MaxPayloadSize , Transfers ) ->
3173+ split_msg (T , Msg , MaxPayloadSize , Transfers ) ->
31733174 case iolist_size (Msg ) > MaxPayloadSize of
31743175 true ->
31753176 MsgBin = iolist_to_binary (Msg ),
31763177 {Chunk , Rest } = split_binary (MsgBin , MaxPayloadSize ),
31773178 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 ]);
31793180 false ->
31803181 lists :reverse ([[T , Msg ] | Transfers ])
31813182 end .
0 commit comments