views:

52

answers:

1

Hello,

My application have an asio server socket that must accept connections from a defined List of IPs.

This filter must be done by the application, (not by the system), because it can change at any time (i must be able to update this list at any time)

The client must receive an acces_denied error.

I suppose when the handle_accept callback is called, SYN/ACK has already be sent, so don't want to accept then close brutally when i detect the connected ip est not allowed. I don't manage the client behavior, maybe it doesn't act the same when the connection is refused and just closed by peer, so i want to do everything clean. (but it's what im soing for the moment)

Do you know how i can do that???

My access list is a container of std::strings (but i can convert it to a countainer of something else....)

Thank you very much

+1  A: 

The async_accept method has an overload to obtain the peer endpoint. You can compare that value inside your async_accept handler. If it does not match an entry in your container, let the socket go out of scope. Otherwise, handle it as required by your appliation.

Sam Miller