>     This change implements multi-accept, based on the idea that
>     poll/select can only be efficient, if we succeed in handling
>     all available events, i.e. accept all pending connections.

I noticed that some of the temporary error conditions will exit the
function.  You might want to consider using continues in the while
form.  I'm afraid I won't accept anything that uses goto except in
error exit conditions in functions that need to do cleanups due to
stylistic prejudices.

>     Additionally, a portability issue was resolved. '%m' is not
>     available everywhere.  It was replaced with the portable
>     way of relying on strerror().

I already mentioned this to you, but ircd_snprintf() always supports
%m, so this isn't an issue.

Just to clarify what I meant earlier, take this snippet of code in
your patch:

+      if (fd > MAXCLIENTS - 1) {
+        ++ServerStats->is_ref;
+        send(fd, "ERROR :All connections in use\r\n", 32, 0);
+        close(fd);
+        return;
+      }

All connections may be in use, but there may still be connections
waiting to be accepted.  Our choices are to either skip those pending
connections, hoping that an fd will become available the next time
through, or we can go clear out all those pending accept()'s during
this loop.  If the former, then this is fine; if the latter, then the
return needs to be changed to a continue.  I guess what I'm really
asking for is if this *is* what you meant to do here--perhaps a comment
to that effect could be added to the returns.  Several of the other
tests following this one do need to have the return changed to a
continue, though, such as the listener->active test or the
connection_allowed() test.

Other than that, the patch looks good.  I have a slight concern about
indentation, so you might want to look at that, but it's relatively
minor, as I could correct it when I commit.  If you could address my
other concerns and resubmit the patch, I'd greatly appreciate it :)

Thanks,

>     2002-05-17  Sascha Schumann <[EMAIL PROTECTED]>
> 
>         * ircd/listener.c (accept_listener): In the event of
>         a readable listener socket, the function loops
>         until accept(2) returns -1.  This ensures that all
>         connections which are pending at the time are accepted
>         which increases the server's capacity significantly.
>         Also turn '%m' into '%s' and use the portable function
>         strerror(errno).
> 
>     - Sascha                                     Experience IRCG
>       http://schumann.cx/                http://schumann.cx/ircg
> 
> --8323584-452026418-1021646760=:32133
> Content-Type: TEXT/PLAIN; charset=us-ascii; name=multi-accept
> Content-Transfer-Encoding: BASE64
> Content-ID: <[EMAIL PROTECTED]>
> Content-Description: 
> Content-Disposition: attachment; filename=multi-accept
> 
> SW5kZXg6IGxpc3RlbmVyLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD
> UyBmaWxlOiAvaG9tZS9jb2Rlci1jb20vY3ZzL2lyY3UyLjEwL2lyY2QvbGlz
> dGVuZXIuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcuMi4xDQpkaWZm
> IC11IC1yMS4xNy4yLjEgbGlzdGVuZXIuYw0KLS0tIGxpc3RlbmVyLmMJMjAw
> Mi8wMS8xMSAwMDoyMDozMgkxLjE3LjIuMQ0KKysrIGxpc3RlbmVyLmMJMjAw
> Mi8wNS8xNyAxNDozMTowMA0KQEAgLTQ0MiwxNSArNDQyLDMxIEBADQogICAg
> ICAqIHBvaW50LCBqdXN0IGFzc3VtZSB0aGF0IGNvbm5lY3Rpb25zIGNhbm5v
> dA0KICAgICAgKiBiZSBhY2NlcHRlZCB1bnRpbCBzb21lIG9sZCBpcyBjbG9z
> ZWQgZmlyc3QuDQogICAgICAqLw0KKw0KKyAgICAgLyoNCisgICAgICAqIFRo
> aXMgcGllY2Ugb2YgY29kZSBpbXBsZW1lbnRzIG11bHRpLWFjY2VwdCwgYmFz
> ZWQNCisgICAgICAqIG9uIHRoZSBpZGVhIHRoYXQgcG9sbC9zZWxlY3QgY2Fu
> IG9ubHkgYmUgZWZmaWNpZW50LA0KKyAgICAgICogaWYgd2Ugc3VjY2VlZCBp
> biBoYW5kbGluZyBhbGwgYXZhaWxhYmxlIGV2ZW50cywNCisgICAgICAqIGku
> ZS4gYWNjZXB0IGFsbCBwZW5kaW5nIGNvbm5lY3Rpb25zLg0KKyAgICAgICoN
> CisgICAgICAqIGh0dHA6Ly93d3cuaHBsLmhwLmNvbS90ZWNocmVwb3J0cy8y
> MDAwL0hQTC0yMDAwLTE3NC5odG1sDQorICAgICAgKi8NCisJDQordHJ5X2Fn
> YWluOg0KICAgICBpZiAoLTEgPT0gKGZkID0gYWNjZXB0KGxpc3RlbmVyLT5m
> ZCwgKHN0cnVjdCBzb2NrYWRkciopICZhZGRyLA0KIAkJCSAgICZhZGRybGVu
> KSkpIHsNCisgICAgICAgIA0KKyAgICAgIC8qIFRoZXJlIGlzIG5vIG90aGVy
> IGNvbm5lY3Rpb24gcGVuZGluZyAqLw0KKyAgICAgIGlmIChlcnJubyA9PSBF
> QUdBSU4pDQorICAgICAgICByZXR1cm47DQorDQogICAgICAgLyogTG90c2Eg
> YWRtaW5zIHNlZW0gdG8gaGF2ZSBwcm9ibGVtcyB3aXRoIG5vdCBnaXZpbmcg
> ZW5vdWdoIGZpbGUNCiAgICAgICAgKiBkZXNjcmlwdG9ycyB0byB0aGVpciBz
> ZXJ2ZXIgc28gd2UnbGwgYWRkIGEgZ2VuZXJpYyB3YXJuaW5nIG1lY2hhbmlz
> bQ0KICAgICAgICAqIGhlcmUuICBJZiBpdCB0dXJucyBvdXQgdG9vIG1hbnkg
> bWVzc2FnZXMgYXJlIGdlbmVyYXRlZCBmb3INCiAgICAgICAgKiBtZWFuaW5n
> bGVzcyByZWFzb25zIHdlIGNhbiBmaWx0ZXIgdGhlbSBiYWNrLg0KICAgICAg
> ICAqLw0KICAgICAgIHNlbmR0b19vcG1hc2tfYnV0b25lKDAsIFNOT19UQ1BD
> T01NT04sDQotCQkJICAgIlVuYWJsZSB0byBhY2NlcHQgY29ubmVjdGlvbjog
> JW0iKTsNCisJCQkgICAiVW5hYmxlIHRvIGFjY2VwdCBjb25uZWN0aW9uOiAl
> cyIsIHN0cmVycm9yKGVycm5vKSk7DQogICAgICAgcmV0dXJuOw0KICAgICB9
> DQogICAgIC8qDQpAQCAtNDg1LDUgKzUwMSw2IEBADQogLyogICAgICBuZXh0
> cGluZyA9IEN1cnJlbnRUaW1lOyAqLw0KIA0KICAgICBhZGRfY29ubmVjdGlv
> bihsaXN0ZW5lciwgZmQpOw0KKyAgICBnb3RvIHRyeV9hZ2FpbjsNCiAgIH0N
> CiB9DQo=
> --8323584-452026418-1021646760=:32133
> Content-Type: TEXT/PLAIN; charset=us-ascii; name=multi-accept-no-goto
> Content-Transfer-Encoding: BASE64
> Content-ID: <[EMAIL PROTECTED]>
> Content-Description: 
> Content-Disposition: attachment; filename=multi-accept-no-goto
> 
> SW5kZXg6IGxpc3RlbmVyLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD
> UyBmaWxlOiAvaG9tZS9jb2Rlci1jb20vY3ZzL2lyY3UyLjEwL2lyY2QvbGlz
> dGVuZXIuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcuMi4xDQpkaWZm
> IC11IC1yMS4xNy4yLjEgbGlzdGVuZXIuYw0KLS0tIGxpc3RlbmVyLmMJMjAw
> Mi8wMS8xMSAwMDoyMDozMgkxLjE3LjIuMQ0KKysrIGxpc3RlbmVyLmMJMjAw
> Mi8wNS8xNyAxNDozNDoxNg0KQEAgLTQ0Miw0OCArNDQyLDY1IEBADQogICAg
> ICAqIHBvaW50LCBqdXN0IGFzc3VtZSB0aGF0IGNvbm5lY3Rpb25zIGNhbm5v
> dA0KICAgICAgKiBiZSBhY2NlcHRlZCB1bnRpbCBzb21lIG9sZCBpcyBjbG9z
> ZWQgZmlyc3QuDQogICAgICAqLw0KLSAgICBpZiAoLTEgPT0gKGZkID0gYWNj
> ZXB0KGxpc3RlbmVyLT5mZCwgKHN0cnVjdCBzb2NrYWRkciopICZhZGRyLA0K
> LQkJCSAgICZhZGRybGVuKSkpIHsNCi0gICAgICAvKiBMb3RzYSBhZG1pbnMg
> c2VlbSB0byBoYXZlIHByb2JsZW1zIHdpdGggbm90IGdpdmluZyBlbm91Z2gg
> ZmlsZQ0KLSAgICAgICAqIGRlc2NyaXB0b3JzIHRvIHRoZWlyIHNlcnZlciBz
> byB3ZSdsbCBhZGQgYSBnZW5lcmljIHdhcm5pbmcgbWVjaGFuaXNtDQotICAg
> ICAgICogaGVyZS4gIElmIGl0IHR1cm5zIG91dCB0b28gbWFueSBtZXNzYWdl
> cyBhcmUgZ2VuZXJhdGVkIGZvcg0KLSAgICAgICAqIG1lYW5pbmdsZXNzIHJl
> YXNvbnMgd2UgY2FuIGZpbHRlciB0aGVtIGJhY2suDQorDQorICAgICAvKg0K
> KyAgICAgICogVGhpcyBwaWVjZSBvZiBjb2RlIGltcGxlbWVudHMgbXVsdGkt
> YWNjZXB0LCBiYXNlZA0KKyAgICAgICogb24gdGhlIGlkZWEgdGhhdCBwb2xs
> L3NlbGVjdCBjYW4gb25seSBiZSBlZmZpY2llbnQsDQorICAgICAgKiBpZiB3
> ZSBzdWNjZWVkIGluIGhhbmRsaW5nIGFsbCBhdmFpbGFibGUgZXZlbnRzLA0K
> KyAgICAgICogaS5lLiBhY2NlcHQgYWxsIHBlbmRpbmcgY29ubmVjdGlvbnMu
> DQorICAgICAgKg0KKyAgICAgICogaHR0cDovL3d3dy5ocGwuaHAuY29tL3Rl
> Y2hyZXBvcnRzLzIwMDAvSFBMLTIwMDAtMTc0Lmh0bWwNCisgICAgICAqLw0K
> Kw0KKyAgICB3aGlsZSAoMSkgew0KKyAgICAgIGlmICgtMSA9PSAoZmQgPSBh
> Y2NlcHQobGlzdGVuZXItPmZkLCAoc3RydWN0IHNvY2thZGRyKikgJmFkZHIs
> DQorICAgICAgICAgICAgICAmYWRkcmxlbikpKSB7DQorDQorICAgICAgICAv
> KiBUaGVyZSBpcyBubyBvdGhlciBjb25uZWN0aW9uIHBlbmRpbmcgKi8NCisg
> ICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pDQorICAgICAgICAgIHJldHVy
> bjsNCisNCisgICAgICAgIC8qIExvdHNhIGFkbWlucyBzZWVtIHRvIGhhdmUg
> cHJvYmxlbXMgd2l0aCBub3QgZ2l2aW5nIGVub3VnaCBmaWxlDQorICAgICAg
> ICAgKiBkZXNjcmlwdG9ycyB0byB0aGVpciBzZXJ2ZXIgc28gd2UnbGwgYWRk
> IGEgZ2VuZXJpYyB3YXJuaW5nIG1lY2hhbmlzbQ0KKyAgICAgICAgICogaGVy
> ZS4gIElmIGl0IHR1cm5zIG91dCB0b28gbWFueSBtZXNzYWdlcyBhcmUgZ2Vu
> ZXJhdGVkIGZvcg0KKyAgICAgICAgICogbWVhbmluZ2xlc3MgcmVhc29ucyB3
> ZSBjYW4gZmlsdGVyIHRoZW0gYmFjay4NCisgICAgICAgICAqLw0KKyAgICAg
> ICAgc2VuZHRvX29wbWFza19idXRvbmUoMCwgU05PX1RDUENPTU1PTiwNCisg
> ICAgICAgICAgICAiVW5hYmxlIHRvIGFjY2VwdCBjb25uZWN0aW9uOiAlcyIs
> IHN0cmVycm9yKGVycm5vKSk7DQorICAgICAgICByZXR1cm47DQorICAgICAg
> fQ0KKyAgICAgIC8qDQorICAgICAgICogY2hlY2sgZm9yIGNvbm5lY3Rpb24g
> bGltaXQNCiAgICAgICAgKi8NCi0gICAgICBzZW5kdG9fb3BtYXNrX2J1dG9u
> ZSgwLCBTTk9fVENQQ09NTU9OLA0KLQkJCSAgICJVbmFibGUgdG8gYWNjZXB0
> IGNvbm5lY3Rpb246ICVtIik7DQotICAgICAgcmV0dXJuOw0KLSAgICB9DQot
> ICAgIC8qDQotICAgICAqIGNoZWNrIGZvciBjb25uZWN0aW9uIGxpbWl0DQot
> ICAgICAqLw0KLSAgICBpZiAoZmQgPiBNQVhDTElFTlRTIC0gMSkgew0KLSAg
> ICAgICsrU2VydmVyU3RhdHMtPmlzX3JlZjsNCi0gICAgICBzZW5kKGZkLCAi
> RVJST1IgOkFsbCBjb25uZWN0aW9ucyBpbiB1c2VcclxuIiwgMzIsIDApOw0K
> LSAgICAgIGNsb3NlKGZkKTsNCi0gICAgICByZXR1cm47DQotICAgIH0NCi0g
> ICAgLyoNCi0gICAgICogY2hlY2sgdG8gc2VlIGlmIGxpc3RlbmVyIGlzIHNo
> dXR0aW5nIGRvd24NCi0gICAgICovDQotICAgIGlmICghbGlzdGVuZXItPmFj
> dGl2ZSkgew0KLSAgICAgICsrU2VydmVyU3RhdHMtPmlzX3JlZjsNCi0gICAg
> ICBzZW5kKGZkLCAiRVJST1IgOlVzZSBhbm90aGVyIHBvcnRcclxuIiwgMjUs
> IDApOw0KLSAgICAgIGNsb3NlKGZkKTsNCi0gICAgICByZXR1cm47DQotICAg
> IH0NCi0gICAgLyoNCi0gICAgICogY2hlY2sgdG8gc2VlIGlmIGNvbm5lY3Rp
> b24gaXMgYWxsb3dlZCBmb3IgdGhpcyBhZGRyZXNzIG1hc2sNCi0gICAgICov
> DQotICAgIGlmICghY29ubmVjdGlvbl9hbGxvd2VkKChjb25zdCBjaGFyKikg
> JmFkZHIsDQotCQkJICAgIChjb25zdCBjaGFyKikgJmxpc3RlbmVyLT5tYXNr
> KSkgew0KLSAgICAgICsrU2VydmVyU3RhdHMtPmlzX3JlZjsNCi0gICAgICBz
> ZW5kKGZkLCAiRVJST1IgOlVzZSBhbm90aGVyIHBvcnRcclxuIiwgMjUsIDAp
> Ow0KLSAgICAgIGNsb3NlKGZkKTsNCi0gICAgICByZXR1cm47DQotICAgIH0N
> Ci0gICAgKytTZXJ2ZXJTdGF0cy0+aXNfYWM7DQotLyogICAgICBuZXh0cGlu
> ZyA9IEN1cnJlbnRUaW1lOyAqLw0KKyAgICAgIGlmIChmZCA+IE1BWENMSUVO
> VFMgLSAxKSB7DQorICAgICAgICArK1NlcnZlclN0YXRzLT5pc19yZWY7DQor
> ICAgICAgICBzZW5kKGZkLCAiRVJST1IgOkFsbCBjb25uZWN0aW9ucyBpbiB1
> c2VcclxuIiwgMzIsIDApOw0KKyAgICAgICAgY2xvc2UoZmQpOw0KKyAgICAg
> ICAgcmV0dXJuOw0KKyAgICAgIH0NCisgICAgICAvKg0KKyAgICAgICAqIGNo
> ZWNrIHRvIHNlZSBpZiBsaXN0ZW5lciBpcyBzaHV0dGluZyBkb3duDQorICAg
> ICAgICovDQorICAgICAgaWYgKCFsaXN0ZW5lci0+YWN0aXZlKSB7DQorICAg
> ICAgICArK1NlcnZlclN0YXRzLT5pc19yZWY7DQorICAgICAgICBzZW5kKGZk
> LCAiRVJST1IgOlVzZSBhbm90aGVyIHBvcnRcclxuIiwgMjUsIDApOw0KKyAg
> ICAgICAgY2xvc2UoZmQpOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICAgIH0N
> CisgICAgICAvKg0KKyAgICAgICAqIGNoZWNrIHRvIHNlZSBpZiBjb25uZWN0
> aW9uIGlzIGFsbG93ZWQgZm9yIHRoaXMgYWRkcmVzcyBtYXNrDQorICAgICAg
> ICovDQorICAgICAgaWYgKCFjb25uZWN0aW9uX2FsbG93ZWQoKGNvbnN0IGNo
> YXIqKSAmYWRkciwNCisgICAgICAgICAgICAoY29uc3QgY2hhciopICZsaXN0
> ZW5lci0+bWFzaykpIHsNCisgICAgICAgICsrU2VydmVyU3RhdHMtPmlzX3Jl
> ZjsNCisgICAgICAgIHNlbmQoZmQsICJFUlJPUiA6VXNlIGFub3RoZXIgcG9y
> dFxyXG4iLCAyNSwgMCk7DQorICAgICAgICBjbG9zZShmZCk7DQorICAgICAg
> ICByZXR1cm47DQorICAgICAgfQ0KKyAgICAgICsrU2VydmVyU3RhdHMtPmlz
> X2FjOw0KKyAgICAgIC8qIG5leHRwaW5nID0gQ3VycmVudFRpbWU7ICovDQog
> DQotICAgIGFkZF9jb25uZWN0aW9uKGxpc3RlbmVyLCBmZCk7DQorICAgICAg
> YWRkX2Nvbm5lY3Rpb24obGlzdGVuZXIsIGZkKTsNCisgICAgfQ0KICAgfQ0K
> IH0NCg==
> --8323584-452026418-1021646760=:32133--

-- 
Kevin L. Mitchell <[EMAIL PROTECTED]>

Reply via email to