visa [Tue, 20 Jun 2017 15:49:00 +0000 (15:49 +0000)]
Check the validity of the `qtd' pointer after each interrupt case
and bail out if the pointer has become invalid. This prevents
use-after-free memory accesses that corrupted the dwc2qtd pool.
This fix improves stability on the Raspberry Pi 3.
From Linux commit
dc8730846948e517169f630826cd2c97615f5ee8
OK kettenis@
gerhard [Tue, 20 Jun 2017 14:11:46 +0000 (14:11 +0000)]
Do not touch file pointers for which FILE_IS_USABLE() is false.
They're might not be fully constructed.
ok mpi@ deraadt@ bluhm@
stsp [Tue, 20 Jun 2017 13:52:40 +0000 (13:52 +0000)]
Remove the IWM_FLAG_HW_INITED flag from iwm(4). This flag was redundant.
The IFF_RUNNING flag in struct ifnet serves the same purpose.
ok mpi@ kettenis@ deraadt@
stsp [Tue, 20 Jun 2017 13:51:46 +0000 (13:51 +0000)]
Initialize the link state of a wireless interface to DOWN when the
interface is attached to the net80211 layer. Prevents confusion
in cases where drivers forget to initialize the link state.
ok mpi@ kettenis@
tom [Tue, 20 Jun 2017 12:39:20 +0000 (12:39 +0000)]
Fix a couple of comment typos in amd64 and i386 biosvar.h
bluhm [Tue, 20 Jun 2017 11:12:13 +0000 (11:12 +0000)]
Do not use the interface pointer after if_put(). Rename ipip_input_gif()
to ipip_input_if() and always pass the ifp. Only dump the packet
to bpf if we are called with a gif(4) interface.
OK mpi@
mpi [Tue, 20 Jun 2017 09:10:04 +0000 (09:10 +0000)]
Convert sodidle() to timeout_set_proc(9), it needs a process context
to grab the rwlock.
Problem reported by Rivo Nurges.
ok bluhm@
mpi [Tue, 20 Jun 2017 09:03:39 +0000 (09:03 +0000)]
Remove KERNEL_LOCK() asserts.
pf table code iterates on a radix tree and currently relies on the
NET_LOCK() to do the serialization.
Found the hardway by jasper@
bentley [Tue, 20 Jun 2017 07:32:56 +0000 (07:32 +0000)]
Better document the :s ex command and its variants.
ok jmc@
jsg [Tue, 20 Jun 2017 06:37:30 +0000 (06:37 +0000)]
sync
mlarkin [Tue, 20 Jun 2017 06:25:01 +0000 (06:25 +0000)]
remove some magic numbers in the flush-by-asid code and check if the CPU
supports that feature before we try to use it.
discussed with deraadt
mlarkin [Tue, 20 Jun 2017 05:34:41 +0000 (05:34 +0000)]
SVM: better cleanbits handling. Fixes an issue on Bulldozer CPUs causing
#TF exceptions during guest VM boot
ok brynet
jmatthew [Tue, 20 Jun 2017 04:37:17 +0000 (04:37 +0000)]
fix some nits
ok dlg@
mlarkin [Tue, 20 Jun 2017 01:59:12 +0000 (01:59 +0000)]
Revert a previous commit that increased the virtio queue size since it
appears to be causing some instability.
dlg [Mon, 19 Jun 2017 23:57:12 +0000 (23:57 +0000)]
dynamically scale the size of the per cpu cache lists.
if the lock around the global depot of extra cache lists is contented
a lot in between the gc task runs, consider growing the number of
entries a free list can hold.
the size of the list is bounded by the number of pool items the
current set of pages can represent to avoid having cpus starve each
other. im not sure this semantic is right (or the least worst) but
we're putting it in now to see what happens.
this also means reality matches the documentation i just committed
in pool_cache_init.9.
tested by hrvoje popovski and amit kulkarni
ok visa@
dlg [Mon, 19 Jun 2017 23:48:49 +0000 (23:48 +0000)]
s/a active/an active/
dlg [Mon, 19 Jun 2017 23:45:42 +0000 (23:45 +0000)]
s/pool_set_hardlimit/pool_sethardlimit/
from schwarze@
dlg [Mon, 19 Jun 2017 23:45:13 +0000 (23:45 +0000)]
s/can be from process context/can be called from process context/
from schwarze@
dlg [Mon, 19 Jun 2017 23:44:11 +0000 (23:44 +0000)]
talk about the per cpu caches in pools by documenting pool_cache_init()
this describes what the per cpu caches do, and has some bonus doco about
what the sysctls provide thanks to a suggestion from mikeb@
some tweaks are coming, but this is mostly right.
ok jmc@ schwarze@
deraadt [Mon, 19 Jun 2017 22:50:50 +0000 (22:50 +0000)]
As early as possible, create a link /bsd.booted to the /bsd kernel we
presume we booted from. If you boot from another kernel, we cannot help
you later with hibernate, sorry -- The kernel does not get a useable
filename from the bootblocks.
In the bootblocks, detect a live hibernate signature and boot from
/bsd.booted instead.
with yasuoka, lots of discussion with mlarkin, ok tom
friehm [Mon, 19 Jun 2017 19:55:57 +0000 (19:55 +0000)]
Import route priority support from ospfd to ospf6d.
Also remove the RTF_UP flag from hdr.rtm_flags in send_rtmsg() since
ospfd and bgpd don't set the flag.
OK bluhm@ claudio@
krw [Mon, 19 Jun 2017 19:28:35 +0000 (19:28 +0000)]
Various KNF nits.
jmc [Mon, 19 Jun 2017 18:36:13 +0000 (18:36 +0000)]
missing letter in previous;
bluhm [Mon, 19 Jun 2017 18:35:05 +0000 (18:35 +0000)]
Terminate pledge log(9) with newline. This fixes dmesg(8) output.
found by regress/sys/kern/pledge/generic; OK deraadt@
bluhm [Mon, 19 Jun 2017 17:58:49 +0000 (17:58 +0000)]
When dealing with mbuf pointers passed down as function parameters,
bugs could easily result in use-after-free or double free. Introduce
m_freemp() which automatically resets the pointer before freeing
it. So we have less dangling pointers in the kernel.
OK krw@ mpi@ claudio@
deraadt [Mon, 19 Jun 2017 17:35:04 +0000 (17:35 +0000)]
delete accidental blank line
bluhm [Mon, 19 Jun 2017 17:00:16 +0000 (17:00 +0000)]
The IP multicast forward functions return an errno, call the variable
error. Make the ip_mforward() return value consistent. Simplify
the caller logic in ipv6_input() like in IPv4.
OK mpi@
visa [Mon, 19 Jun 2017 14:47:27 +0000 (14:47 +0000)]
Fix the timecounter register on CN72xx/CN73xx.
visa [Mon, 19 Jun 2017 14:25:53 +0000 (14:25 +0000)]
Use octeon_model_family() for SoC identification as in the rest
of the code.
visa [Mon, 19 Jun 2017 13:54:55 +0000 (13:54 +0000)]
Use type register_t instead of __register_t. Drop unneeded __unused.
visa [Mon, 19 Jun 2017 13:45:22 +0000 (13:45 +0000)]
There is no RTC on the E1000 board.
visa [Mon, 19 Jun 2017 13:31:04 +0000 (13:31 +0000)]
Use a consistent naming for fdt attach arguments.
deraadt [Mon, 19 Jun 2017 13:00:54 +0000 (13:00 +0000)]
sync
schwarze [Mon, 19 Jun 2017 12:53:50 +0000 (12:53 +0000)]
Fix a regression in the previous revision:
When there is no link description, reuse the URI.
Reported by tj@ and bentley@.
fcambus [Mon, 19 Jun 2017 11:03:30 +0000 (11:03 +0000)]
Add a handler for the WSDISPLAYIO_GINFO ioctl in radeondrm, allowing
to retrieve basic information about a framebuffer display.
OK visa@, deraadt@
fcambus [Mon, 19 Jun 2017 11:00:18 +0000 (11:00 +0000)]
Add a handler for the WSDISPLAYIO_GINFO ioctl in inteldrm, allowing
to retrieve basic information about a framebuffer display.
OK visa@, tedu@
mpi [Mon, 19 Jun 2017 09:42:45 +0000 (09:42 +0000)]
Make rn_match() and rn_lookup() safe to be used in parrallel, when
different trees are manipulated:
- Stop writting to global variables
- Use a buffer on the stack
- Anotate read/only arrays as such
While here introduce a SALEN() macro and assert that the KERNEL_LOCK()
is held when a tree is modified.
ok bluhm@
mpi [Mon, 19 Jun 2017 09:36:27 +0000 (09:36 +0000)]
Do not call txeof nor rxeof in the watchdog routine.
They cannot be serialized with the interrupt routine and are
useless because the driver is reinitialized right after.
Pointed by and ok mikeb@
gilles [Mon, 19 Jun 2017 08:35:56 +0000 (08:35 +0000)]
fix descriptor leak in the smtp congestion mechanism
diff from Henri Kemppainen; ok gilles@ eric@
mpi [Mon, 19 Jun 2017 08:35:24 +0000 (08:35 +0000)]
g/c ASPICFLAG.
This used to be necessary a long time ago in the... gcc 2.95 days.
from miod@
bentley [Mon, 19 Jun 2017 06:05:33 +0000 (06:05 +0000)]
Mark up "am i" as Cm, not Ar.
While here, remove a leftover Tn macro.
ok jmc@
bentley [Mon, 19 Jun 2017 06:04:16 +0000 (06:04 +0000)]
No need for a conditional to choose between nroff and troff.
ok jmc@
dlg [Mon, 19 Jun 2017 03:06:26 +0000 (03:06 +0000)]
port the RBT code to userland by making it part of libc.
src/lib/libc/gen/tree.c is a copy of src/sys/kern/subr_tree.c, but with
annotations for symbol visibility. changes to one should be reflected
in the other.
the malloc debug code that uses RB code is ported to RBT.
because libc provides the RBT code, procmap doesn't have to reach into
the kernel and build subr_tree.c itself now.
mild enthusiasm from many
ok guenther@
krw [Mon, 19 Jun 2017 01:09:09 +0000 (01:09 +0000)]
Erroneous host names in various options should be ignored
and not cause the lease to be declined. Restore inadvertantly
changed behaviour. Tweak logic to also ignore invalid
host names in domain-search.
Reported by Christer Solskogen via misc@
krw [Sun, 18 Jun 2017 21:08:15 +0000 (21:08 +0000)]
Move the timeout information into struct interface_info with
the rest of the dhcp state. One less struct (dhcp_timeout) to
worry about, one less field (ifi) to keep track of.
anton [Sun, 18 Jun 2017 17:49:44 +0000 (17:49 +0000)]
Don't write input if ICANON is enabled. Also, write one byte at a time.
schwarze [Sun, 18 Jun 2017 17:35:40 +0000 (17:35 +0000)]
Implement appending to standard man(7) and mdoc(7) macros with .am.
With roff_getstrn(), provide finer control which definitions
can be used for what:
* All definitions can be used for .if d tests and .am appending.
* User-defined for \* expansion, .dei expansion, and macro calling.
* Predefined for \* expansion.
* Standard macros, original or renamed, for macro calling.
Several related improvements while here:
* Do not return string table entries that have explicitly been removed.
* Do not create a rentab entry when trying to rename a non-existent macro.
* Clear an existing rentab entry when the external interface
roff_setstr() is called with its name.
* Avoid trailing blanks in macro lines generated from renamed
and from aliased macros.
* Delete the duplicate __m*_reserved[] tables, just use roff_name[].
krw [Sun, 18 Jun 2017 17:01:46 +0000 (17:01 +0000)]
Convert last set_timeout() use to set_timeout_interval() and
then remove set_timeout() and rename set_timeout_interval() to
set_timeout().
krw [Sun, 18 Jun 2017 16:37:19 +0000 (16:37 +0000)]
Drop (int) casts of (time_t - time_t) calculations that
are assigned to an int variable.
krw [Sun, 18 Jun 2017 14:54:19 +0000 (14:54 +0000)]
Nuke stray and misleading comment.
visa [Sun, 18 Jun 2017 13:58:44 +0000 (13:58 +0000)]
Split octeon interrupt code into a glue layer and a CIU driver.
This makes possible to add drivers for other interrupt controllers
on the platform.
The glue layer has been derived from arm64/armv7.
bru [Sun, 18 Jun 2017 13:34:03 +0000 (13:34 +0000)]
pms/alps: configure compat mode
bru [Sun, 18 Jun 2017 13:21:48 +0000 (13:21 +0000)]
Remove remnants of old versions.
visa [Sun, 18 Jun 2017 12:48:13 +0000 (12:48 +0000)]
Move IPI control entry points into octeon_intr.c.
Needed by upcoming driver changes.
benno [Sun, 18 Jun 2017 12:03:47 +0000 (12:03 +0000)]
update log.c in ifstated to the same used in bgpd etc.
Done by Rob Pierce <rob AT 2keys DOT ca>, thanks
krw [Sun, 18 Jun 2017 11:26:14 +0000 (11:26 +0000)]
Make 'DEBUG' compile again.
krw [Sun, 18 Jun 2017 11:21:39 +0000 (11:21 +0000)]
Nuke unused pointer to non-existant struct.
visa [Sun, 18 Jun 2017 11:05:20 +0000 (11:05 +0000)]
Drop unnecessary call to octeon_setintrmask(). The function gets called
by the splx() handler.
schwarze [Sat, 17 Jun 2017 23:06:43 +0000 (23:06 +0000)]
style message about duplicate RCS ids; inspired by mdoclint
schwarze [Sat, 17 Jun 2017 22:46:24 +0000 (22:46 +0000)]
churn related to the new style message about RCS ids
schwarze [Sat, 17 Jun 2017 22:40:27 +0000 (22:40 +0000)]
style message about missing RCS ids; inspired by mdoclint
krw [Sat, 17 Jun 2017 20:23:17 +0000 (20:23 +0000)]
Shuffle dhcp[offer|ack|nak]() functions together for easy reference.
fcambus [Sat, 17 Jun 2017 19:27:54 +0000 (19:27 +0000)]
Since WSFONT_NAME_SIZE was switched from 16 to 32, account for the
change in wsfontload as well: tweak spacing and printf format string.
OK deraadt@, mpi@
fcambus [Sat, 17 Jun 2017 19:20:30 +0000 (19:20 +0000)]
The fonts we are looping through in vga_selectfont() are the builtin
font which is using the IBM encoding, and some potentially loaded fonts
which are either IBM or ISO encoded.
Therefore the condition checked by vga_valid_font() is always true, and
we can remove it. Thanks to miod@ for pointing this out.
OK tb@
schwarze [Sat, 17 Jun 2017 19:17:41 +0000 (19:17 +0000)]
delete the -d option and the "use .Fn or .Xr for functions" check,
both covered by mandoc now; OK jmc@
anton [Sat, 17 Jun 2017 18:14:47 +0000 (18:14 +0000)]
Move win variable.
ok deraadt@ tb@
krw [Sat, 17 Jun 2017 17:10:26 +0000 (17:10 +0000)]
Rename struct interface_info field 'new' to clearer 'offer'.
krw [Sat, 17 Jun 2017 16:58:55 +0000 (16:58 +0000)]
We accept either the first offer received, or an offer for the
current address if one arrives inside select_timeout. So there
is no need to keep a list of received offers. Just keep the
best one and DECLINE the rest. Nuke now unused 'offered_leases'
TAILQ.
Also fixes the oddity that the *last* offer for the current
address is taken rather than the *first*.
schwarze [Sat, 17 Jun 2017 16:47:29 +0000 (16:47 +0000)]
if .in is used inside the .TP head, it's always relative
krw [Sat, 17 Jun 2017 15:53:03 +0000 (15:53 +0000)]
DECLINE offers as they are deemed invalid. Decline them at the
first problem rather than continuing to look for other reasons
to decline them. Nuke is_invalid field since it is now unused.
More informative log message when a lease is determined to be
unacceptable.
schwarze [Sat, 17 Jun 2017 14:55:02 +0000 (14:55 +0000)]
tables leak tab settings to subsequent text
schwarze [Sat, 17 Jun 2017 13:05:47 +0000 (13:05 +0000)]
correct handling of blank lines after \c
anton [Sat, 17 Jun 2017 09:55:01 +0000 (09:55 +0000)]
Pass the command to execute as an argument. Allows the edit program to be
reused.
jmatthew [Sat, 17 Jun 2017 09:32:26 +0000 (09:32 +0000)]
add rdtsc() to match amd64
ok mikeb@ mlarkin@
visa [Sat, 17 Jun 2017 03:45:36 +0000 (03:45 +0000)]
Invalidate remote TLB entries by address range. This reduces
the number of IPIs required when removing mappings.
bcallah [Sat, 17 Jun 2017 01:55:16 +0000 (01:55 +0000)]
Don't need to link with -ll or -ly.
ok millert@ (who spotted and provided the -ll removal bits)
schwarze [Sat, 17 Jun 2017 01:26:48 +0000 (01:26 +0000)]
properly set the default indentation
such that even pages without any .SH macros get it
aoyama [Sat, 17 Jun 2017 00:28:18 +0000 (00:28 +0000)]
Fix comment. This gap is not only on LUNA-88K2 but also on LUNA-88K.
schwarze [Fri, 16 Jun 2017 20:00:41 +0000 (20:00 +0000)]
Multiple tbl(7) improvements:
* Do not discard data that lacks a matching layout cell but remains
within the number of columns of the table as a whole.
* Do not insert dummy data rows for any layout row starting with a
horizontal line, but only for layout rows that would discard all
the data on a matching non-empty data row.
* Print horizontal lines specified in the layout even if there is
no matching data cell.
* Improve the logic for extending vertical lines to adjacent rows,
for choosing cross marks versus line segments, and some related details.
awolk [Fri, 16 Jun 2017 19:59:13 +0000 (19:59 +0000)]
pfctl: merge identifical if conditions and void functions discarding ret values
Transform the following functions (which never return anything other than 0, and
whose return value is never used) to void:
* pfctl_clear_stats, pfctl_clear_interface_flags, pfctl_clear_rules,
pfctl_clear_src_nodes, pfctl_clear_states
* pfctl_kill_src_nodes, pfctl_net_kill_states, pfctl_label_kill_states,
pfctl_id_kill_states, pfctl_key_kill_states
inside main: merge two identical if conditions next to each other into one.
Submitted by rain1 (thanks!) with additional credit to:
- mikeb@ for pointing out we can void all _clear_ functions
- ghostyy for pointing out all _kill_ functions can be voided
OK tb@, mikeb@
nicm [Fri, 16 Jun 2017 15:12:38 +0000 (15:12 +0000)]
Tweak some logging.
kevlo [Fri, 16 Jun 2017 14:57:51 +0000 (14:57 +0000)]
- Fix incorrect values in the computation of transmit power for the
rtl8188eu chipset.
- Small code refactoring:
- replace hardcoded rate indexes with their name, like athn(4).
- replace fields offsets with the structure; from FreeBSD r294198.
- be compliant with definitions of the efuse in vendor hal_pg.h and
rename struct r92c_rom member names: s/channel_plan/reserved5/,
s/xtal_calib/channel_plan.
- no need to disable HWPDN twice in urtwn_r88e_power_on().
Tested by stsp@ and myself with RTL8188CUS, RTL8192CU, RTL8188EU, and
RTL8188CE devices.
ok stsp@
krw [Fri, 16 Jun 2017 14:12:12 +0000 (14:12 +0000)]
Nuke 'is_bootp' field and just use a #define to check if the lease
has DHO_DHCP_MESSAGE_TYPE info.
nicm [Fri, 16 Jun 2017 11:50:06 +0000 (11:50 +0000)]
Log terminal capabilities for each new terminal.
stsp [Fri, 16 Jun 2017 10:58:43 +0000 (10:58 +0000)]
In sppp(4), allow additional 'wildcard' addresses for the destination.
Any address within the range 0.0.0.1 - 0.0.0.255 can now be used.
This allows for multiple pppoe(4) interfaces with dynamic addresses within
the same routing table. Which used to work before OpenBSD 5.8, but since 5.8
only one interface in a routing table can use destination address 0.0.0.1.
Problem first reported by Steve (fiverings04 at australian yahoo) on misc@.
I ran into it on an EdgeRouter lite which is supposed to serve two ADSL lines.
ok sthen@ mpi@
man page help from jmc@ for an earlier variant of this change
espie [Fri, 16 Jun 2017 10:25:54 +0000 (10:25 +0000)]
mark files as BUILDFIRST, or write explicit dependencies, so that most
programs will build even without a make depend first.
okay tb@ millert@
espie [Fri, 16 Jun 2017 10:20:52 +0000 (10:20 +0000)]
introduce a BUILDFIRST/BUILDAFTER mechanism:
record every standard component built in bsd.lib.mk/bsd.prog.mk in BUILDAFTER
and have BUILDAFTER depend on BUILDFIRST, thus making possible to build
some stuff early without relying on "make depend"
okay tb@ millert@
stsp [Fri, 16 Jun 2017 08:45:34 +0000 (08:45 +0000)]
In iwm_init() save the generation counter once before looping over
tsleep(9), instead of saving it during every iteration.
natano [Fri, 16 Jun 2017 06:46:54 +0000 (06:46 +0000)]
s/CPU_LIDSUSPEND/CPU_LIDACTION/
ok mlarkin
jsg [Fri, 16 Jun 2017 05:19:15 +0000 (05:19 +0000)]
PCI Express extendeded capability 0x1c is LN Requester according to the
PCI-SIG Lightweight Notification (LN) Protocol ECN document.
From Masanobu SAITOH.
dlg [Fri, 16 Jun 2017 01:55:45 +0000 (01:55 +0000)]
add garbage collection of unused lists percpu cached items.
the cpu caches in pools amortise the cost of accessing global
structures by moving lists of items around instead of individual
items. excess lists of items are stored in the global pool struct,
but these idle lists never get returned back to the system for use
elsewhere.
this adds a timestamp to the global idle list, which is updated
when the idle list stops being empty. if the idle list hasn't been
empty for a while, it means the per cpu caches arent using the idle
entries and they can be recovered. timestamping the pages prevents
recovery of a lot of items that may be used again shortly. eg, rx
ring processing and replenishing from rate limited interrupts tends
to allocate and free items in large chunks, which the timestamping
smooths out.
gc'ed lists are returned to the pool pages, which in turn get gc'ed
back to uvm.
ok visa@
dlg [Fri, 16 Jun 2017 01:33:20 +0000 (01:33 +0000)]
split returning an item to the pool pages out of pool_put as pool_do_put.
this lets pool_cache_list_put return items to the pages. currently,
if pool_cache_list_put is called while the per cpu caches are
enabled, the items on the list will put put straight back onto
another list in the cpu cache. this also avoids counting puts for
these items twice. a put for the items have already been coutned
when the items went to a cpu cache, it doesnt need to be counted
again when it goes back to the pool pages.
another side effect of this is that pool_cache_list_put can take
the pool mutex once when returning all the items in the list with
pool_do_put, rather than once per item.
ok visa@
mikeb [Thu, 15 Jun 2017 20:12:12 +0000 (20:12 +0000)]
Don't defer attaching PV devices
Now that both hvn(4) and hvs(4) can perform VMBus channel operations
during autoconf, it's no longer necessary to defer their attachment.
akfaew [Thu, 15 Jun 2017 20:10:25 +0000 (20:10 +0000)]
Remove the Installation section and fix a nonexistent path.
OK tb@ (fix paths diff) deraadt@
mikeb [Thu, 15 Jun 2017 20:08:56 +0000 (20:08 +0000)]
Make sure we can free GPA handles when cold
mikeb [Thu, 15 Jun 2017 20:06:13 +0000 (20:06 +0000)]
Support executing NVSP and RNDIS commands during autoconf
tb [Thu, 15 Jun 2017 19:37:10 +0000 (19:37 +0000)]
Finer grained pledge for at(1). After setegid(), do a three-way pledge:
For AT and BATCH: "stdio rpath wpath cpath fattr getpw unix"
For ATRM: "stdio rpath cpath getpw unix"
For ATQ and CAT: "stdio rpath getpw"
"unix" is needed for poke_daemon() and "fattr" to chmod +x spoolfile.
idea and ok millert
mikeb [Thu, 15 Jun 2017 18:21:08 +0000 (18:21 +0000)]
Provide storage for the response message in each CCB
mikeb [Thu, 15 Jun 2017 18:05:52 +0000 (18:05 +0000)]
Remove the structure definition for an old (pre Win8) I/O request type
since the new one is backwards compatible and the correct length of the
request can be specified w/o an actual definition.
mikeb [Thu, 15 Jun 2017 18:00:26 +0000 (18:00 +0000)]
Put back copying of the response message into the polling callback
The response message is allocated on the stack of hvs_intr and its
content is valid during a single message processing loop iteration.
Due to the fact that polled transfers finish completion in a callee
context, the cached pointer to the response message becomes stale
very quickly. To avoid this situation the poll completion callback
needs to make sure the content of the response is provided to the
next completion routine.