Commit Graph

235 Commits (f3eca53bf54d6bee2ece57b4485855993972cfd1)

Author SHA1 Message Date
Doug Coleman 075a86f5d9 io.sockets.secure: Move some code from secure.unix to secure.openssl. Add a hook for finding sockets to upgrade. 2014-07-07 18:34:41 -07:00
Björn Lindqvist 981ea313a0 openssl: define a startup-hook so that openssl initializes automatically 2014-06-06 14:12:09 -07:00
Doug Coleman 50ca01a4d8 io.sockets.windows: Fix using. 2014-04-23 20:07:32 -07:00
John Benediktsson e3323818cc io.sockets.secure.openssl: disable tests for now. 2014-04-22 08:16:53 -07:00
John Benediktsson 06912460b4 io.sockets.secure.openssl: use must-fail-with. 2014-04-22 07:41:23 -07:00
John Benediktsson 6f87c2afc7 io.sockets: use must-fail-with for resolve-host errors. 2014-04-20 10:02:04 -07:00
John Benediktsson 24cb41aa13 io.sockets: don't need "0 or" for addrinfo. 2014-04-20 09:30:03 -07:00
Björn Lindqvist e1206d5ef1 io.sockets: add word addrinfo-error to signal host lookup failures
If the getaddrinfo call fails, and you want to handle that failure in
a structured way, then you need a designated error type to know what
went wrong.
2014-04-20 09:29:31 -07:00
Björn Lindqvist 516ffcc311 io.sockets.secure.openssl.tests: more and better SSL_connect tests
Better error handling so it should be easier to see why the tests fail
on the build server (#1036).
2014-04-18 10:06:46 -07:00
Björn Lindqvist df3417c5b7 io.sockets.secure.openssl: more docs 2014-04-18 10:06:46 -07:00
Björn Lindqvist e473ef628d io.sockets.secure.openssl: big refactoring, all error handling merged into one check-ssl-error word 2014-04-18 10:06:46 -07:00
Björn Lindqvist a3eba146fd io.sockets: example for the with-socket function 2014-04-14 08:42:09 -07:00
Björn Lindqvist b79bd45908 io.sockets: example for resolve-host 2014-04-14 08:42:08 -07:00
Doug Coleman d123f589f7 io.sockets.secure.openssl: Check error code in unit test. 2014-04-08 12:08:58 -07:00
Doug Coleman a02e8e3cda io.sockets.secure.openssl: Fix using list. 2014-04-02 23:11:52 -05:00
Björn Lindqvist ee19a97869 io.sockets.windows: wrap ioctlsocket and related constants to enable
setting sockets in non-blocking mode
2014-04-02 16:50:20 -05:00
Björn Lindqvist f8387a08ae Merge:
io.sockets.secure.windows: use non-blocking sockets to prevent
SSL_connect from blocking

On Windows, SSL_connect may hang forever if the server doesn't send any
data. To counteract that we temporarily set the socket non-blocking and
then call select in the wait-for-fd method.

Conflicts:
	basis/io/sockets/secure/openssl/openssl-tests.factor
2014-04-02 12:16:51 -05:00
Björn Lindqvist 4d8f3e8a78 io.sockets.secure.openssl: do-ssl-connect needs to call wait-for-fd 2014-04-02 12:13:21 -05:00
Björn Lindqvist eaca04de3b libc: several vocabs now need to depend on libc 2014-04-02 12:13:00 -05:00
Björn Lindqvist 753b2f0177 io.files: make wait-for-fd generic and dispatch depending on backend
do-ssl-accept need to call wait-for-fd so it needs to be generic. On
windows it's a noop but on unix it will wait for the fd.
2014-04-02 12:12:49 -05:00
Björn Lindqvist 6421af3401 io.sockets.secure.*: unification of lots of platform-independent code
Code that is duplicated in the backends moved to
io.sockets.secure.openssl. The wait-for-fd verb used by do-ssl-accept
doesn't have any equivalent on Windows so that needs to be
implemented.
2014-04-02 12:12:37 -05:00
Björn Lindqvist 5f38df7741 io.sockets.secure.windows: reading and writing from ssl sockets
Unified the drain and refill generics and put their definition in
io.files. They are now used by both the windows and unix ssl backend
for io. Windows ssl kind of works now, but the error cases are not
implemented correctly.
2014-04-02 12:12:14 -05:00
Björn Lindqvist 6ed3a09b5d io.sockets.secure: new hook variable ssl-certificate-verification-supported?
t if the backend is able to verify certificates, f
otherwise. Currently certificate validation isn't implemented on Windows
2014-04-02 12:11:53 -05:00
John Benediktsson 0a2fef0775 io.sockets: change protocol-port to handle ``f`` on all platforms. 2014-03-12 07:27:39 -07:00
Björn Lindqvist 39b13b6736 io.sockets.secure.openssl: guard against SSL_get_peer_certificate returning null 2014-03-06 18:41:37 +01:00
Doug Coleman a71e2d8060 io.sockets.secure.openssl: Fix docs. 2013-11-28 12:59:36 -06:00
John Benediktsson 53592b9c7d io.sockets.secure.windows: add platforms.txt. 2013-11-16 16:20:34 -08:00
Doug Coleman 4bcb356ba8 io.sockets.secure.openssl: libssl error is opaque, check that cert files
exist in Factor beforehand so we can get a nicer error message.
Add missing USE: and neaten up the list.
2013-11-16 15:59:31 -08:00
Björn Lindqvist 5f2238f7d4 io.sockets.secure.windows: secure socket implementation for windows, it works reasonably but certificate validation is not working correctly yet 2013-10-11 10:23:40 -07:00
Björn Lindqvist 729bd8a362 io.sockets.secure.openssl.tests: remove windows.winsock import and another test for subject-name 2013-10-11 10:23:40 -07:00
Björn Lindqvist ad627a1395 openssl.libssl: on windows the X509_* family of functions is in a
different dll than the other functions in libssl
2013-10-11 10:23:40 -07:00
Björn Lindqvist bc56b5099f io.sockets, urls: move documentation for protocol-port 2013-09-16 17:31:37 -07:00
Björn Lindqvist 7c179f876c unix.ffi, windows.winsock: wraps for servent functions 2013-09-16 17:31:37 -07:00
John Benediktsson 32b07016b0 io.sockets.secure.openssl: some style improvements. 2013-09-16 17:24:31 -07:00
Björn Lindqvist 44a1d61bd4 io.sockets.secure: common-name -> subject-name 2013-09-16 17:17:48 -07:00
Björn Lindqvist c2fd5031e0 io.sockets.secure, io.sockets.secure.openssl: improved host name verification that takes into account a certificates subject alternative names. 2013-09-16 17:17:48 -07:00
Björn Lindqvist f4f60b8ba3 io.sockets.secure.openssl: support for getting issuer name 2013-09-16 17:17:47 -07:00
Doug Coleman bcc86baf45 io.sockets: Minor cleanup. 2012-08-26 00:04:53 -07:00
Doug Coleman 30673f65cf io.ports: More correct memory handling. There are still leaks in the tests... 2012-08-25 19:44:22 -07:00
John Benediktsson 8343c88f4d io.sockets: fix stack effect names. 2012-08-02 14:49:50 -07:00
John Benediktsson 2398580eb8 io.sockets.secure.unix.debug: move to io.sockets.secure.debug (not unix specific). 2012-07-19 19:17:52 -07:00
Doug Coleman 1da8666a70 io.sockets.unix: Needs to still use namespaces. Clean up using lists. 2012-07-19 00:53:09 -07:00
Doug Coleman 42f4dc36b2 namespaces: Rename ``bind`` to ``with-variables``. Update a few places that called ``global [ ] with-variables`` to use ``with-global``. 2012-07-19 00:02:47 -07:00
John Benediktsson 5cc30f46f5 using if-zero in more places. 2012-07-16 15:45:21 -07:00
John Benediktsson f53f6993ec io.sockets: fix stack effect for <broadcast>. 2012-05-29 15:47:15 -07:00
John Benediktsson 2db76ac23c io.sockets.windows: get the handle from the handle. 2012-05-29 11:20:55 -07:00
John Benediktsson 51fcae2d8b io.sockets: adding "broadcast port", ideally would just be +broadcast+ or something, but this works. 2012-05-29 10:46:19 -07:00
Doug Coleman 3507b9bad7 classes:
- Allow methods to dispatch off union{ } and intersection{ } classes.
- Add not{ } anonymous-complement syntax.
- Define class-name for anonymous-union/intersection/complement and maybes, and clean up pprint.
- Change maybe: foo to maybe{ foo }
- Call sort-classes when making anonymous-union/anonymous-intersection classes so that they are canonicalized.
2012-05-03 19:45:30 -07:00
Joe Groff 255d024e51 io.sockets: remove unneeded USING: values 2011-11-29 09:46:51 -08:00
Joe Groff 943596575a use radix literals 2011-11-23 19:03:40 -08:00
Doug Coleman 067f9830ef classes.union: Define a maybe: word that makes a tuple that acts as an anonymous union for a type and f. Updated all the places we define UNION: ?foo foo POSTPONE: f ;. Fixes #416 and lots of headaches. 2011-11-22 01:56:13 -08:00
Joe Groff 1c99568492 io.sockets.windows: plug receive-from memory leak
Should fix #387.
2011-11-11 17:56:04 -08:00
Doug Coleman 94db86a6db Make "foo.private" require load foo instead.
Move require from vocabs.loader to vocabs. Update everything.
Fixes #201.
2011-11-02 11:50:03 -07:00
Doug Coleman 51c033a1f6 Fix all failures in the linux64 build email 2011-10-24 19:33:09 -07:00
Doug Coleman f9257959fd Rename class to class-of 2011-10-24 06:47:42 -05:00
John Benediktsson fb2aab3545 Remove unused words. Fixes #132. 2011-10-19 11:01:16 -07:00
Doug Coleman 24a6895436 io.sockets.windows - Add a using, output count to fix compile error. Not bad for having no Windows box. 2011-10-17 23:28:22 -07:00
Joe Groff 90e1002349 io.sockets: rename (receive) to (receive-unsafe) 2011-10-17 21:23:37 -07:00
Joe Groff 68621c4d79 io.sockets.windows: recv to byte-array via malloc
WSARecvFrom on Windows does its work asynchronously, so the buffer cannot be in the managed heap during the extent of the operation.
2011-10-17 21:23:36 -07:00
Joe Groff 8fc0be3c2f io.sockets: remove unix.ffi inserted by auto-use 2011-10-17 21:23:36 -07:00
Joe Groff 5d0ff43613 io.sockets: receive directly into byte array 2011-10-17 21:23:11 -07:00
Joe Groff 20e49c273f io.sockets: receive-unsafe and receive-into
Analogous to read-unsafe/read-into for streams (and thereby TCP sockets), provide receive-unsafe and receive-into words for datagram sockets that receive into a caller-supplied buffer.
2011-10-17 21:23:11 -07:00
Doug Coleman e255e9f1cb Fix typo on datagram docs 2011-09-26 12:27:37 -07:00
Doug Coleman bf2a96e9e0 Remove Windows CE from core/ basis/ and build-support/
Rename the winnt singleton to windows in core/ basis/ extra/
Rename boot images winnt -> windows
Fixes #84.
2011-09-18 23:19:06 -05:00
John Benediktsson 9f34c9c676 Spelling fixes to documentation. 2011-08-26 16:20:31 -07:00
Doug Coleman 4d38a02316 Revert "Try to read instead of write from a TCP connection. This gives 'Connection refused' instead of 'Broken pipe', which is much more useful."
This reverts commit 088c367b77.
2011-08-26 13:55:52 -05:00
Doug Coleman b7314a68d8 Try to read instead of write from a TCP connection. This gives 'Connection refused' instead of 'Broken pipe', which is much more useful. 2011-08-26 11:03:01 -05:00
John Benediktsson d7d1b6fea1 io.sockets: check ipv4 and ipv6 for valid address strings. 2011-08-19 14:19:09 -07:00
Slava Pestov db29973ccb io.sockets: fix unit test on Windows 2011-02-27 14:38:47 -08:00
Slava Pestov 266c6d32e7 io.sockets: add scope-id to ipv6 addrspecs, fixing a problem with connecting to localhost on Mac OS X (and other systems) where localhost is associated with a link-local address such as fe80::1 2011-02-25 22:33:28 -08:00
Slava Pestov 78a85d0b05 io.sockets.secure.unix: update unit test for close-notify change 2011-02-25 21:05:56 -08:00
Keita Haga 2696c59aab io.sockets: fix a few typos in docs 2011-02-06 17:40:03 +09:00
Slava Pestov 4270c6cce6 io.sockets.secure.unix: fix socket shutdown handling to make http.client work with https://www.google.com 2011-01-31 23:45:45 -05:00
Slava Pestov cc06c4e51f openssl: remove cacert.pem, since its useless and we should call SSL_CTX_set_default_verify_paths instead 2011-01-29 23:26:29 -05:00
Slava Pestov 75560699ea Move <ref>, deref and little-endian? from alien.c-types to alien.data, remove <c-object> 2010-12-25 16:55:36 -08:00
Doug Coleman 4ca9bd0bba Remove usages of <void*> and *void* 2010-10-25 13:22:50 -05:00
Doug Coleman 1f57dc326e Remove many uses of <int> and *int etc 2010-10-25 12:49:12 -05:00
Slava Pestov b10897334c io.sockets.secure: add ssl-supported? hook, and make furnace.auth and twitter vocabs use it. This makes furnace work on Windows 2010-10-24 15:54:19 -07:00
Doug Coleman 7367ff19c4 Add a method on url-addr for local ports
Remove test for code that got reverted
2010-10-08 08:42:19 -07:00
Slava Pestov 89ae9d9638 Various cleanups for Doug's recent socket addressing change
- urls: now have a host/port slots again, add a new set-url-addr word
- http.server: fix host header parsing for IPv6 addresses
2010-10-06 23:00:38 -07:00
Doug Coleman 32f447d796 Since ip4/ip6 services can run on different ports, we must include which version of ip we're using instead of just a port. Make URL objects store an inet4/i nt6/inet object with host/port slots instead of storing host/port slots separately. Stricter error checking on inet4/inet6 tuple creation. Update lots of code related to the URL change. 2010-10-05 09:56:29 -05:00
Doug Coleman 0bbfa64b24 Squashed commit of the following:
commit 54b3e19c7407707fabddd53872559c58cd5143d2
Author: Doug Coleman <doug.coleman@gmail.com>
Date:   Mon Sep 27 19:10:15 2010 -0500

    Fix typo

commit 3207516dc93e0e1edc9f119efcc79f4484eab244
Author: Doug Coleman <doug.coleman@gmail.com>
Date:   Mon Sep 27 19:08:30 2010 -0500

    Rename io.servers.connection to io.servers
2010-09-27 19:12:33 -05:00
Slava Pestov 2fb36ea1c5 io.sockets: minor cleanup 2010-09-24 01:17:33 -07:00
Doug Coleman a2a598546f Only return ipv4 addresses for binding to on linux. 2010-09-23 13:20:18 -05:00
Doug Coleman 8d3cb0d596 Remove test for icmp sockets since extra/ping implicitly tests this 2010-09-22 00:55:18 -05:00
Doug Coleman 2c42e616b4 Implement a raw port. Make ping only run on Windows and Mac because the other platforms require root privs. 2010-09-21 22:00:18 -05:00
Doug Coleman a60afaf0ec Use SOCK_RAW for ICMP sockets on windows 2010-09-21 20:03:48 -05:00
Doug Coleman 7b0a50e7d2 Squashed commit of the following:
commit 90deaafa9db083ecdb9e0e30ad3694317e616399
Merge: f392dfd 32cf7bb
Author: Doug Coleman <doug.coleman@gmail.com>
Date:   Tue Sep 21 00:33:37 2010 -0500

    Merge branch 'icmp-ping' of git://github.com/mrjbq7/factor into icmp-ping2

commit 32cf7bb0e0b876309bce248944dfeca243f02594
Author: John Benediktsson <mrjbq7@gmail.com>
Date:   Fri Sep 10 14:01:47 2010 -0700

    ping: Adding a simple IPv4 ping implementation.

commit da0c5ce7acf1407256c3ac2b98ac5b68858878c1
Author: John Benediktsson <mrjbq7@gmail.com>
Date:   Fri Sep 10 14:01:15 2010 -0700

    io.sockets.icmp: Adding ICMP support.

commit 60fdf7e7d995d63c11be87e8e1398f7bdd593833
Author: John Benediktsson <mrjbq7@gmail.com>
Date:   Fri Sep 10 14:00:48 2010 -0700

    io.sockets: Adding protocol support for sockets.

commit 2f130f1f9e0e2ea44d798beaad244a9c33b0d86a
Author: John Benediktsson <mrjbq7@gmail.com>
Date:   Fri Sep 10 14:00:28 2010 -0700

    Adding getprotobyname().
2010-09-21 11:15:33 -05:00
Doug Coleman 140aa80379 Don't try to use ipv6 addresses if an OS can't bind to them 2010-09-20 23:53:18 -05:00
Doug Coleman 8aa22487da Fix io.servers -- if it doesn't start up, don't throw an error when it's stopped. IPV6 must be enabled on windows with the command: ipv6 install (the build machines need this before we get clean windows builds). Fix up winsock error handling. 2010-09-19 21:35:52 -05:00
Doug Coleman fd502e2c85 Fix using list 2010-09-19 19:14:56 -05:00
Doug Coleman f791c8c5d2 Squashed commit of the following:
commit 197dbe9a6733775ac0ea19b3da4bd4dc3c85418c
Author: Doug Coleman <doug.coleman@gmail.com>
Date:   Sat Sep 18 19:01:38 2010 -0500

    Fix bootstrap, move privileges to windows.privileges

commit 521c622f8afb15bf42d263c738cb990560dc29cb
Author: Doug Coleman <doug.coleman@gmail.com>
Date:   Sat Sep 18 18:26:30 2010 -0500

    Hopefully fix bootstrap

commit eb3f22928b59758b9505430034044b5b94705da2
Author: Doug Coleman <doug.coleman@gmail.com>
Date:   Sat Sep 18 18:19:05 2010 -0500

    Remove wince from factor codebase

commit 619d6c99415f46208a7ede6a04b0ccda46b15360
Author: Doug Coleman <doug.coleman@gmail.com>
Date:   Sat Sep 18 16:07:46 2010 -0500

    Remove Windows CE from vm/
2010-09-19 19:13:25 -05:00
Doug Coleman 7122f9fccb Make sure io.backend.windows loads the implementations for the generics it defines. Make windows.handles not depend on io.timeouts. Fix typo in win32-file-attributes. Fix bug in null-output word. Clean up error checking code. 2010-09-17 14:19:10 -05:00
Doug Coleman 5c8316be07 Move win32-handle to windows.handles and update using lists to avoid pulling in the io backend where not necessary 2010-09-16 15:40:36 -05:00
Slava Pestov afbf4e9cb2 io.sockets: make addrspecs immutable 2010-09-04 18:49:27 -07:00
Slava Pestov aa2f5ae13f io.sockets: f 0 <inet4> should work 2010-09-04 15:41:12 -07:00
Slava Pestov 4fc792629e io.sockets: clean up resolve-host 2010-09-04 14:42:05 -07:00
Slava Pestov 3d461046f0 io.sockets: factor out ipv4 and ipv6 classes for John Benediktsson's upcoming ICMP work) 2010-09-04 14:19:20 -07:00
Slava Pestov cbb9ff61fb io.sockets.windows: win32-socket instances were not being unregistered from global disposables hash; also check return value of closesocket 2010-08-15 00:05:27 -05:00
Slava Pestov 446ee6896d alien.data: remove second quotation parameter from with-out-parameters, now all values are copied properly and calling 'clone' on structs in this quotation is not necessary 2010-07-16 17:32:05 -04:00