You can do a non-blocking select on a channel prior to l.Accept(). If there is 
a pause message, you do a blocking select on the same channel for an resume or 
finish message. A separate goroutine can send you those messages depending on 
conditions under which you want to pause or resume.

If the above doesn't make sense write a sample program on play.golang.org, 
which does roughly want you want except for pause/resume, and post a link here 
and we can modify it for pause/resume.

> On Jul 21, 2023, at 10:47 PM, David N <danowz...@gmail.com> wrote:
> 
> I've posted this question on stackoverflow 
> <https://stackoverflow.com/questions/76447195/how-to-suspend-and-resume-accepting-new-connections-in-net-listener>,
>  discussed it with some members of the golang community, and I was encouraged 
> to post here.
> 
> Problem: I have a secure application and I want to pause/resume accepting 
> network connections, calling `l.Accept()` blocks the thread, thus you can't 
> pause in a single-thread program. You can use goroutines but that still isn't 
> ideal, as the routine would still accept the connection first and only then 
> can close it if you're in "pause" mode.
> 
> This could be solved by:
> - having a non-blocking, async, `l.Accept()`
> - returning a handle to (accepting) goroutine and killing/re-creating it from 
> main thread
> - accepting connections in a separate process and communicating over a socket
> 
> The 1st one doesn't exist, the 2nd one is not accepted by the language 
> designers, and the 3rd one is unnecessarily complex and prone to break.
> 
> This looks like a shortcoming of golang, is it worth discussing further with 
> lang designers?
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com 
> <mailto:golang-nuts+unsubscr...@googlegroups.com>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/CAN7%3DS7htWfYUQmd3H8GiWoWSaei1qU-FMcpqdyccFkXN1kmsWg%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/golang-nuts/CAN7%3DS7htWfYUQmd3H8GiWoWSaei1qU-FMcpqdyccFkXN1kmsWg%40mail.gmail.com?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/8EF29629-1611-4B38-B096-0F181A0DC1E0%40iitbombay.org.

Reply via email to