|
"We will also be monitoring [...] MariaDB’s Jira for any pesky bugs or feature enhancement feedback!", not so much.
This form of fix seems to work
diff --git a/gcomm/src/datagram.cpp b/gcomm/src/datagram.cpp
|
index 36d890b0..af930913 100644
|
--- a/gcomm/src/datagram.cpp
|
+++ b/gcomm/src/datagram.cpp
|
@@ -113,7 +113,10 @@ gcomm::crc32(gcomm::NetHeader::checksum_t const type,
|
offset -= dg.header_len();
|
}
|
|
- crc.append (&(*dg.payload_)[0] + offset, dg.payload_->size() - offset);
|
+ if (dg.payload_->size() - offset > 0)
|
+ {
|
+ crc.append (&(*dg.payload_)[0] + offset, dg.payload_->size() - offset);
|
+ }
|
|
return crc();
|
}
|
Appears to be a common paradime however.
CXXFLAGS="-Wp,-D_GLIBCXX_ASSERTIONS" scons-v3.0.1-2.7 debug=0 -j10
|
|
(gdb) bt full
|
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
|
set = {__val = {0, 0, 0, 0, 0, 0, 0, 0, 140721777450112, 5316643, 36991968, 140721777450176, 140721777450224, 5348233, 140721777450160, 37376400}}
|
pid = <optimized out>
|
tid = <optimized out>
|
ret = <optimized out>
|
#1 0x00007fc53d072895 in __GI_abort () at abort.c:79
|
save_stage = 1
|
act = {__sigaction_handler = {sa_handler = 0x3b6, sa_sigaction = 0x3b6}, sa_mask = {__val = {5859136, 5857744, 11805916207174113035, 140721777450672, 49638139, 201779653756906,
|
406363709, 0, 140485114235904, 140721777450544, 49638139, 5294902, 0, 36991760, 5621690, 37001136}}, sa_flags = 1468964496, sa_restorer = 0x0}
|
sigs = {__val = {32, 0 <repeats 15 times>}}
|
#2 0x000000000040f112 in std::__replacement_assert (__file=0x596200 "/usr/include/c++/8/bits/stl_vector.h", __line=950,
|
__function=0x596740 <std::vector<unsigned char, std::allocator<unsigned char> >::operator[](unsigned long) const::__PRETTY_FUNCTION__> "std::vector<_Tp, _Alloc>::const_reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) const [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>; std::vector"...,
|
__condition=0x5961d0 "__builtin_expect(__n < this->size(), true)") at /usr/include/c++/8/x86_64-redhat-linux/bits/c++config.h:2391
|
No locals.
|
#3 0x0000000000426837 in std::vector<unsigned char, std::allocator<unsigned char> >::operator[] (this=0x23a4bb0, __n=0) at /usr/include/c++/8/bits/stl_vector.h:950
|
__PRETTY_FUNCTION__ = "std::vector<_Tp, _Alloc>::const_reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) const [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>; std::vector"...
|
#4 0x000000000055ca4f in gcomm::AsioPostForSendHandler::operator() (this=0x7ffc578ea070) at gcomm/src/asio_tcp.cpp:365
|
dg = @0x23a4ee0: {static header_size_ = 128,
|
header_ = '\000' <repeats 48 times>, "H\000\000\002\r\243Dq\000\b\000\000/[;\365_\354\021鲬\217Z\350t&\003\005\000\001\000\030\000\000\000\000\000\000\000/[;\365_\354\021鲬\217Z\350t&\003\001\000\000\000\377\000\000\000\023\000\000\000\000\000\000\000\023\000\000\000\000\000\000", header_offset_ = 48, payload_ = {px = 0x23a4bb0, pn = {pi_ = 0x23a52f0}}, offset_ = 0}
|
cbs = {_M_elems = {{data_ = 0x23a4f10, size_ = 80}, {data_ = 0x0, size_ = 0}}}
|
crit = {monitor_ = @0x2347310}
|
#5 0x000000000056a916 in asio::asio_handler_invoke<gcomm::AsioPostForSendHandler> (function=...) at asio/asio/handler_invoke_hook.hpp:68
|
No locals.
|
#6 0x0000000000568189 in asio_handler_invoke_helpers::invoke<gcomm::AsioPostForSendHandler, gcomm::AsioPostForSendHandler> (function=..., context=...)
|
at asio/asio/detail/handler_invoke_helpers.hpp:37
|
No locals.
|
#7 0x0000000000566806 in asio::detail::completion_handler<gcomm::AsioPostForSendHandler>::do_complete (owner=0x23474a0, base=0x239bc10) at asio/asio/detail/completion_handler.hpp:67
|
b = {<asio::detail::noncopyable> = {<No data fields>}, <No data fields>}
|
h = 0x239bc10
|
p = {h = 0x7ffc578ea070, v = 0x0, p = 0x0}
|
handler = {socket_ = {px = 0x2349670, pn = {pi_ = 0x2357ed0}}}
|
#8 0x000000000050e6ae in asio::detail::task_io_service_operation::complete (this=0x239bc10, owner=..., ec=..., bytes_transferred=0) at asio/asio/detail/task_io_service_operation.hpp:37
|
No locals.
|
#9 0x00000000005104ce in asio::detail::task_io_service::do_run_one (this=0x23474a0, lock=..., this_thread=..., ec=...) at asio/asio/detail/impl/task_io_service.ipp:371
|
task_result = 0
|
on_exit = {task_io_service_ = 0x23474a0, lock_ = 0x7ffc578ea190, this_thread_ = 0x7ffc578ea1c0}
|
o = 0x239bc10
|
more_handlers = true
|
#10 0x000000000050ffc2 in asio::detail::task_io_service::run (this=0x23474a0, ec=...) at asio/asio/detail/impl/task_io_service.ipp:148
|
this_thread = {<asio::detail::thread_info_base> = {<asio::detail::noncopyable> = {<No data fields>}, reusable_memory_ = 0x239bc10},
|
private_op_queue = {<asio::detail::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}, private_outstanding_work = 0}
|
ctx = {<asio::detail::noncopyable> = {<No data fields>}, key_ = 0x23474a0, value_ = 0x7ffc578ea1c0, next_ = 0x0}
|
--Type <RET> for more, q to quit, c to continue without paging--
|
lock = {<asio::detail::noncopyable> = {<No data fields>}, mutex_ = @0x23474d0, locked_ = false}
|
n = 22
|
#11 0x000000000051076b in asio::io_service::run (this=0x23473c8) at asio/asio/impl/io_service.ipp:58
|
ec = {_M_value = 0, _M_cat = 0x7fc53d548c00 <(anonymous namespace)::system_category_instance>}
|
s = 36991960
|
#12 0x000000000050ca72 in gcomm::AsioProtonet::event_loop (this=0x2347310, period=...) at gcomm/src/asio_protonet.cpp:116
|
p = {static period_regex = 0x5b7278 "^(P)(([0-9]+)Y)?(([0-9]+)M)?(([0-9]+)D)?((T)?(([0-9]+)H)?(([0-9]+)M)?(([0-9]+)(\\.([0-9]+))?S)?)?", static regex = {regex = {buffer = 0x232b5b0,
|
allocated = 224, used = 224, syntax = 242428, fastmap = 0x23240c0 "", translate = 0x0, re_nsub = 17, can_be_null = 0, regs_allocated = 0, fastmap_accurate = 1, no_sub = 0,
|
not_bol = 0, not_eol = 0, newline_anchor = 0}}, nsecs = 43275222}
|
#13 0x000000000054b868 in gcomm::PC::connect (this=0x2373640, start_prim=false) at gcomm/src/pc.cpp:123
|
wait_prim = true
|
wait_prim_timeout = {static period_regex = 0x5b7278 "^(P)(([0-9]+)Y)?(([0-9]+)M)?(([0-9]+)D)?((T)?(([0-9]+)H)?(([0-9]+)M)?(([0-9]+)(\\.([0-9]+))?S)?)?", static regex = {regex = {
|
buffer = 0x232b5b0, allocated = 224, used = 224, syntax = 242428, fastmap = 0x23240c0 "", translate = 0x0, re_nsub = 17, can_be_null = 0, regs_allocated = 0,
|
fastmap_accurate = 1, no_sub = 0, not_bol = 0, not_eol = 0, newline_anchor = 0}}, nsecs = 30000000000}
|
__FUNCTION__ = "connect"
|
try_until = {utc = 201782560103912}
|
#14 0x0000000000508c72 in gcomm::Transport::connect (this=0x2373640) at gcomm/src/gcomm/transport.hpp:52
|
No locals.
|
#15 0x0000000000497ded in PCUser2::start (this=0x7ffc578ead10) at gcomm/test/check_pc.cpp:1422
|
No locals.
|
#16 0x0000000000467ddf in test_pc_transport (_i=0) at gcomm/test/check_pc.cpp:1530
|
conf = {static PARAM_SEP = 59 ';', static KEY_VALUE_SEP = 61 '=', static ESCAPE = 92 '\\', params_ = std::map with 58 elements = {["base_host"] = {value_ = "", set_ = false},
|
["base_port"] = {value_ = "0", set_ = true}, ["evs.auto_evict"] = {value_ = "0", set_ = true}, ["evs.causal_keepalive_period"] = {value_ = "PT1S", set_ = true},
|
["evs.debug_log_mask"] = {value_ = "0x1", set_ = true}, ["evs.delay_margin"] = {value_ = "PT1S", set_ = true}, ["evs.delayed_keep_period"] = {value_ = "PT30S", set_ = true},
|
["evs.evict"] = {value_ = "", set_ = false}, ["evs.inactive_check_period"] = {value_ = "PT0.5S", set_ = true}, ["evs.inactive_timeout"] = {value_ = "PT15S", set_ = true},
|
["evs.info_log_mask"] = {value_ = "0xff", set_ = true}, ["evs.install_timeout"] = {value_ = "PT7.5S", set_ = true}, ["evs.join_retrans_period"] = {value_ = "PT1S", set_ = true},
|
["evs.keepalive_period"] = {value_ = "PT1S", set_ = true}, ["evs.max_install_timeouts"] = {value_ = "3", set_ = true}, ["evs.send_window"] = {value_ = "4", set_ = true},
|
["evs.stats_report_period"] = {value_ = "PT1M", set_ = true}, ["evs.suspect_timeout"] = {value_ = "PT5S", set_ = true}, ["evs.use_aggregate"] = {value_ = "true", set_ = true},
|
["evs.user_send_window"] = {value_ = "2", set_ = true}, ["evs.version"] = {value_ = "1", set_ = true}, ["evs.view_forget_timeout"] = {value_ = "P1D", set_ = true},
|
["gmcast.group"] = {value_ = "", set_ = false}, ["gmcast.isolate"] = {value_ = "", set_ = false}, ["gmcast.listen_addr"] = {value_ = "tcp://127.0.0.1:0", set_ = true},
|
["gmcast.mcast_addr"] = {value_ = "", set_ = true}, ["gmcast.mcast_port"] = {value_ = "", set_ = false}, ["gmcast.mcast_ttl"] = {value_ = "1", set_ = true}, ["gmcast.mira"] = {
|
value_ = "", set_ = false}, ["gmcast.peer_addr"] = {value_ = "", set_ = false}, ["gmcast.peer_timeout"] = {value_ = "PT3S", set_ = true}, ["gmcast.segment"] = {value_ = "0",
|
set_ = true}, ["gmcast.time_wait"] = {value_ = "PT0.5S", set_ = true}, ["gmcast.version"] = {value_ = "0", set_ = true}, ["pc.announce_timeout"] = {value_ = "PT3S",
|
set_ = true}, ["pc.bootstrap"] = {value_ = "", set_ = false}, ["pc.checksum"] = {value_ = "false", set_ = true}, ["pc.ignore_quorum"] = {value_ = "false", set_ = true},
|
["pc.ignore_sb"] = {value_ = "false", set_ = true}, ["pc.linger"] = {value_ = "PT20S", set_ = true}, ["pc.npvo"] = {value_ = "false", set_ = true}, ["pc.recovery"] = {
|
value_ = "false", set_ = true}, ["pc.version"] = {value_ = "0", set_ = true}, ["pc.wait_prim"] = {value_ = "true", set_ = true}, ["pc.wait_prim_timeout"] = {value_ = "PT30S",
|
set_ = true}, ["pc.weight"] = {value_ = "1", set_ = true}, ["protonet.backend"] = {value_ = "asio", set_ = true}, ["protonet.version"] = {value_ = "0", set_ = true},
|
["socket.checksum"] = {value_ = "2", set_ = true}, ["socket.non_blocking"] = {value_ = "", set_ = false}, ["socket.recv_buf_size"] = {value_ = "212992", set_ = true},
|
["socket.ssl"] = {value_ = "", set_ = false}, ["socket.ssl_ca"] = {value_ = "", set_ = false}, ["socket.ssl_cert"] = {value_ = "", set_ = false}, ["socket.ssl_cipher"] = {
|
value_ = "", set_ = false}, ["socket.ssl_compression"] = {value_ = "", set_ = false}, ["socket.ssl_key"] = {value_ = "", set_ = false}, ["socket.ssl_password_file"] = {
|
value_ = "", set_ = false}}}
|
net = {_M_ptr = 0x2347310}
|
pu2 = {<gcomm::Toplay> = {<gcomm::Conf::Check> = {_vptr.Check = 0x63f530 <vtable for PCUser2+16>}, <gcomm::Protolay> = {_vptr.Protolay = 0x63f568 <vtable for PCUser2+72>,
|
conf_ = @0x7ffc578eac40, up_context_ = empty std::__cxx11::list, down_context_ = std::__cxx11::list = {[0] = 0x2373640},
|
evict_list_ = {<gcomm::MapBase<gcomm::UUID, gu::datetime::Date, std::map<gcomm::UUID, gu::datetime::Date, std::less<gcomm::UUID>, std::allocator<std::pair<gcomm::UUID const, gu:--Type <RET> for more, q to quit, c to continue without paging--
|
:datetime::Date> > > >> = {
|
_vptr.MapBase = 0x63e7c0 <vtable for gcomm::Map<gcomm::UUID, gu::datetime::Date, std::map<gcomm::UUID, gu::datetime::Date, std::less<gcomm::UUID>, std::allocator<std::pair<gcomm::UUID const, gu::datetime::Date> > > >+16>, map_ = std::map with 0 elements}, <No data fields>}}, <No data fields>}, tp_ = 0x2373640, sending_ = false, my_type_ = 3 '\003',
|
send_ = true, send_period_ = {static period_regex = 0x5b7278 "^(P)(([0-9]+)Y)?(([0-9]+)M)?(([0-9]+)D)?((T)?(([0-9]+)H)?(([0-9]+)M)?(([0-9]+)(\\.([0-9]+))?S)?)?", static regex = {
|
regex = {buffer = 0x232b5b0, allocated = 224, used = 224, syntax = 242428, fastmap = 0x23240c0 "", translate = 0x0, re_nsub = 17, can_be_null = 0, regs_allocated = 0,
|
fastmap_accurate = 1, no_sub = 0, not_bol = 0, not_eol = 0, newline_anchor = 0}}, nsecs = 50000000}, next_send_ = {utc = 9223372036854775807}}
|
pu1 = {<gcomm::Toplay> = {<gcomm::Conf::Check> = {_vptr.Check = 0x63f530 <vtable for PCUser2+16>}, <gcomm::Protolay> = {_vptr.Protolay = 0x63f568 <vtable for PCUser2+72>,
|
conf_ = @0x7ffc578eac40, up_context_ = empty std::__cxx11::list, down_context_ = std::__cxx11::list = {[0] = 0x23563e0},
|
evict_list_ = {<gcomm::MapBase<gcomm::UUID, gu::datetime::Date, std::map<gcomm::UUID, gu::datetime::Date, std::less<gcomm::UUID>, std::allocator<std::pair<gcomm::UUID const, gu::datetime::Date> > > >> = {
|
_vptr.MapBase = 0x63e7c0 <vtable for gcomm::Map<gcomm::UUID, gu::datetime::Date, std::map<gcomm::UUID, gu::datetime::Date, std::less<gcomm::UUID>, std::allocator<std::pair<gcomm::UUID const, gu::datetime::Date> > > >+16>, map_ = std::map with 0 elements}, <No data fields>}}, <No data fields>}, tp_ = 0x23563e0, sending_ = true, my_type_ = 4 '\004',
|
send_ = true, send_period_ = {static period_regex = 0x5b7278 "^(P)(([0-9]+)Y)?(([0-9]+)M)?(([0-9]+)D)?((T)?(([0-9]+)H)?(([0-9]+)M)?(([0-9]+)(\\.([0-9]+))?S)?)?", static regex = {
|
regex = {buffer = 0x232b5b0, allocated = 224, used = 224, syntax = 242428, fastmap = 0x23240c0 "", translate = 0x0, re_nsub = 17, can_be_null = 0, regs_allocated = 0,
|
fastmap_accurate = 1, no_sub = 0, not_bol = 0, not_eol = 0, newline_anchor = 0}}, nsecs = 50000000}, next_send_ = {utc = 201779703395933}}
|
pu3 = {<gcomm::Toplay> = {<gcomm::Conf::Check> = {_vptr.Check = 0x63f530 <vtable for PCUser2+16>}, <gcomm::Protolay> = {_vptr.Protolay = 0x63f568 <vtable for PCUser2+72>,
|
conf_ = @0x7ffc578eac40, up_context_ = empty std::__cxx11::list, down_context_ = empty std::__cxx11::list,
|
evict_list_ = {<gcomm::MapBase<gcomm::UUID, gu::datetime::Date, std::map<gcomm::UUID, gu::datetime::Date, std::less<gcomm::UUID>, std::allocator<std::pair<gcomm::UUID const, gu::datetime::Date> > > >> = {
|
_vptr.MapBase = 0x63e7c0 <vtable for gcomm::Map<gcomm::UUID, gu::datetime::Date, std::map<gcomm::UUID, gu::datetime::Date, std::less<gcomm::UUID>, std::allocator<std::pair<gcomm::UUID const, gu::datetime::Date> > > >+16>, map_ = std::map with 0 elements}, <No data fields>}}, <No data fields>}, tp_ = 0x237f910, sending_ = false, my_type_ = 3 '\003',
|
send_ = true, send_period_ = {static period_regex = 0x5b7278 "^(P)(([0-9]+)Y)?(([0-9]+)M)?(([0-9]+)D)?((T)?(([0-9]+)H)?(([0-9]+)M)?(([0-9]+)(\\.([0-9]+))?S)?)?", static regex = {
|
regex = {buffer = 0x232b5b0, allocated = 224, used = 224, syntax = 242428, fastmap = 0x23240c0 "", translate = 0x0, re_nsub = 17, can_be_null = 0, regs_allocated = 0,
|
fastmap_accurate = 1, no_sub = 0, not_bol = 0, not_eol = 0, newline_anchor = 0}}, nsecs = 50000000}, next_send_ = {utc = 9223372036854775807}}
|
__FUNCTION__ = "test_pc_transport"
|
#17 0x00007fc53d55a2c6 in tcase_run_tfun_fork (i=0, tfun=0x233f5a0, tc=0x233f3d0, sr=0x23327a0) at check_run.c:494
|
pid_w = <optimized out>
|
pid = <optimized out>
|
status = 0
|
ts_start = {tv_sec = 201774, tv_nsec = 551507286}
|
tr = <optimized out>
|
ts_end = {tv_sec = 0, tv_nsec = 0}
|
timerid = 0x23435e0
|
timer_spec = {it_interval = {tv_sec = 0, tv_nsec = 0}, it_value = {tv_sec = 25, tv_nsec = 0}}
|
pid_w = <optimized out>
|
pid = <optimized out>
|
status = <optimized out>
|
ts_start = <optimized out>
|
ts_end = <optimized out>
|
timerid = <optimized out>
|
timer_spec = <optimized out>
|
tr = <optimized out>
|
#18 srunner_iterate_tcase_tfuns (tc=0x233f3d0, sr=0x23327a0) at check_run.c:252
|
i = 0
|
tfl = <optimized out>
|
--Type <RET> for more, q to quit, c to continue without paging--
|
tfun = 0x233f5a0
|
tr = <optimized out>
|
tfl = <optimized out>
|
tfun = <optimized out>
|
tr = <optimized out>
|
i = <optimized out>
|
#19 srunner_run_tcase (tc=0x233f3d0, sr=0x23327a0) at check_run.c:401
|
No locals.
|
#20 srunner_iterate_suites (print_mode=<optimized out>, exclude_tags=0x0, include_tags=0x0, tcname=0x0, sname=0x0, sr=0x23327a0) at check_run.c:218
|
s = 0x233d900
|
include_tag_lst = 0x23421a0
|
exclude_tag_lst = 0x23421e0
|
slst = 0x232c8d0
|
tcl = 0x233d920
|
tc = 0x233f3d0
|
include_tag_lst = <optimized out>
|
exclude_tag_lst = <optimized out>
|
slst = <optimized out>
|
tcl = <optimized out>
|
tc = <optimized out>
|
s = <optimized out>
|
#21 srunner_run_tagged (sr=0x23327a0, sname=0x0, tcname=0x0, include_tags=0x0, exclude_tags=0x0, print_mode=<optimized out>) at check_run.c:811
|
sigalarm_old_action = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {0, 0, 0, 513, 0, 7, 528, 2, 9223372036854775822, 0, 140485109261272, 0, 0,
|
2, 4239664, 140721777457760}}, sa_flags = 0, sa_restorer = 0x0}
|
sigalarm_new_action = {__sigaction_handler = {sa_handler = 0x7fc53d559970 <sig_handler>, sa_sigaction = 0x7fc53d559970 <sig_handler>}, sa_mask = {__val = {0 <repeats 16 times>}},
|
sa_flags = 0, sa_restorer = 0x0}
|
sigint_new_action = {__sigaction_handler = {sa_handler = 0x7fc53d559970 <sig_handler>, sa_sigaction = 0x7fc53d559970 <sig_handler>}, sa_mask = {__val = {0 <repeats 16 times>}},
|
sa_flags = 0, sa_restorer = 0x0}
|
sigterm_new_action = {__sigaction_handler = {sa_handler = 0x7fc53d559970 <sig_handler>, sa_sigaction = 0x7fc53d559970 <sig_handler>}, sa_mask = {__val = {0 <repeats 16 times>}},
|
sa_flags = 0, sa_restorer = 0x0}
|
#22 0x000000000040b56f in main (argc=1, argv=0x7ffc578eba68) at gcomm/test/check_gcomm.cpp:91
|
sr = 0x23327a0
|
suits = 0x0
|
log_file = 0x23215e0
|
__FUNCTION__ = "main"
|
n_fail = 0
|
(gdb)
|
(gdb) up
|
#1 0x00007fc53d072895 in __GI_abort () at abort.c:79
|
79 raise (SIGABRT);
|
(gdb) up
|
#2 0x000000000040f112 in std::__replacement_assert (__file=0x596200 "/usr/include/c++/8/bits/stl_vector.h", __line=950,
|
__function=0x596740 <std::vector<unsigned char, std::allocator<unsigned char> >::operator[](unsigned long) const::__PRETTY_FUNCTION__> "std::vector<_Tp, _Alloc>::const_reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) const [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>; std::vector"...,
|
__condition=0x5961d0 "__builtin_expect(__n < this->size(), true)") at /usr/include/c++/8/x86_64-redhat-linux/bits/c++config.h:2391
|
2391 __builtin_abort();
|
(gdb) up
|
#3 0x0000000000426837 in std::vector<unsigned char, std::allocator<unsigned char> >::operator[] (this=0x23a4bb0, __n=0) at /usr/include/c++/8/bits/stl_vector.h:950
|
950 __glibcxx_requires_subscript(__n);
|
(gdb) up
|
#4 0x000000000055ca4f in gcomm::AsioPostForSendHandler::operator() (this=0x7ffc578ea070) at gcomm/src/asio_tcp.cpp:365
|
365 cbs[1] = asio::const_buffer(&dg.payload()[0],
|
(gdb) list
|
360 const gcomm::Datagram& dg(socket_->send_q_.front());
|
361 gu::array<asio::const_buffer, 2>::type cbs;
|
362 cbs[0] = asio::const_buffer(dg.header()
|
363 + dg.header_offset(),
|
364 dg.header_len());
|
365 cbs[1] = asio::const_buffer(&dg.payload()[0],
|
366 dg.payload().size());
|
367 socket_->write_one(cbs);
|
368 }
|
369 }
|
|