From: SourceForge.net <no...@so...> - 2011-07-13 19:53:17
|
Patches item #3354485, was opened at 2011-07-05 18:36 Message generated for change (Comment added) made by petrp You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=311118&aid=3354485&group_id=11118 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: new feature Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Petr Písař (petrp) Assigned to: Fabian Keil (fabiankeil) Summary: Multiple listen-address implementation Initial Comment: Hello, I found some operating systems does not allow to accept IPv4 client on IPv6 sockets or some system are configured in such manner (like GNU/Debian). Also I think it can be helpful to bind Privoxy to certain addresses only or to more ports. There is similar item #71 on TODO list. My implementation forces to bind to all listed addresses. However it could be possible to adjust it. I performed only few tests so there can be some bugs. I will attach series of 5 patches against latest CVS tree. ---------------------------------------------------------------------- >Comment By: Petr Písař (petrp) Date: 2011-07-13 19:53 Message: Ok, patch 0007-Drop-need_bind-flag-once-any-socket-binds.patch fixes the typo in condition in bind_ports_helper(), patch 0008-Log-listening-on-socket-after-binding.patch moves the `Listening on port...' log message after actual binding as you pointed in last post. ---------------------------------------------------------------------- Comment By: Fabian Keil (fabiankeil) Date: 2011-07-12 18:47 Message: Trying once per address seems to be enough to me. I don't consider it a problem to treat bind failures as fatal issues. Until TODO list items #22 and #23 are implemented I'd actually consider it the best option. The problem I see with #2 is that if bind_port_helper() wouldn't die and if the user specified an address twice (or just used an incorrect one) Privoxy would waste a lot of time trying to bind to it again and again. While we could limit the attempts, I think that would be more magic than necessary and it also wouldn't be consistent with the behavior in case of other configuration issues. Looking at bind_port_helper() some more, I also think it shouldn't log the "Listening on ..." messages unless binding to the address actually worked. I'm aware that it already does that without your patch, though. ---------------------------------------------------------------------- Comment By: Petr Písař (petrp) Date: 2011-07-11 18:01 Message: You are right. Current code does not make sense. Correct fix depends on semantics you want to give to bind_ports_helper(): (1) If you want to drop not-bound sockets and survive with successfully opened ones, your suggestion is correct. (2) If you want to leave possibility to re-bound on next loop cycle, one should pre-set config->need_bind to 0, keep the condition and change conditional assignment to setting 1. The only drawback is current bind_port_helper(), that's called from bind_ports_helper(), dies on any error, thus resolving given problem is just an academic question. I think choosing solution (2) opens way for implementing TODO item #71 more comprehensively. So I vote for it. Actually current implementation dies on reloading wrong configuration which I don't like. I think the daemon, once started, should keep running as long as possible. ---------------------------------------------------------------------- Comment By: Fabian Keil (fabiankeil) Date: 2011-07-10 10:07 Message: I think there may be a logical error in bind_ports_helper(). + if (JB_INVALID_SOCKET == sockets[i]) + { + config->need_bind = 0; + } Shouldn't the condition be JB_INVALID_SOCKET != sockets[i] here? ---------------------------------------------------------------------- Comment By: Fabian Keil (fabiankeil) Date: 2011-07-06 17:53 Message: Thanks a lot for the patches. I'll have a closer look at them this weekend. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=311118&aid=3354485&group_id=11118 |