Re: Issues with Perdition 2.1 in FreeBSD

Egoitz Aurrekoetxea <[email protected]> Sat, 7 Mar 2015 12:23:58 +0100
Newsgroups gmane.mail.perdition.user
Message-ID <[email protected]>
--===============1123502441==
Content-Type: multipart/alternative; boundary="Apple-Mail=_92B56A2F-E696-4493-88E2-F9870180AB38"


--Apple-Mail=_92B56A2F-E696-4493-88E2-F9870180AB38
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Good morning,

Answering below and in black :)


Egoitz Aurrekoetxea
Departamento de sistemas
944 209 470
Parque Tecnol=C3=B3gico. Edificio 103
48170 Zamudio (Bizkaia)
[email protected] <mailto:[email protected]>
www.sarenet.es <http://www.sarenet.es/>
Antes de imprimir este correo electr=C3=B3nico piense si es necesario =
hacerlo.

> El 7/3/2015, a las 6:36, Simon Horman <[email protected]> escribi=C3=B3=
:
>=20
> On Fri, Mar 06, 2015 at 02:50:58PM +0100, Egoitz Aurrekoetxea wrote:
>> cat /usr/include/errno.h | grep 53
>> #define	ECONNABORTED	53		/* Software caused =
connection abort */
>>=20
>> That=E2=80=99s it :)
>=20
> Thanks. The reason that I ask is that the numeric value of error =
numbers
> may vary between different systems. For example on x86_64 Linux
> ECONNABORTED is 103.

Yep I supposed that was the matter, I have checked this too previous to =
asking in this list, to modify appropriately the code in case you have =
developed this code for Glibc perhaps=E2=80=A6

Should say the wrote patch has done something positive and has done what =
was expected, take a look please :=20

Mar  6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_accept: =
Falla accept con el error
Mar  6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_accept: =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

Mar  6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_accept: =
53
Mar  6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_accept: =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

Mar  6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_accept: =
Falla accept con el error
Mar  6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_accept: =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

Mar  6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_accept: =
35
Mar  6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_accept: =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

Mar  6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_accept: =
TENEMOS UN EAGAIN
Mar  6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_acceptv: =
EGOITZ STATUS -----> 0

it=E2=80=99s does not die later...

At least seems that saying the code : "in case you have not been able to =
fork (because accept has failed with a concreted errno and so you have =
not forked) go to poll again the set of fds and when see some fd=20
status changed loop again". I=E2=80=99m not very used to work with =
sockets in C but I assume perhaps the only disadvantage of doing this, =
is that in case no fd changes in the set suddenly (due to no any kind of =
traffic) it=20
will get the actual established connections stalled because it=E2=80=99s =
not entering the accept and fork loop meanwhile something changes in =
some fd of the set. This is not in my case a big problem, because I have =
very=20
constant traffic 24*7. Please (for learning) correct me if I=E2=80=99m =
wrong.

>=20
> I am wondering if you could try either the current hg tree
> of vanessa socket.
>=20
> http://hg.vergenet.net/vanessa/vanessa_socket/
>=20
> Or the following patch on top of 0.0.12.  Unfortunately its changelog =
does
> not seem to accurately describe everything that it does.

Sure I will!! :), although it has to be on Monday, I=E2=80=99ll try not =
to make changes on the servers during weekend, mainly when the patch has =
done some positive work :) No problem with the changelog :) don=E2=80=99t =
worry :)

I will write you at Monday evening CET timezone for telling you how has =
it gone=E2=80=A6. because as said before too=E2=80=A6 it=E2=80=99s not =
easy or possible (at least don=E2=80=99t know how) to reproduce the =
issue and the patch=E2=80=99s behavior=E2=80=A6

As always Simon, a pleasure and thank you so much :) :)

Regards,

