Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

boost::asio async_accept Refuse a connection

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

like image 627
MiniScalope Avatar asked Aug 20 '10 11:08

MiniScalope


1 Answers

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.

like image 115
Sam Miller Avatar answered Oct 23 '22 13:10

Sam Miller