henri
853aaff586
Manage expiration times via a heap queue.
...
This prevents nsock from iterating over the whole list of events at
each runloop, thus improving performance.
It made it necessary to have pointers from the msevents to the event
lists they belong to. The patch therefore also changes gh_list from
autonomous containers to embedded structures.
Added unit tests accordingly and cosmetic changes to make things look
more consistent.
2013-08-10 23:59:30 +00:00
fyodor
83fb10ec56
Update the Nmap copyright/license files. This isn't the new Nmap Public Source License we've been discussing on the list, but rather just a 'quick patch' to hopefully prevent some of the abuse we've been seeing from companies lately. More details on the changes will be posted to the dev list. Also, the copyright year was updated to 2013 (which is the only change to Nsock license statements).
2013-07-28 22:05:05 +00:00
henri
8ab21a452d
Properly declare the proxy spec structures as extern.
2013-05-13 08:05:31 +00:00
henri
cce3012ac4
Removed designated structure initializers that break
...
compilation with MSVC.
This was reported by Gisle Vanem.
2013-05-02 08:27:20 +00:00
henri
f90d107b40
Added checks to avoid including netdb.h on platforms that don't provide it.
2013-05-01 15:15:57 +00:00
henri
c8f7d4b7ac
Refactored the proxy object model to enforce speration between operations and data.
2013-04-22 19:36:47 +00:00
henri
03ff0651c7
Made proxy handlers return errors to caller when unable to handle proxy replies.
...
Errors are returned internally as -1 * <errno code>.
2013-04-22 19:36:38 +00:00
henri
1780d0a655
Refactored HTTP proxy code to highlight execution flow.
2013-04-22 19:36:22 +00:00
henri
157922dfe0
Replaced proxy_chain->specstr by node->nodestr.
...
The global proxy chain specification string wasn't
used anywhere, and I'd need a string to represent
each node of the chain.
2013-04-22 19:35:59 +00:00
henri
b54590c344
Don't artificially increase timeouts to establish proxy
...
connections. It's now up to the caller to adjust timeout
values accordingly.
2013-04-22 19:35:07 +00:00
henri
4998b3f20a
Updated email addresses in licence terms of the new files.
2013-04-22 19:34:50 +00:00
henri
5906c97ff9
Enfore node=NULL on error.
2013-04-22 19:33:37 +00:00
henri
6e8b30d721
Added support to resolve proxy hostnames.
2013-04-22 19:32:52 +00:00
henri
b7b3b4bd3e
Default port is set to -1 (and not zero) when not specified in proxy specification string.
2013-04-22 19:32:44 +00:00
henri
da1559b237
Replaced a couple macros by corresponding static inline functions.
...
Removed unused PROXY_CTX_NODES() macro.
2013-04-22 19:32:20 +00:00
henri
6c0d537efb
Removed unused http_proxy_info structure.
2013-04-22 19:32:11 +00:00
henri
152490e630
Removed per-node information structures as well as data encoding/decoding
...
interface.
These were unused and I think won't be required by any proxy type (HTTP and
SOCKS).
2013-04-22 19:32:04 +00:00
henri
173adc678b
Implemented a more robust URI parser. Code largely adapted from ncat/http.c.
2013-04-22 19:31:56 +00:00
henri
ba27c10458
Removed the proxy-specific tcp_connect hook.
...
This simplifies the interface that proxies export to the library but also relies
upon the assumption that a proxy chain starts with a TCP connection from the
scanner to the next hop proxy. That will be enough ATM.
2013-04-22 19:31:40 +00:00
henri
4d5bb41361
Added skeletton for having px_info list in each Nsock IOD.
...
When establishing the tunnel through proxy chain, we need to track status of
each proxy (storing R/W buffers, stats, retries...).
This patch lets proxies store and manage whatever structure they want to have
for this in a Nsock IOD. Since types can differ between proxy types, the
proxy_info are stored as a list of void *, ordered like the proxy nodes.
2013-04-22 19:31:30 +00:00
henri
af65c7448f
Removed 'data_' prefixes to encoding/decoding functions to avoid confusion with functions that deal with proxy internal data structures.
2013-04-22 19:31:14 +00:00
henri
5168ff9113
Moved prototypes to nsock_proxy.h
2013-04-22 19:31:06 +00:00
henri
f1a04abd6b
Removed the global ProxyOps list.
...
Each proxy node now provides a pointer to its operations struct.
2013-04-22 19:30:49 +00:00
henri
3451220630
Refactored proxy code to use a "strategy" design pattern.
...
Proxy backends are selected at runtime. Each proxy exports a list of operations
to the rest of the library. This is similar to the way IO engines are
implemented within nsock.
2013-04-22 19:30:40 +00:00