>=20
> http://hg.vergenet.net/vanessa/vanessa_socket/rev/86186acdf27e
>=20
> # HG changeset patch
> # User Simon Horman <[email protected]>
> # Date 1305777845 -32400
> # Node ID 86186acdf27ef7dca5f927448c1a07126f491caa
> # Parent f09d51ca6e578d74b99da38f0ddf563e44e32af5
> Use freeaddrinfo() in on success in vanessa_socket_server_bind()
>=20
> This resolves a memory leak
>=20
> Signed-off-by: Simon Horman <[email protected]>
>=20
> --- a/libvanessa_socket/vanessa_socket_server.c	Tue Oct 06 =
16:17:48 2009 +1100
> +++ b/libvanessa_socket/vanessa_socket_server.c	Thu May 19 =
13:04:05 2011 +0900
> @@ -110,6 +110,7 @@
> 				goto err_close;
> 			continue;
> 		}
> +		freeaddrinfo(res);
> 		return s;
> 	} while ((res =3D res->ai_next));
>=20
> @@ -353,7 +354,7 @@
> 				      const unsigned int =
maximum_connections,
> 				      struct sockaddr *return_from,=20
> 				      struct sockaddr *return_to,
> -				      vanessa_socket_flag_t flag)
> +				      vanessa_socket_flag_t flag, long =
opt)
> {
> 	unsigned int addrlen;
> 	pid_t child =3D 0;
> @@ -370,7 +371,8 @@
> 			if(errno =3D=3D EINTR || errno =3D=3D =
ECONNABORTED) {
> 				continue; /* Ignore EINTR  and =
ECONNABORTED */
>=20
>     0K . 			}
> -			if (errno =3D=3D EAGAIN || errno =3D=3D =
EWOULDBLOCK)
> +			if (opt & O_NONBLOCK &&
> +			    (errno =3D=3D EAGAIN || errno =3D=3D =
EWOULDBLOCK))
> 				return -1; /* Don't log EAGAIN or =
EWOULDBLOCK */
> 			VANESSA_LOGGER_DEBUG_ERRNO("accept");
> 			return(-1);
> @@ -447,12 +449,19 @@
> {
> 	pid_t child;
> 	int g;
> +	long opt;
> +
> +	opt =3D fcntl(listen_socket, F_GETFL, NULL);
> +	if (opt < 0) {
> +		VANESSA_LOGGER_DEBUG_ERRNO("fcntl: F_GETFL");
> +		return -1;
> +	}
>=20
> 	while (1) {
> 		child =3D __vanessa_socket_server_accept(&g, =
listen_socket, NULL,
> 		 				       =
maximum_connections,=20
> 						       return_from, =
return_to,=20
> -						       flag);
> +						       flag, opt);
> 		if (child < 0) {
> 			=
VANESSA_LOGGER_DEBUG("__vanessa_socket_server_accept");
> 			return -1;
> @@ -527,14 +536,14 @@
> 							listen_socketv,
> 							=
maximum_connections,
> 							return_from, =
return_to,
> -							flag);
> +							flag, opt);
> 	if (child < 0) {
> -		if (errno =3D=3D EAGAIN || errno =3D=3D EWOULDBLOCK)
> -			status =3D 0;
> -		else {
> +		status =3D -1;
> +		if (errno =3D=3D EAGAIN || errno =3D=3D EWOULDBLOCK) {
> .+			if (opt & O_NONBLOCK)
> +				status =3D 0;
> +		} else
> 			=
VANESSA_LOGGER_DEBUG("__vanessa_socket_server_accept");
> -			status =3D -1;
> -		}
> 	}
>=20
> 	if (!(opt & O_NONBLOCK) && child &&
> @@ -607,6 +616,8 @@
> 						maximum_connections,=20
> 						return_from, return_to, =
flag);
> 			if (child < 0) {
> +				if (errno =3D=3D EAGAIN || errno =3D=3D =
EWOULDBLOCK)
> +					continue;
> 				VANESSA_LOGGER_DEBUG(
> 					=
"__vanessa_socket_server_acceptv");
> 				goto err;
>=20
>                                                     15.5K=3D0.2s
>=20
> 2015-03-07 14:35:50 (15.5 KB/s) - written to stdout [2509]
>=20


--Apple-Mail=_92B56A2F-E696-4493-88E2-F9870180AB38
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D"">Good morning,<div class=3D""><br class=3D""></div><div =
class=3D"">Answering below and in black :)<br class=3D""><div =
apple-content-edited=3D"true" class=3D""><br class=3D"">
<div style=3D"clear:both; text-align:left;" class=3D"firmasarenet">
  <div style=3D"margin:0 0 10px 0" class=3D"imgsarenet"><img =
src=3D"http://www.sarenet.es/estaticos/LogoSarenetEmails.png?13022013" =
alt=3D"sarenet" class=3D""></div>
  <div style=3D"font-family:Helvetica, Arial, sans-serif; =
font-weight:bold; font-size:14px; color:#333333" =
class=3D"titulosarenet"><strong class=3D"">Egoitz =
Aurrekoetxea</strong></div>
  <div style=3D"font-family:Helvetica, Arial, sans-serif; =
font-weight:normal; font-size:12px; color:#333333" =
class=3D"dptosarenet">Departamento de sistemas</div>
  <div style=3D"font-family:Helvetica, Arial, sans-serif; =
font-weight:normal; font-size:12px; color:#333333" =
class=3D"textosarenet">944 209 470<br class=3D"">Parque Tecnol=C3=B3gico. =
Edificio 103<br class=3D"">48170 Zamudio (Bizkaia)</div>
  <div style=3D"font-family:Helvetica, Arial, sans-serif; =
font-weight:normal; font-size:12px; color:#007AC4; line-height:1.2" =
class=3D"lnksarenet"><a id=3D"mailto" style=3D" font-size:12px; =
color:#007AC4; text-decoration:underline;" =
href=3D"mailto:[email protected]" class=3D""><label id=3D"label_email" =
class=3D"">[email protected]</label></a></div>
  <div style=3D"font-family:Helvetica, Arial, sans-serif; =
font-weight:normal; font-size:12px; color:#007AC4; line-height:1.2" =
class=3D"lnksarenet"><a href=3D"http://www.sarenet.es" style=3D" =
font-size:12px; color:#007AC4; text-decoration:underline;" =
class=3D"">www.sarenet.es</a></div>
  <br class=3D"">
  <div style=3D"font-family:Helvetica, Arial, sans-serif; =
font-weight:normal; font-size:10px; color:#A0C361" =
class=3D"imprimirsarenet">Antes de imprimir este correo electr=C3=B3nico =
piense si es necesario hacerlo.</div>
</div>

</div>
<br class=3D""><div><blockquote type=3D"cite" class=3D""><div =
class=3D"">El 7/3/2015, a las 6:36, Simon Horman &lt;<a =
href=3D"mailto:[email protected]" class=3D"">[email protected]</a>&gt; =
escribi=C3=B3:</div><br class=3D"Apple-interchange-newline"><div =
class=3D"">On Fri, Mar 06, 2015 at 02:50:58PM +0100, Egoitz Aurrekoetxea =
wrote:<br class=3D""><blockquote type=3D"cite" class=3D"">cat =
/usr/include/errno.h | grep 53<br class=3D"">#define<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>ECONNABORTED<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>53<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>/* Software caused connection =
abort */<br class=3D""><br class=3D"">That=E2=80=99s it :)<br =
class=3D""></blockquote><br class=3D"">Thanks. The reason that I ask is =
that the numeric value of error numbers<br class=3D"">may vary between =
different systems. For example on x86_64 Linux<br class=3D"">ECONNABORTED =
is 103.<br class=3D""></div></blockquote><div><br =
class=3D""></div><div>Yep I supposed that was the matter, I have checked =
this too previous to asking in this list, to modify appropriately the =
code in case you have developed this code for Glibc =
perhaps=E2=80=A6</div><div><br class=3D""></div><div>Should say the =
wrote patch has done something positive and has done what was expected, =
take a look please :&nbsp;</div><div><br class=3D""></div><div><div =
style=3D"margin: 0px; font-size: 10px; font-family: Monaco; color: =
rgb(245, 245, 245); background-color: rgb(0, 0, 0);" class=3D"">Mar&nbsp; =
6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_accept: Falla =
accept con el error</div><div style=3D"margin: 0px; font-size: 10px; =
font-family: Monaco; color: rgb(245, 245, 245); background-color: rgb(0, =
0, 0);" class=3D"">Mar&nbsp; 6 19:43:09 perdition.imap4[16640]: =
__vanessa_socket_server_accept: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</div><div style=3D"margin: 0px; =
font-size: 10px; font-family: Monaco; color: rgb(245, 245, 245); =
background-color: rgb(0, 0, 0);" class=3D"">Mar&nbsp; 6 19:43:09 =
perdition.imap4[16640]: __vanessa_socket_server_accept: 53</div><div =
style=3D"margin: 0px; font-size: 10px; font-family: Monaco; color: =
rgb(245, 245, 245); background-color: rgb(0, 0, 0);" class=3D"">Mar&nbsp; =
6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_accept: =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
</div><div style=3D"margin: 0px; font-size: 10px; font-family: Monaco; =
color: rgb(245, 245, 245); background-color: rgb(0, 0, 0);" =
class=3D"">Mar&nbsp; 6 19:43:09 perdition.imap4[16640]: =
__vanessa_socket_server_accept: Falla accept con el error</div><div =
style=3D"margin: 0px; font-size: 10px; font-family: Monaco; color: =
rgb(245, 245, 245); background-color: rgb(0, 0, 0);" class=3D"">Mar&nbsp; =
6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_accept: =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
</div><div style=3D"margin: 0px; font-size: 10px; font-family: Monaco; =
color: rgb(245, 245, 245); background-color: rgb(0, 0, 0);" =
class=3D"">Mar&nbsp; 6 19:43:09 perdition.imap4[16640]: =
__vanessa_socket_server_accept: 35</div><div style=3D"margin: 0px; =
font-size: 10px; font-family: Monaco; color: rgb(245, 245, 245); =
background-color: rgb(0, 0, 0);" class=3D"">Mar&nbsp; 6 19:43:09 =
perdition.imap4[16640]: __vanessa_socket_server_accept: =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
</div><div style=3D"margin: 0px; font-size: 10px; font-family: Monaco; =
color: rgb(245, 245, 245); background-color: rgb(0, 0, 0);" =
class=3D"">Mar&nbsp; 6 19:43:09 perdition.imap4[16640]: =
__vanessa_socket_server_accept: TENEMOS UN EAGAIN</div><div =
style=3D"margin: 0px; font-size: 10px; font-family: Monaco; color: =
rgb(245, 245, 245); background-color: rgb(0, 0, 0);" class=3D"">Mar&nbsp; =
6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_acceptv: =
EGOITZ STATUS -----&gt; 0</div><div class=3D""><br class=3D""></div><div =
class=3D"">it=E2=80=99s does not die later...</div><div class=3D""><br =
class=3D""></div></div><div>At least seems that saying the code : "in =
case you have not been able to fork (because accept has failed with a =
concreted errno and so you have not forked) go to poll again the set of =
fds and when see some fd&nbsp;</div><div>status changed loop again". =
I=E2=80=99m not very used to work with sockets in C but I assume perhaps =
the only disadvantage of doing this, is that in case no fd changes in =
the set suddenly (due to no any kind of traffic) it&nbsp;</div><div>will =
get the actual established connections stalled because it=E2=80=99s not =
entering the accept and fork loop meanwhile something changes in some fd =
of the set. This is not in my case a big problem, because I have =
very&nbsp;</div><div>constant traffic 24*7. Please (for learning) =
correct me if I=E2=80=99m wrong.</div><br class=3D""><blockquote =
type=3D"cite" class=3D""><div class=3D""><br class=3D"">I am wondering =
if you could try either the current hg tree<br class=3D"">of vanessa =
socket.<br class=3D""><br class=3D""><a =
href=3D"http://hg.vergenet.net/vanessa/vanessa_socket/" =
class=3D"">http://hg.vergenet.net/vanessa/vanessa_socket/</a><br =
class=3D""><br class=3D"">Or the following patch on top of 0.0.12. =
&nbsp;Unfortunately its changelog does<br class=3D"">not seem to =
accurately describe everything that it does.<br =
class=3D""></div></blockquote><div><br class=3D""></div><div>Sure I =
will!! :), although it has to be on Monday, I=E2=80=99ll try not to make =
changes on the servers during weekend, mainly when the patch has done =
some positive work :) No problem with the changelog :) don=E2=80=99t =
worry :)</div><div><br class=3D""></div><div>I will write you at Monday =
evening CET timezone for telling you how has it gone=E2=80=A6. because =
as said before too=E2=80=A6 it=E2=80=99s not easy or possible (at least =
don=E2=80=99t know how) to reproduce the issue and the patch=E2=80=99s =
behavior=E2=80=A6</div><div><br class=3D""></div><div>As always Simon, a =
pleasure and thank you so much :) :)</div><div><br =
class=3D""></div><div>Regards,</div><br class=3D""><blockquote =
type=3D"cite" class=3D""><div class=3D""><br class=3D""><a =
href=3D"http://hg.vergenet.net/vanessa/vanessa_socket/rev/86186acdf27e" =
class=3D"">http://hg.vergenet.net/vanessa/vanessa_socket/rev/86186acdf27e<=
/a><br class=3D""><br class=3D""># HG changeset patch<br class=3D""># =
User Simon Horman &lt;[email protected]&gt;<br class=3D""># Date =
1305777845 -32400<br class=3D""># Node ID =
86186acdf27ef7dca5f927448c1a07126f491caa<br class=3D""># Parent =
f09d51ca6e578d74b99da38f0ddf563e44e32af5<br class=3D"">Use =
freeaddrinfo() in on success in vanessa_socket_server_bind()<br =
class=3D""><br class=3D"">This resolves a memory leak<br class=3D""><br =
class=3D"">Signed-off-by: Simon Horman &lt;[email protected]&gt;<br =
class=3D""><br class=3D"">--- =
a/libvanessa_socket/vanessa_socket_server.c<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>Tue Oct 06 16:17:48 2009 +1100<br =
class=3D"">+++ b/libvanessa_socket/vanessa_socket_server.c<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>Thu May =
19 13:04:05 2011 +0900<br class=3D"">@@ -110,6 +110,7 @@<br class=3D""> =
<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>goto err_close;<br class=3D""> <span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>continue;<br class=3D""> <span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>}<br =
class=3D"">+<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>freeaddrinfo(res);<br class=3D""> <span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>return s;<br class=3D""> <span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>} while =
((res =3D res-&gt;ai_next));<br class=3D""><br class=3D"">@@ -353,7 =
+354,7 @@<br class=3D""> <span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span> =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const unsigned int maximum_connections,<br =
class=3D""> <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct sockaddr *return_from, <br =
class=3D""> <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct sockaddr *return_to,<br =
class=3D"">-<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vanessa_socket_flag_t flag)<br =
class=3D"">+<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vanessa_socket_flag_t flag, long =
opt)<br class=3D""> {<br class=3D""> <span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>unsigned int addrlen;<br =
class=3D""> <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>pid_t child =3D 0;<br class=3D"">@@ -370,7 +371,8 @@<br class=3D"">=
 <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>if(errno =3D=3D EINTR || errno =3D=3D ECONNABORTED) {<br =
class=3D""> <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>continue; /* Ignore EINTR &nbsp;and ECONNABORTED */<br =
class=3D""><br class=3D""> &nbsp;&nbsp;&nbsp;&nbsp;0K . <span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>}<br =
class=3D"">-<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>if (errno =3D=3D EAGAIN || errno =3D=3D EWOULDBLOCK)<br =
class=3D"">+<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>if (opt &amp; O_NONBLOCK &amp;&amp;<br class=3D"">+<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span> =
&nbsp;&nbsp;&nbsp;(errno =3D=3D EAGAIN || errno =3D=3D EWOULDBLOCK))<br =
class=3D""> <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>return -1; /* Don't log EAGAIN or EWOULDBLOCK */<br class=3D""> =
<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>VANESSA_LOGGER_DEBUG_ERRNO("accept");<br class=3D""> <span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>return(-1);<br class=3D"">@@ -447,12 +449,19 @@<br class=3D""> =
{<br class=3D""> <span class=3D"Apple-tab-span" style=3D"white-space:pre">=
	</span>pid_t child;<br class=3D""> <span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>int g;<br class=3D"">+<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>long =
opt;<br class=3D"">+<br class=3D"">+<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>opt =3D fcntl(listen_socket, =
F_GETFL, NULL);<br class=3D"">+<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>if (opt &lt; 0) {<br =
class=3D"">+<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>VANESSA_LOGGER_DEBUG_ERRNO("fcntl: F_GETFL");<br class=3D"">+<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>return =
-1;<br class=3D"">+<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>}<br class=3D""><br class=3D""> =
<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>while (1) {<br class=3D""> <span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>child =3D =
__vanessa_socket_server_accept(&amp;g, listen_socket, NULL,<br class=3D"">=
 <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span> <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maximum_connections, <br =
class=3D""> <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_from, return_to, <br =
class=3D"">-<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag);<br class=3D"">+<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span> =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag, opt);<br class=3D""> <span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>if (child =
&lt; 0) {<br class=3D""> <span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	=
</span>VANESSA_LOGGER_DEBUG("__vanessa_socket_server_accept");<br =
class=3D""> <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>return -1;<br class=3D"">@@ -527,14 +536,14 @@<br class=3D""> =
<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>listen_socketv,<br class=3D""> <span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>maximum_connections,<br class=3D"">=
 <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>return_from, return_to,<br class=3D"">-<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>flag);<br =
class=3D"">+<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>flag, opt);<br class=3D""> <span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>if (child &lt; 0) {<br =
class=3D"">-<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>if (errno =3D=3D EAGAIN || errno =3D=3D EWOULDBLOCK)<br =
class=3D"">-<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>status =3D 0;<br class=3D"">-<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>else {<br class=3D"">+<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>status =3D =
-1;<br class=3D"">+<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>if (errno =3D=3D EAGAIN || errno =
=3D=3D EWOULDBLOCK) {<br class=3D"">.+<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>if (opt &amp; O_NONBLOCK)<br =
class=3D"">+<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>status =3D 0;<br class=3D"">+<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>} else<br class=3D""> <span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>VANESSA_LOGGER_DEBUG("__vanessa_socket_server_accept");<br =
class=3D"">-<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>status =3D -1;<br class=3D"">-<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>}<br class=3D""> <span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>}<br =
class=3D""><br class=3D""> <span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>if (!(opt &amp; O_NONBLOCK) =
&amp;&amp; child &amp;&amp;<br class=3D"">@@ -607,6 +616,8 @@<br =
class=3D""> <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>maximum_connections, <br class=3D""> <span class=3D"Apple-tab-span"=
 style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>return_from, return_to, flag);<br =
class=3D""> <span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>if (child &lt; 0) {<br class=3D"">+<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>if (errno =3D=3D EAGAIN || errno =
=3D=3D EWOULDBLOCK)<br class=3D"">+<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>continue;<br class=3D""> <span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>VANESSA_LOGGER_DEBUG(<br class=3D""> <span class=3D"Apple-tab-span"=
 style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	=
</span>"__vanessa_socket_server_acceptv");<br class=3D""> <span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>goto =
err;<br class=3D""><br class=3D""> =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;15.5K=3D0.2s<br class=3D""><br class=3D"">2015-03-07 =
14:35:50 (15.5 KB/s) - written to stdout [2509]<br class=3D""><br =
class=3D""></div></blockquote></div><br class=3D""></div></body></html>=

--Apple-Mail=_92B56A2F-E696-4493-88E2-F9870180AB38--

--===============1123502441==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

______________________________________________
Perdition-users mailing list
[email protected]
http://lists.vergenet.net/listinfo/perdition-users

--===============1123502441==--