Skip to content

Commit

Permalink
seds_proxy: code tetris to pattern match
Browse files Browse the repository at this point in the history
  • Loading branch information
msantos committed Mar 14, 2015
1 parent efc2269 commit cd8fdc7
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions src/seds_proxy.erl
Expand Up @@ -158,16 +158,16 @@ connect(timeout, #state{ip = IP, port = Port} = State) ->

% client sent data to be forwarded to server
proxy({up, IP, Port, Rec, ClientSum, Data}, #state{
sum_up = Sum,
sum_up = ClientSum,
dnsfd = DNSSocket,
s = Socket
} = State) when ClientSum =:= Sum ->
} = State) ->
Payload = base32:decode(string:to_upper(Data)),
Sum1 = Sum + length(Payload),
Reply = seds_protocol:encode(seq(Sum), Rec),
Sum = ClientSum + length(Payload),
Reply = seds_protocol:encode(seq(ClientSum), Rec),
ok = gen_tcp:send(Socket, Payload),
ok = gen_udp:send(DNSSocket, IP, Port, Reply),
{next_state, proxy, State#state{sum_up = Sum1}, ?PROXY_TIMEOUT};
{next_state, proxy, State#state{sum_up = Sum}, ?PROXY_TIMEOUT};
proxy({up, IP, Port, Rec, ClientSum, _Data}, #state{
sum_up = Sum,
dnsfd = DNSSocket
Expand All @@ -186,17 +186,17 @@ proxy({down, IP, Port,
type = Type
}|_]} = Rec, ClientSum},
#state{
sum_down = Sum,
sum_down = ClientSum,
dnsfd = DNSSocket,
s = Socket,
data = Data
} = State) when ClientSum =:= Sum ->
} = State) ->
{Payload, Size, Rest} = seds_protocol:data(Type, Data),
Reply = seds_protocol:encode(Payload, Rec),
ok = inet:setopts(Socket, [{active, true}]),
ok = gen_udp:send(DNSSocket, IP, Port, Reply),
{next_state, proxy, State#state{
sum_down = Sum + Size,
sum_down = ClientSum + Size,
data = [Rest],
buf = Data
}, ?PROXY_TIMEOUT};
Expand Down

0 comments on commit cd8fdc7

Please sign in to comment.