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
This commit is contained in:
parent
585d0ed98b
commit
7b91a17212
12
slirp/misc.c
12
slirp/misc.c
@ -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)
|
|||||||
*/
|
*/
|
||||||
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)
|
|||||||
* 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;
|
||||||
|
Loading…
Reference in New Issue
Block a user