Workaround for nscd(8) failure with large entries.

It fixes a case where eg a 2KB group entry would take several seconds
to complete with cache enabled in nsswitch.conf.

MFC after:	2 weeks
Sponsored by:	Chalmers University of Technology
Differential Revision:	https://reviews.freebsd.org/D18392
This commit is contained in:
Edward Tomasz Napierala 2019-01-17 20:01:06 +00:00
parent 16068ae479
commit 50d503b781
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=343121

View File

@ -405,6 +405,12 @@ process_socket_event(struct kevent *event_data, struct runtime_env *env,
* process_socket_event).
*/
if (qstate->kevent_watermark > MAX_SOCKET_IO_SIZE) {
#if 0
/*
* XXX: Uncommenting this code makes nscd(8) fail for
* entries larger than a few kB, causing few second
* worth of delay for each call to retrieve them.
*/
if (qstate->io_buffer != NULL)
free(qstate->io_buffer);
@ -421,6 +427,7 @@ process_socket_event(struct kevent *event_data, struct runtime_env *env,
if (qstate->kevent_filter == EVFILT_READ)
qstate->use_alternate_io = 1;
#endif
qstate->io_buffer_watermark = MAX_SOCKET_IO_SIZE;
EV_SET(&eventlist[1], event_data->ident,