Skip to content
Snippets Groups Projects
Commit 581f6dc9 authored by Bram Moolenaar's avatar Bram Moolenaar
Browse files

updated for version 7.2.392

Problem:    Netbeans hangs reading from a socket at the maximum block size.
Solution:   Use select() or poll(). (Xavier de Gaye)
parent 37d619f8
No related branches found
Tags v7.2.392
No related merge requests found
......@@ -21,21 +21,6 @@
# include <X11/Xatom.h>
# endif
# if defined(HAVE_SYS_SELECT_H) && \
(!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME))
# include <sys/select.h>
# endif
# ifndef HAVE_SELECT
# ifdef HAVE_SYS_POLL_H
# include <sys/poll.h>
# else
# ifdef HAVE_POLL_H
# include <poll.h>
# endif
# endif
# endif
/*
* This file provides procedures that implement the command server
* functionality of Vim when in contact with an X11 server.
......
......@@ -735,6 +735,14 @@ messageFromNetbeans(gpointer clientData UNUSED,
int readlen = 0;
#ifndef FEAT_GUI_GTK
static int level = 0;
#endif
#ifdef HAVE_SELECT
struct timeval tval;
fd_set rfds;
#else
# ifdef HAVE_POLL
struct pollfd fds;
# endif
#endif
if (sd < 0)
......@@ -755,9 +763,26 @@ messageFromNetbeans(gpointer clientData UNUSED,
return; /* out of memory! */
}
/* Keep on reading for as long as there is something to read. */
/* Keep on reading for as long as there is something to read.
* Use select() or poll() to avoid blocking on a message that is exactly
* MAXMSGSIZE long. */
for (;;)
{
#ifdef HAVE_SELECT
FD_ZERO(&rfds);
FD_SET(sd, &rfds);
tval.tv_sec = 0;
tval.tv_usec = 0;
if (select(sd + 1, &rfds, NULL, NULL, &tval) <= 0)
break;
#else
# ifdef HAVE_POLL
fds.fd = sd;
fds.events = POLLIN;
if (poll(&fds, 1, 0) <= 0)
break;
# endif
#endif
len = sock_read(sd, buf, MAXMSGSIZE);
if (len <= 0)
break; /* error or nothing more to read */
......
......@@ -28,11 +28,6 @@
# include <sys/wait.h>
# endif
# if defined(HAVE_SYS_SELECT_H) && \
(!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME))
# include <sys/select.h>
# endif
# ifndef WEXITSTATUS
# ifdef HAVE_UNION_WAIT
# define WEXITSTATUS(stat_val) ((stat_val).w_T.w_Retcode)
......@@ -65,16 +60,6 @@
# include <string.h>
#endif
#ifndef HAVE_SELECT
# ifdef HAVE_SYS_POLL_H
# include <sys/poll.h>
# else
# ifdef HAVE_POLL_H
# include <poll.h>
# endif
# endif
#endif
#ifdef HAVE_SYS_STREAM_H
# include <sys/stream.h>
#endif
......
......@@ -681,6 +681,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
392,
/**/
391,
/**/
......
......@@ -477,6 +477,23 @@ typedef unsigned long u8char_T; /* long should be 32 bits or more */
# include <stdarg.h>
#endif
# if defined(HAVE_SYS_SELECT_H) && \
(!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME))
# include <sys/select.h>
# endif
# ifndef HAVE_SELECT
# ifdef HAVE_SYS_POLL_H
# include <sys/poll.h>
# define HAVE_POLL
# else
# ifdef HAVE_POLL_H
# include <poll.h>
# define HAVE_POLL
# endif
# endif
# endif
/* ================ end of the header file puzzle =============== */
/*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment