Mercurial > prosody-hg
comparison net/server_event.lua @ 5958:451b4649fad2
net/server_event: add_client should have same arguments no-matter the server backend
| author | daurnimator <quae@daurnimator.com> |
|---|---|
| date | Wed, 18 Dec 2013 17:52:28 -0500 |
| parents | bd0ff8ae98a8 |
| children | 27eacbb6e71f |
comparison
equal
deleted
inserted
replaced
| 5957:3c5061d937dd | 5958:451b4649fad2 |
|---|---|
| 742 interface:_start_connection(sslctx) | 742 interface:_start_connection(sslctx) |
| 743 return interface, client | 743 return interface, client |
| 744 --function handleclient( client, ip, port, server, pattern, listener, _, sslctx ) -- creates an client interface | 744 --function handleclient( client, ip, port, server, pattern, listener, _, sslctx ) -- creates an client interface |
| 745 end | 745 end |
| 746 | 746 |
| 747 function addclient( addr, serverport, listener, pattern, localaddr, localport, sslcfg, startssl ) | 747 function addclient( addr, serverport, listener, pattern, sslctx ) |
| 748 if sslctx and not ssl then | |
| 749 debug "need luasec, but not available" | |
| 750 return nil, "luasec not found" | |
| 751 end | |
| 748 local client, err = socket.tcp() -- creating new socket | 752 local client, err = socket.tcp() -- creating new socket |
| 749 if not client then | 753 if not client then |
| 750 debug( "cannot create socket:", err ) | 754 debug( "cannot create socket:", err ) |
| 751 return nil, err | 755 return nil, err |
| 752 end | 756 end |
| 753 client:settimeout( 0 ) -- set nonblocking | 757 client:settimeout( 0 ) -- set nonblocking |
| 754 if localaddr then | |
| 755 local res, err = client:bind( localaddr, localport, -1 ) | |
| 756 if not res then | |
| 757 debug( "cannot bind client:", err ) | |
| 758 return nil, err | |
| 759 end | |
| 760 end | |
| 761 local sslctx | |
| 762 if sslcfg then -- handle ssl/new context | |
| 763 if not ssl then | |
| 764 debug "need luasec, but not available" | |
| 765 return nil, "luasec not found" | |
| 766 end | |
| 767 sslctx, err = sslcfg | |
| 768 if err then | |
| 769 debug( "cannot create new ssl context:", err ) | |
| 770 return nil, err | |
| 771 end | |
| 772 end | |
| 773 local res, err = client:connect( addr, serverport ) -- connect | 758 local res, err = client:connect( addr, serverport ) -- connect |
| 774 if res or ( err == "timeout" ) then | 759 if res or ( err == "timeout" ) then |
| 775 local ip, port = client:getsockname( ) | 760 local ip, port = client:getsockname( ) |
| 776 local interface = wrapclient( client, ip, serverport, listener, pattern, sslctx, startssl ) | 761 local interface = wrapclient( client, ip, serverport, listener, pattern, sslctx ) |
| 777 interface:_start_connection( startssl ) | 762 interface:_start_connection( startssl ) |
| 778 debug( "new connection id:", interface.id ) | 763 debug( "new connection id:", interface.id ) |
| 779 return interface, err | 764 return interface, err |
| 780 else | 765 else |
| 781 debug( "new connection failed:", err ) | 766 debug( "new connection failed:", err ) |
