summaryrefslogtreecommitdiff
path: root/src/netbeans.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2011-01-04 18:11:43 +0100
committerBram Moolenaar <Bram@vim.org>2011-01-04 18:11:43 +0100
commit870b05c4c087980a14d180ea680cb0ff35d62331 (patch)
tree595fffbb1317a8f373ca3b6bd4b8f00a020f91d9 /src/netbeans.c
parentd91f704b030647fbaf6eedcb6492f2c231ad635a (diff)
downloadvim-git-870b05c4c087980a14d180ea680cb0ff35d62331.tar.gz
updated for version 7.3.096v7.3.096
Problem: "gvim -nb" is not interruptable. Leaking file descriptor on netbeans connection error. Solution: Check for CTRL-C typed. Free file descriptor. (Xavier de Gaye)
Diffstat (limited to 'src/netbeans.c')
-rw-r--r--src/netbeans.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/netbeans.c b/src/netbeans.c
index 71b664cbf..01cb5fbe2 100644
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -321,6 +321,7 @@ netbeans_connect(char *params, int doabort)
{
nbdebug(("error in gethostbyname() in netbeans_connect()\n"));
PERROR("gethostbyname() in netbeans_connect()");
+ sock_close(sd);
goto theend;
}
memcpy((char *)&server.sin_addr, host->h_addr, host->h_length);
@@ -370,15 +371,12 @@ netbeans_connect(char *params, int doabort)
|| (errno == EINTR)))
{
nbdebug(("retrying...\n"));
- sleep(5);
- if (!doabort)
+ mch_delay(3000L, TRUE);
+ ui_breakcheck();
+ if (got_int)
{
- ui_breakcheck();
- if (got_int)
- {
- errno = EINTR;
- break;
- }
+ errno = EINTR;
+ break;
}
if (connect(sd, (struct sockaddr *)&server,
sizeof(server)) == 0)
@@ -393,6 +391,7 @@ netbeans_connect(char *params, int doabort)
/* Get here when the server can't be found. */
nbdebug(("Cannot connect to Netbeans #2\n"));
PERROR(_("Cannot connect to Netbeans #2"));
+ sock_close(sd);
if (doabort)
getout(1);
goto theend;
@@ -403,6 +402,7 @@ netbeans_connect(char *params, int doabort)
{
nbdebug(("Cannot connect to Netbeans\n"));
PERROR(_("Cannot connect to Netbeans"));
+ sock_close(sd);
if (doabort)
getout(1);
goto theend;