提交 7b91a172 编写于 作者: B bellard

slirp fix for -smb command (Initial patch by Juergen Keil)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1172 c046a42c-6fe2-441c-8c8c-71466251a162
上级 585d0ed9
...@@ -320,7 +320,7 @@ fork_exec(so, ex, do_pty) ...@@ -320,7 +320,7 @@ fork_exec(so, ex, do_pty)
/* don't want to clobber the original */ /* don't want to clobber the original */
char *bptr; char *bptr;
char *curarg; char *curarg;
int c, i; int c, i, ret;
DEBUG_CALL("fork_exec"); DEBUG_CALL("fork_exec");
DEBUG_ARG("so = %lx", (long)so); DEBUG_ARG("so = %lx", (long)so);
...@@ -372,7 +372,9 @@ fork_exec(so, ex, do_pty) ...@@ -372,7 +372,9 @@ fork_exec(so, ex, do_pty)
*/ */
s = socket(AF_INET, SOCK_STREAM, 0); s = socket(AF_INET, SOCK_STREAM, 0);
addr.sin_addr = loopback_addr; addr.sin_addr = loopback_addr;
connect(s, (struct sockaddr *)&addr, addrlen); do {
ret = connect(s, (struct sockaddr *)&addr, addrlen);
} while (ret < 0 && errno == EINTR);
} }
#if 0 #if 0
...@@ -436,8 +438,10 @@ fork_exec(so, ex, do_pty) ...@@ -436,8 +438,10 @@ fork_exec(so, ex, do_pty)
* The only reason this will block forever is if socket() * The only reason this will block forever is if socket()
* of connect() fail in the child process * of connect() fail in the child process
*/ */
so->s = accept(s, (struct sockaddr *)&addr, &addrlen); do {
closesocket(s); so->s = accept(s, (struct sockaddr *)&addr, &addrlen);
} while (so->s < 0 && errno == EINTR);
closesocket(s);
opt = 1; opt = 1;
setsockopt(so->s,SOL_SOCKET,SO_REUSEADDR,(char *)&opt,sizeof(int)); setsockopt(so->s,SOL_SOCKET,SO_REUSEADDR,(char *)&opt,sizeof(int));
opt = 1; opt = 1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册