Comments (3)
Reason:
The client was closing its connection immediately after opening with the SO_LINGER option
enabled, and a timeout of 0 seconds. This resulted in a RST with no FIN.
So, even if I called peername immediately after accept, with option
{exit_on_close, false} set, it always returned enotconn.
from esockd.
diff --git a/src/esockd_connection_sup.erl b/src/esockd_connection_sup.erl
index 7ac155d..9ec37bf 100644
--- a/src/esockd_connection_sup.erl
+++ b/src/esockd_connection_sup.erl
@@ -140,22 +140,26 @@ handle_call({start_connection, _SockArgs}, _From, State = #state{curr_cli
handle_call({start_connection, SockArgs = {_, Sock, _SockFun}}, _From,
State = #state{mfargs = MFArgs, curr_clients = Count, access_rules = Rules}) ->
- {ok, {Addr, _Port}} = inet:peername(Sock),
- case allowed(Addr, Rules) of
- true ->
- case catch esockd_connection:start_link(SockArgs, MFArgs) of
- {ok, Pid} when is_pid(Pid) ->
- put(Pid, true),
- {reply, {ok, Pid}, State#state{curr_clients = Count+1}};
- ignore ->
- {reply, ignore, State};
- {error, Reason} ->
- {reply, {error, Reason}, State};
- What ->
- {reply, {error, What}, State}
- case inet:peername(Sock) of
- {ok, {Addr, _Port}} ->
- case allowed(Addr, Rules) of
- true ->
- case catch esockd_connection:start_link(SockArgs, MFArgs) of
- {ok, Pid} when is_pid(Pid) ->
- put(Pid, true),
- {reply, {ok, Pid}, State#state{curr_clients = Count+1}};
- ignore ->
- {reply, ignore, State};
- {error, Reason} ->
- {reply, {error, Reason}, State};
- What ->
- {reply, {error, What}, State}
- end;
- false ->
- {reply, {error, fobidden}, State}
end;
- false ->
- {reply, {error, fobidden}, State}
- {error, Reason} ->
- {reply, {error, Reason}, State}
end;
from esockd.
赞
from esockd.
Related Issues (20)
- Building with rebar3 instead of erlang.mk HOT 1
- The Access Rules not works on proxy socket
- Add the esockd:reopen/3 interface
- How do I support both IPv4 and IPv6 connections? HOT 5
- support connection based udp packet content HOT 2
- Can't get peercert subject name in ppv2
- Add more test cases for proxy protocol
- Feature Request: DTLS Support HOT 1
- SSL example seems to be broken - init terminating in do_boot
- test broken HOT 2
- Improve the function specs of esockd_transport module HOT 1
- Add more test cases for esockd_transport:async_send/2 function
- esockd_connection:ack HOT 1
- Rate limiting applied on communication to subscribers HOT 1
- 5.2.1
- esockd as dependency by rebar3 miss .hrl file while release HOT 5
- Improve the esockd_connection_sup: replace process dictionary with map to store connection pid HOT 1
- SSL PSK cipher suite support HOT 2
- Proxy Protocol does not work with ssl HOT 3
- Is esockd_connection_sup a supervisor or a gen_server HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from esockd.