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 <<a = href=3D"mailto:[email protected]" class=3D"">[email protected]</a>> = 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 : </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 = 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 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 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 = 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 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 = 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 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 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 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 = 6 19:43:09 perdition.imap4[16640]: __vanessa_socket_server_acceptv: = EGOITZ STATUS -----> 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 </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 </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 </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. = 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 <[email protected]><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 <[email protected]><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->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> = 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> 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> 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> 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> 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 and ECONNABORTED */<br = class=3D""><br class=3D""> 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 & 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> = (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 < 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(&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> 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, <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> 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> = 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 = < 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 < 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 & 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 & O_NONBLOCK) = && child &&<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 < 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""> = &n= bsp; &nbs= p; = &n= bsp; 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==--