Qore Programming Language Reference Manual  0.9.4
QC_Socket.dox.h
1 
3 namespace Qore {
5 
123 class Socket {
124 
125 public:
127 
141 Socket accept();
142 
143 public:
145 
161 *Socket accept(timeout timeout_ms);
162 
163 public:
165 
181  acceptAllCertificates(bool accept_all = True);
182 
183 public:
185 
199 Socket acceptSSL();
200 
201 public:
203 
219 *Socket acceptSSL(timeout timeout_ms);
220 
221 public:
223 
243 int bind(string str, softbool reuseaddr = False);
244 
245 public:
247 
261 int bind(int port, softbool reuseaddr = False);
262 
263 public:
265 
293 nothing bindINET(*string iface, *softstring service, softbool reuseaddr = False, softint family = AF_UNSPEC, softint socktype = SOCK_STREAM, softint protocol = 0);
294 
295 public:
297 
313 nothing bindUNIX(string path, softint socktype = SOCK_STREAM, softint protocol = 0);
314 
315 public:
317 
330 bool captureRemoteCertificates(bool set = True);
331 
332 public:
334 
343  clearStats();
344 
345 public:
347 
356 nothing clearWarningQueue();
357 
358 public:
360 
373 int close();
374 
375 public:
377 
402 nothing connect(string target, timeout timeout_ms = -1);
403 
404 public:
406 
430 nothing connectINET(string host, softstring service, timeout timeout_ms = -1, softint family = AF_UNSPEC, softint socktype = SOCK_STREAM, softint protocol = 0);
431 
432 public:
434 
459 nothing connectINETSSL(string host, softstring service, timeout timeout_ms = -1, softint family = AF_UNSPEC, softint socktype = SOCK_STREAM, softint protocol = 0);
460 
461 public:
463 
491 nothing connectSSL(string target, timeout timeout_ms = -1);
492 
493 public:
495 
514 nothing connectUNIX(string path, softint socktype = SOCK_STREAM, softint protocol = 0);
515 
516 public:
518 
538 nothing connectUNIXSSL(string path, softint socktype = SOCK_STREAM, softint protocol = 0);
539 
540 public:
542 
545  constructor();
546 
547 public:
549 
552  copy();
553 
554 public:
556 
574 
575 public:
577 
583 string getCharset();
584 
585 public:
587 
601 int getConnectionId();
602 
603 public:
605 
610 string getEncoding();
611 
612 public:
614 
626 bool getNoDelay();
627 
628 public:
630 
646 hash<auto> getPeerInfo(bool host_lookup = True);
647 
648 public:
650 
660 int getPort();
661 
662 public:
664 
674 int getRecvTimeout();
675 
676 public:
678 
690 
691 public:
693 
703 *string getSSLCipherName();
704 
705 public:
707 
717 *string getSSLCipherVersion();
718 
719 public:
721 
731 int getSendTimeout();
732 
733 public:
735 
745 int getSocket();
746 
747 public:
749 
765 hash<auto> getSocketInfo(bool host_lookup = True);
766 
767 public:
769 
786 int getSslVerifyMode();
787 
788 public:
790 
811 hash<auto> getUsageInfo();
812 
813 public:
815 
829 bool isDataAvailable(timeout timeout_ms = 0);
830 
831 public:
833 
843 bool isOpen();
844 
845 public:
847 
857 bool isSecure();
858 
859 public:
861 
875 bool isWriteFinished(timeout timeout_ms = 0);
876 
877 public:
879 
892 int listen(int backlog = 20);
893 
894 public:
896 
904 
905 public:
907 
928 hash<auto> readHTTPChunkedBody(timeout timeout_ms = -1);
929 
930 public:
932 
953 hash<auto> readHTTPChunkedBodyBinary(timeout timeout_ms = -1);
954 
955 public:
957 
985  readHTTPChunkedBodyBinaryWithCallback(code rcb, timeout timeout_ms = -1);
986 
987 public:
989 
1011 hash<auto> readHTTPChunkedBodyToOutputStream(Qore::OutputStream os, timeout timeout_ms = -1);
1012 
1013 public:
1015 
1043  readHTTPChunkedBodyWithCallback(code rcb, timeout timeout_ms = -1);
1044 
1045 public:
1047 
1094 hash<auto> readHTTPHeader(timeout timeout_ms = -1, *reference<hash<auto>> info);
1095 
1096 public:
1098 
1121 string readHTTPHeaderString(timeout timeout_ms = -1);
1122 
1123 public:
1125 
1150 string recv(softint size = 0, timeout timeout_ms = -1);
1151 
1152 public:
1154 
1177 binary recvBinary(softint size = 0, timeout timeout_ms = -1);
1178 
1179 public:
1181 
1204 nothing recvToOutputStream(Qore::OutputStream os, softint size = -1, timeout timeout_ms = -1);
1205 
1206 public:
1208 
1230 int recvi1(timeout timeout_ms = -1);
1231 
1232 public:
1234 
1256 int recvi2(timeout timeout_ms = -1);
1257 
1258 public:
1260 
1282 int recvi2LSB(timeout timeout_ms = -1);
1283 
1284 public:
1286 
1308 int recvi4(timeout timeout_ms = -1);
1309 
1310 public:
1312 
1334 int recvi4LSB(timeout timeout_ms = -1);
1335 
1336 public:
1338 
1360 int recvi8(timeout timeout_ms = -1);
1361 
1362 public:
1364 
1386 int recvi8LSB(timeout timeout_ms = -1);
1387 
1388 public:
1390 
1412 int recvu1(timeout timeout_ms = -1);
1413 
1414 public:
1416 
1438 int recvu2(timeout timeout_ms = -1);
1439 
1440 public:
1442 
1464 int recvu2LSB(timeout timeout_ms = -1);
1465 
1466 public:
1468 
1490 int recvu4(timeout timeout_ms = -1);
1491 
1492 public:
1494 
1516 int recvu4LSB(timeout timeout_ms = -1);
1517 
1518 public:
1520 
1546 int send(binary bin, timeout timeout_ms = -1);
1547 
1548 public:
1550 
1578 int send(string str, timeout timeout_ms = -1);
1579 
1580 public:
1582 
1605 nothing send2(binary bin, timeout timeout_ms = -1);
1606 
1607 public:
1609 
1634 nothing send2(string str, timeout timeout_ms = -1);
1635 
1636 public:
1638 
1663 int sendBinary(string str, timeout timeout_ms = -1);
1664 
1665 public:
1667 
1692 int sendBinary(binary bin, timeout timeout_ms = -1);
1693 
1694 public:
1696 
1718 nothing sendBinary2(string str, timeout timeout_ms = -1);
1719 
1720 public:
1722 
1744 nothing sendBinary2(binary bin, timeout timeout_ms = -1);
1745 
1746 public:
1748 
1769 nothing sendFromInputStream(Qore::InputStream input_stream, softint size = -1, timeout timeout_ms = -1);
1770 
1771 public:
1773 
1804 nothing sendHTTPChunkedBodyFromInputStream(Qore::InputStream input_stream, int max_chunk_size = 4096, timeout timeout_ms = -1, *code tcb);
1805 
1806 public:
1808 
1831 nothing sendHTTPChunkedBodyTrailer(*hash<auto> trailer, timeout timeout_ms = -1);
1832 
1833 public:
1835 
1870 nothing sendHTTPMessage(string method, string path, string http_version, hash<auto> headers, string body, *reference<hash> info, timeout timeout_ms = -1);
1871 
1872 public:
1874 
1906 nothing sendHTTPMessage(string method, string path, string http_version, hash<auto> headers, *binary body, *reference<hash<auto>> info, timeout timeout_ms = -1);
1907 
1908 public:
1910 
1938 nothing sendHTTPMessageWithCallback(code scb, string method, string path, string http_version, hash<auto> headers, *reference<hash<auto>> info, timeout timeout_ms = -1);
1939 
1940 public:
1942 
1966 nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash<auto> headers, string body, timeout timeout_ms = -1);
1967 
1968 public:
1970 
2008 nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash<auto> headers, string body, *reference<hash<auto>> info, timeout timeout_ms = -1);
2009 
2010 public:
2012 
2041 nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash<auto> headers, *binary body, timeout timeout_ms = -1);
2042 
2043 public:
2045 
2079 nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash<auto> headers, *binary body, *reference<hash<auto>> info, timeout timeout_ms = -1);
2080 
2081 public:
2083 
2125 nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash<auto> headers, Qore::InputStream input_stream, int max_chunk_size = 4096, *reference<hash<auto>> info, timeout timeout_ms = -1, *code tcb);
2126 
2127 public:
2129 
2164 nothing sendHTTPResponseWithCallback(code scb, softint status_code, string status_desc, string http_version, hash<auto> headers, timeout timeout_ms = -1);
2165 
2166 public:
2168 
2206 nothing sendHTTPResponseWithCallback(code scb, softint status_code, string status_desc, string http_version, hash<auto> headers, *reference<hash<auto>> info, timeout timeout_ms = -1);
2207 
2208 public:
2210 
2233 int sendi1(softint i = 0, timeout timeout_ms = -1);
2234 
2235 public:
2237 
2260 int sendi2(softint i = 0, timeout timeout_ms = -1);
2261 
2262 public:
2264 
2287 int sendi2LSB(softint i = 0, timeout timeout_ms = -1);
2288 
2289 public:
2291 
2314 int sendi4(softint i = 0, timeout timeout_ms = -1);
2315 
2316 public:
2318 
2341 int sendi4LSB(softint i = 0, timeout timeout_ms = -1);
2342 
2343 public:
2345 
2368 int sendi8(softint i = 0, timeout timeout_ms = -1);
2369 
2370 public:
2372 
2395 int sendi8LSB(softint i = 0, timeout timeout_ms = -1);
2396 
2397 public:
2399 
2406 nothing setCertificate(SSLCertificate cert);
2407 
2408 public:
2410 
2417 nothing setCertificate(string cert_pem);
2418 
2419 public:
2421 
2428 nothing setCertificate(binary cert_der);
2429 
2430 public:
2432 
2435 nothing setCharset(string encoding);
2436 
2437 public:
2439 
2441 nothing setEncoding(string encoding);
2442 
2443 public:
2445 
2452 nothing setEventQueue();
2453 
2454 public:
2456 
2472 nothing setEventQueue(Qore::Thread::Queue queue, auto arg, *bool with_data);
2473 
2474 public:
2476 
2494 int setNoDelay(bool nd = True);
2495 
2496 public:
2498 
2505 nothing setPrivateKey(SSLPrivateKey key);
2506 
2507 public:
2509 
2517 nothing setPrivateKey(string key_pem, *string pass);
2518 
2519 public:
2521 
2528 nothing setPrivateKey(binary key_der);
2529 
2530 public:
2532 
2544 int setRecvTimeout(timeout timeout_ms);
2545 
2546 public:
2548 
2560 int setSendTimeout(timeout timeout_ms);
2561 
2562 public:
2564 
2581  setSslVerifyMode(int mode);
2582 
2583 public:
2585 
2617 nothing setWarningQueue(int warning_ms, int warning_bs, Queue queue, auto arg, timeout min_ms = 1s);
2618 
2619 public:
2621 
2631 int shutdown();
2632 
2633 public:
2635 
2644 nothing shutdownSSL();
2645 
2646 public:
2648 
2662 nothing upgradeClientToSSL(timeout timeout_ms = -1);
2663 
2664 public:
2666 
2680 nothing upgradeServerToSSL(timeout timeout_ms = -1);
2681 
2682 public:
2684 
2694 *string verifyPeerCertificate();
2695 };
2702 
2715 
2727 
2736 
2761  const X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH = "X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH";
2764  const X509_V_ERR_AKID_SKID_MISMATCH = "X509_V_ERR_AKID_SKID_MISMATCH";
2766  const X509_V_ERR_APPLICATION_VERIFICATION = "X509_V_ERR_APPLICATION_VERIFICATION";
2768  const X509_V_ERR_CERT_CHAIN_TOO_LONG = "X509_V_ERR_CERT_CHAIN_TOO_LONG";
2770  const X509_V_ERR_CERT_HAS_EXPIRED = "X509_V_ERR_CERT_HAS_EXPIRED";
2772  const X509_V_ERR_CERT_NOT_YET_VALID = "X509_V_ERR_CERT_NOT_YET_VALID";
2774  const X509_V_ERR_CERT_REJECTED = "X509_V_ERR_CERT_REJECTED";
2776  const X509_V_ERR_CERT_REVOKED = "X509_V_ERR_CERT_REVOKED";
2778  const X509_V_ERR_CERT_SIGNATURE_FAILURE = "X509_V_ERR_CERT_SIGNATURE_FAILURE";
2780  const X509_V_ERR_CERT_UNTRUSTED = "X509_V_ERR_CERT_UNTRUSTED";
2782  const X509_V_ERR_CRL_HAS_EXPIRED = "X509_V_ERR_CRL_HAS_EXPIRED";
2784  const X509_V_ERR_CRL_NOT_YET_VALID = "X509_V_ERR_CRL_NOT_YET_VALID";
2786  const X509_V_ERR_CRL_SIGNATURE_FAILURE = "X509_V_ERR_CRL_SIGNATURE_FAILURE";
2788  const X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT = "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT";
2790  const X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD = "X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD";
2792  const X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD = "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD";
2794  const X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD = "X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD";
2796  const X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = "X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD";
2798  const X509_V_ERR_INVALID_CA = "X509_V_ERR_INVALID_CA";
2800  const X509_V_ERR_INVALID_PURPOSE = "X509_V_ERR_INVALID_PURPOSE";
2802  const X509_V_ERR_KEYUSAGE_NO_CERTSIGN = "X509_V_ERR_KEYUSAGE_NO_CERTSIGN";
2804  const X509_V_ERR_OUT_OF_MEM = "X509_V_ERR_OUT_OF_MEM";
2806  const X509_V_ERR_PATH_LENGTH_EXCEEDED = "X509_V_ERR_PATH_LENGTH_EXCEEDED";
2808  const X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN = "X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN";
2810  const X509_V_ERR_SUBJECT_ISSUER_MISMATCH = "X509_V_ERR_SUBJECT_ISSUER_MISMATCH";
2812  const X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY = "X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY";
2814  const X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE = "X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE";
2816  const X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE = "X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE";
2818  const X509_V_ERR_UNABLE_TO_GET_CRL = "X509_V_ERR_UNABLE_TO_GET_CRL";
2820  const X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT";
2822  const X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY";
2824  const X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE = "X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE";
2826  const X509_V_OK = "X509_V_OK";
2829  "X509_V_OK": "OK",
2830  "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT": "Unable to get issuer certificate",
2831  "X509_V_ERR_UNABLE_TO_GET_CRL": "Unable to get certificate CRL",
2832  "X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE": "Unable to decrypt certificate's signature. This means that the actual signature value could not be determined rather than it not matching the expected value; this is only meaningful for RSA",
2833  "X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE": "Unable to decrypt CRL's signature",
2834  "X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY": "Unable to decode issuer public key (SubjectPublicKeyInfo)",
2835  "X509_V_ERR_CERT_SIGNATURE_FAILURE": "Certificate signature failure; the signature of the certificate is invalid",
2836  "X509_V_ERR_CRL_SIGNATURE_FAILURE": "CRL signature failure; the signature of the certificate is invalid",
2837  "X509_V_ERR_CERT_NOT_YET_VALID": "Certificate is not yet valid",
2838  "X509_V_ERR_CERT_HAS_EXPIRED": "Certificate has expired",
2839  "X509_V_ERR_CRL_NOT_YET_VALID": "CRL is not yet valid",
2840  "X509_V_ERR_CRL_HAS_EXPIRED": "CRL has expired",
2841  "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD": "Format error in certificate's notBefore field (invalid time)",
2842  "X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD": "Format error in certificate's notAfter field (invalid time)",
2843  "X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD": "Format error in CRL's lastUpdate field (invalid time)",
2844  "X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD": "Format error in CRL's nextUpdate field (invalid time)",
2845  "X509_V_ERR_OUT_OF_MEM": "Out of memory error",
2846  "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT": "Certificate is self-signed and cannot be found in the trusted list",
2847  "X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN": "Self signed certificate in certificate chain",
2848  "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY": "Unable to get local issuer certificate. This normally means the list of trusted certificates is not complete",
2849  "X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE": "Unable to verify the first certificate",
2850  "X509_V_ERR_CERT_CHAIN_TOO_LONG": "Certificate chain too long",
2851  "X509_V_ERR_CERT_REVOKED": "Certificate has been revoked",
2852  "X509_V_ERR_INVALID_CA": "Invalid CA certificate",
2853  "X509_V_ERR_PATH_LENGTH_EXCEEDED": "The basicConstraints pathlength parameter has been exceeded",
2854  "X509_V_ERR_INVALID_PURPOSE": "The certificate cannot be used for the specified purpose",
2855  "X509_V_ERR_CERT_UNTRUSTED": "Root CA is not marked as trusted for the specified purpose",
2856  "X509_V_ERR_CERT_REJECTED": "Root CA is marked to reject the specified purpose",
2857  "X509_V_ERR_SUBJECT_ISSUER_MISMATCH": "The current candidate issuer certificate was rejected because its subject name did not match the issuer name of the current certificate",
2858  "X509_V_ERR_AKID_SKID_MISMATCH": "The current candidate issuer certificate was rejected because its subject key identifier was present and did not match the authority key identifier of the current certificate",
2859  "X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH": "Issuer name and serial number of candidate certificate do not match the authority key identifier of the current certificate",
2860  "X509_V_ERR_KEYUSAGE_NO_CERTSIGN": "The keyUsage extension does not permit certificate signing",
2861  "X509_V_ERR_APPLICATION_VERIFICATION": "Verification failure",
2862  );
2869  const AFMap = qore(get_network_address_family_map());
2872  const AFStrMap = (
2873  "AF_INET": AF_INET,
2874  "AF_INET6": AF_INET6,
2875  "AF_UNIX": AF_UNIX,
2876  "AF_LOCAL": AF_UNIX,
2877  "AF_UNSPEC": AF_UNSPEC,
2878  );
2880  const AF_INET = AF_INET;
2886  const AF_UNIX = AF_UNIX;
2896  const AI_ADDRCONFIG = AI_ADDRCONFIG;
2899  const AI_ALL = AI_ALL;
2905 
2910 
2918 
2927  const IPPROTO_TCP = IPPROTO_TCP;
2937  const SOCK_DGRAM = SOCK_DGRAM;
2944 }
int shutdown()
Ensures that a socket will be closed even if the file descriptor is shared with other processes (for ...
nothing sendHTTPChunkedBodyTrailer(*hash< auto > trailer, timeout timeout_ms=-1)
Sends the trialer of an HTTP message body in chunked transfer encoding.
int recvi1(timeout timeout_ms=-1)
Receives a 1-byte signed integer from the socket.
const SSL_VERIFY_NONE
Do not verify the peer's certificate.
Definition: QC_Socket.dox.h:2734
string recv(softint size=0, timeout timeout_ms=-1)
Receives data from the socket and returns a string tagged with the Socket's character encoding.
bool isWriteFinished(timeout timeout_ms=0)
Returns True or False depending on whether all the data has been written to the socket.
nothing connectUNIX(string path, softint socktype=SOCK_STREAM, softint protocol=0)
Connects to a UNIX domain socket file.
const X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT
Certificate is self-signed and cannot be found in the trusted list.
Definition: QC_Socket.dox.h:2788
hash< auto > getSocketInfo(bool host_lookup=True)
Returns information about the local socket as a hash.
nothing sendHTTPMessageWithCallback(code scb, string method, string path, string http_version, hash< auto > headers, *reference< hash< auto >> info, timeout timeout_ms=-1)
Sends an HTTP message with a method and user-defined headers given as a hash and an optional message ...
const AF_UNSPEC
unspecified address family
Definition: QC_Socket.dox.h:2888
hash< auto > readHTTPChunkedBody(timeout timeout_ms=-1)
Reads in an HTTP message body sent in chunked transfer encoding and returns it with any footers recei...
const SOCK_RAW
raw socket interface, only available to the superuser, untested
Definition: QC_Socket.dox.h:2940
const AI_NUMERICHOST
If this bit is set, then the host is assumed to be an address and no hostname lookup will be preforme...
Definition: QC_Socket.dox.h:2903
nothing sendFromInputStream(Qore::InputStream input_stream, softint size=-1, timeout timeout_ms=-1)
Reads data from an InputStream and sends the bytes over the socket.
const X509_V_ERR_CERT_NOT_YET_VALID
Certificate is not yet valid.
Definition: QC_Socket.dox.h:2772
const X509_V_ERR_OUT_OF_MEM
Out of memory error.
Definition: QC_Socket.dox.h:2804
const X509_V_ERR_PATH_LENGTH_EXCEEDED
The basicConstraints pathlength parameter has been exceeded.
Definition: QC_Socket.dox.h:2806
const AFMap
mapping from Network Address Family Constants to string codes
Definition: QC_Socket.dox.h:2870
nothing connectINETSSL(string host, softstring service, timeout timeout_ms=-1, softint family=AF_UNSPEC, softint socktype=SOCK_STREAM, softint protocol=0)
Connects to the given host and port and attempts to establish a TLS/SSL connection; accepts an option...
hash< auto > readHTTPHeader(timeout timeout_ms=-1, *reference< hash< auto >> info)
Retuns a hash representing the data in the HTTP header read, or, if the data cannot be parsed as an H...
nothing sendHTTPResponseWithCallback(code scb, softint status_code, string status_desc, string http_version, hash< auto > headers, timeout timeout_ms=-1)
Sends an HTTP response with user-defined headers given as a hash and a message body to send with chun...
const X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE
Unable to decrypt certificate's signature. This means that the actual signature value could not be de...
Definition: QC_Socket.dox.h:2814
const X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD
Format error in CRL's lastUpdate field (invalid time)
Definition: QC_Socket.dox.h:2794
const X509_V_ERR_APPLICATION_VERIFICATION
Verification failure.
Definition: QC_Socket.dox.h:2766
int bind(string str, softbool reuseaddr=False)
Opens and binds the socket to a port, interface and port (if the bind_to string has a format "host:po...
const AI_ALL
If this bit is set along with AI_V4MAPPED then all matching IPv6 and IPv4 addresses are returned.
Definition: QC_Socket.dox.h:2899
*SSLCertificate getRemoteCertificate()
Returns any remote certificate captured or NOTHING if there is none.
int sendi4(softint i=0, timeout timeout_ms=-1)
Sends a 4-byte (32-bit) integer in big-endian format (network byte order) over the socket.
hash< auto > getPeerInfo(bool host_lookup=True)
Returns a hash of information about the remote end for connected sockets.
string readHTTPHeaderString(timeout timeout_ms=-1)
Retuns a string representing the data in the HTTP header read (reads until "\r\n\r\n")
nothing upgradeServerToSSL(timeout timeout_ms=-1)
Upgrades a server socket connection to a TLS/SSL connection.
The Socket class allows Qore programs safe access to network sockets.
Definition: QC_Socket.dox.h:123
const X509_VerificationReasons
maps from varification strings to verification code descriptions
Definition: QC_Socket.dox.h:2828
int getSendTimeout()
Returns the send timeout socket option value as an integer in milliseconds.
const X509_V_ERR_CERT_UNTRUSTED
Root CA is not marked as trusted for the specified purpose.
Definition: QC_Socket.dox.h:2780
const X509_V_ERR_INVALID_CA
Invalid CA certificate.
Definition: QC_Socket.dox.h:2798
hash< auto > getUsageInfo()
Returns performance statistics for the socket.
int recvi8LSB(timeout timeout_ms=-1)
Receives an 8-byte (64-bit) signed integer in little-endian format from the socket.
nothing bindUNIX(string path, softint socktype=SOCK_STREAM, softint protocol=0)
Opens and binds the socket to the given UNIX domain socket file as given by the filename argument....
nothing setPrivateKey(SSLPrivateKey key)
Sets the private key to use for negotiating encrypted connections along with the X....
nothing setCertificate(SSLCertificate cert)
Sets the X.509 certificate to use for negotiating encrypted connections.
string getCharset()
Returns the character encoding for the socket.
int recvi2LSB(timeout timeout_ms=-1)
Receives a 2-byte (16-bit) signed integer in little-endian format from the socket.
const True
logical True
Definition: qc_qore.dox.h:98
nothing connect(string target, timeout timeout_ms=-1)
Connects to a remote port (if the string has a format "host:port") or UNIX domain socket file with an...
const AI_NUMERICSERV
If this bit is set, then the service is assumed to be a numeric port string, and no service lookup wi...
Definition: QC_Socket.dox.h:2908
int send(binary bin, timeout timeout_ms=-1)
Sends binary data over the socket; if any errors occur, an exception is thrown.
readHTTPChunkedBodyBinaryWithCallback(code rcb, timeout timeout_ms=-1)
Reads in an HTTP message body sent in chunked transfer encoding and returns it with any footers recei...
int recvi2(timeout timeout_ms=-1)
Receives a 2-byte (16-bit) signed integer in big-endian format (network byte order) from the socket.
nothing send2(binary bin, timeout timeout_ms=-1)
Sends binary data over the socket; if any errors occur, an exception is thrown.
binary binary()
Always returns an empty binary object (of zero length)
const SSL_VERIFY_PEER
Verify the peer's certificate.
Definition: QC_Socket.dox.h:2751
nothing setWarningQueue(int warning_ms, int warning_bs, Queue queue, auto arg, timeout min_ms=1s)
Sets a Queue object to receive socket warnings.
const X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT
Unable to get issuer certificate.
Definition: QC_Socket.dox.h:2820
*string getSSLCipherVersion()
Returns the version string of the cipher for an encrypted connection or NOTHING if a secure connectio...
int setSendTimeout(timeout timeout_ms)
sets the send timeout as a socket option
int recvu4(timeout timeout_ms=-1)
Receives a 4-byte (32-bit) unsigned integer in big-endian format (network byte order) from the socket...
int recvu2LSB(timeout timeout_ms=-1)
Receives a 2-byte (16-bit) unsigned integer in little-endian format from the socket.
nothing upgradeClientToSSL(timeout timeout_ms=-1)
Upgrades a client socket connection to a TLS/SSL connection.
const False
logical False
Definition: qc_qore.dox.h:96
string getEncoding()
Returns the character encoding for the socket.
int recvi4LSB(timeout timeout_ms=-1)
Receives a 4-byte (32-bit) signed integer in little-endian format from the socket.
int sendi8LSB(softint i=0, timeout timeout_ms=-1)
Sends an 8-byte (64-bit) integer in little-endian format over the socket.
int recvi4(timeout timeout_ms=-1)
Receives a 4-byte (32-bit) signed integer in big-endian format (network byte order) from the socket.
int listen(int backlog=20)
Listens for connections on a bound socket; sets the socket in a listening state.
const AFStrMap
mapping from network address family string codes to Network Address Family Constants
Definition: QC_Socket.dox.h:2872
const X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE
Unable to verify the first certificate.
Definition: QC_Socket.dox.h:2824
const X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY
Unable to decode issuer public key (SubjectPublicKeyInfo)
Definition: QC_Socket.dox.h:2812
int sendi2LSB(softint i=0, timeout timeout_ms=-1)
Sends a 2-byte (16-bit) integer in little-endian format over the socket.
int getSslVerifyMode()
returns the current SSL verification mode
Socket acceptSSL()
Accepts connections on a listening socket and attempts to negotiate a TLS/SSL connection.
const X509_V_ERR_CRL_NOT_YET_VALID
CRL is not yet valid.
Definition: QC_Socket.dox.h:2784
const X509_V_ERR_AKID_SKID_MISMATCH
The current candidate issuer certificate was rejected because its subject key identifier was present ...
Definition: QC_Socket.dox.h:2764
const X509_V_ERR_INVALID_PURPOSE
The certificate cannot be used for the specified purpose.
Definition: QC_Socket.dox.h:2800
int setRecvTimeout(timeout timeout_ms)
sets the receive timeout as a socket option
int getSocket()
Returns the socket file descriptor number.
const X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD
Format error in CRL's nextUpdate field (invalid time)
Definition: QC_Socket.dox.h:2796
*string verifyPeerCertificate()
Returns a string code giving the result of verifying the remote certificate or NOTHING if an encrypte...
const SSL_VERIFY_FAIL_IF_NO_PEER_CERT
Require a client certificate in server mode.
Definition: QC_Socket.dox.h:2725
bool getNoDelay()
Returns the TCP_NODELAY setting for the socket.
int recvi8(timeout timeout_ms=-1)
Receives an 8-byte (64-bit) signed integer in big-endian format (network byte order) from the socket.
nothing connectSSL(string target, timeout timeout_ms=-1)
Connects to a remote socket and attempts to establish a TLS/SSL connection; accepts an optional timeo...
const X509_V_ERR_UNABLE_TO_GET_CRL
Unable to get certificate CRL.
Definition: QC_Socket.dox.h:2818
const X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD
Format error in certificate's notAfter field (invalid time)
Definition: QC_Socket.dox.h:2790
const X509_V_ERR_KEYUSAGE_NO_CERTSIGN
The keyUsage extension does not permit certificate signing.
Definition: QC_Socket.dox.h:2802
const X509_V_ERR_CERT_REJECTED
Root CA is marked to reject the specified purpose.
Definition: QC_Socket.dox.h:2774
bool getAcceptAllCertificates()
returns the current value of the "accept all certificates" flag
binary recvBinary(softint size=0, timeout timeout_ms=-1)
Receives data from the socket and returns a binary object.
int sendi1(softint i=0, timeout timeout_ms=-1)
Sends a 1-byte integer over the socket.
This class implements a container for private key data.
Definition: QC_SSLPrivateKey.dox.h:10
nothing bindINET(*string iface, *softstring service, softbool reuseaddr=False, softint family=AF_UNSPEC, softint socktype=SOCK_STREAM, softint protocol=0)
Opens and binds the socket to the given IPv4 or IPv6 interface (or if no interface is given,...
const AF_INET6
IPv6 address family.
Definition: QC_Socket.dox.h:2882
const AF_INET
IPv4 address family.
Definition: QC_Socket.dox.h:2880
nothing clearWarningQueue()
Removes any warning Queue object from the Socket.
This class defines an abstract interface for output streams.
Definition: QC_OutputStream.dox.h:18
const IPPROTO_UDP
for the UDP protocol
Definition: QC_Socket.dox.h:2930
bool pendingHttpChunkedBody()
returns True if the socket is still connected, and a HTTP header was read indicating chunked transfer...
const X509_V_ERR_CERT_SIGNATURE_FAILURE
Certificate signature failure; the signature of the certificate is invalid.
Definition: QC_Socket.dox.h:2778
nothing sendHTTPChunkedBodyFromInputStream(Qore::InputStream input_stream, int max_chunk_size=4096, timeout timeout_ms=-1, *code tcb)
Sends an HTTP message body in chunked transfer encoding.
constructor()
Creates the socket object.
int sendi4LSB(softint i=0, timeout timeout_ms=-1)
Sends a 4-byte (32-bit) integer in little-endian format over the socket.
hash< auto > readHTTPChunkedBodyBinary(timeout timeout_ms=-1)
Reads in an HTTP message body sent in chunked transfer encoding and returns it with any footers recei...
const X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY
Unable to get local issuer certificate. This normally means the list of trusted certificates is not c...
Definition: QC_Socket.dox.h:2822
const X509_V_ERR_CERT_REVOKED
Certificate has been revoked.
Definition: QC_Socket.dox.h:2776
const X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH
Issuer name and serial number of candidate certificate do not match the authority key identifier of t...
Definition: QC_Socket.dox.h:2762
const AF_UNIX
UNIX domain address family (UNIX socket files)
Definition: QC_Socket.dox.h:2886
int recvu4LSB(timeout timeout_ms=-1)
Receives a 4-byte (32-bit) unsigned integer in little-endian format from the socket.
const IPPROTO_TCP
for the TCP protocol
Definition: QC_Socket.dox.h:2928
nothing sendHTTPMessage(string method, string path, string http_version, hash< auto > headers, string body, *reference< hash > info, timeout timeout_ms=-1)
Sends an HTTP message with a method and user-defined headers given as a hash and an optional message ...
const X509_V_OK
Verification OK.
Definition: QC_Socket.dox.h:2826
int getRecvTimeout()
Returns the receive timeout socket option value as an integer in milliseconds.
const AF_LOCAL
POSIX synonym for AF_UNIX.
Definition: QC_Socket.dox.h:2884
const AI_V4MAPPED
If this bit is set, getaddrinfo() will return IPv4-mapped IPv6 addresses on finding no matching IPv6 ...
Definition: QC_Socket.dox.h:2920
int getConnectionId()
Returns an integer connection ID that is incremented every time the socket is disconnected.
const X509_V_ERR_SUBJECT_ISSUER_MISMATCH
The current candidate issuer certificate was rejected because its subject name did not match the issu...
Definition: QC_Socket.dox.h:2810
nothing sendBinary2(string str, timeout timeout_ms=-1)
Sends string data over the socket without converting the string to the socket's encoding,...
int sendi8(softint i=0, timeout timeout_ms=-1)
Sends an 8-byte (64-bit) integer in big-endian format (network byte order) over the socket.
SSLCertificate objects allow Qore code to work with X.509 certificate data.
Definition: QC_SSLCertificate.dox.h:10
bool captureRemoteCertificates(bool set=True)
Sets the flag for capturing remote X.509 certificates; by default no capture of remote certificates i...
Queue objects provide a blocking, thread-safe message-passing object to Qore programs
Definition: QC_Queue.dox.h:17
int sendi2(softint i=0, timeout timeout_ms=-1)
Sends a 2-byte (16-bit) integer in big-endian format (network byte order) over the socket.
acceptAllCertificates(bool accept_all=True)
with peer verification enabled, all certificates are accepted regardless of the validity of the Certi...
const X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD
Format error in certificate's notBefore field (invalid time)
Definition: QC_Socket.dox.h:2792
*string getSSLCipherName()
Returns the name of the cipher for an encrypted connection or NOTHING if a secure connection has not ...
copy()
Creates a new Socket object, not based on the source being copied.
nothing connectUNIXSSL(string path, softint socktype=SOCK_STREAM, softint protocol=0)
Connects to the given UNIX domain socket file and attempts to establish a TLS/SSL connection.
const X509_V_ERR_CRL_SIGNATURE_FAILURE
CRL signature failure; the signature of the certificate is invalid.
Definition: QC_Socket.dox.h:2786
bool isSecure()
Returns True if the connection is a secure TLS/SSL connection.
bool isOpen()
Returns True if the socket is open.
const X509_V_ERR_CERT_HAS_EXPIRED
Certificate has expired.
Definition: QC_Socket.dox.h:2770
const AI_CANONNAME
If this bit is set, then getaddrinfo() will return the canonical name of the hostname in the "canonna...
Definition: QC_Socket.dox.h:2901
main Qore-language namespace
Definition: Pseudo_QC_All.dox.h:3
hash< auto > readHTTPChunkedBodyToOutputStream(Qore::OutputStream os, timeout timeout_ms=-1)
Reads in an HTTP message body sent in chunked transfer encoding, writes it in an OutputStream and ret...
clearStats()
Clears performance statistics.
nothing shutdownSSL()
Shuts down the SSL connection on a secure connection.
This class defines an abstract interface for input streams.
Definition: QC_InputStream.dox.h:18
bool isDataAvailable(timeout timeout_ms=0)
Returns True or False depending on whether there is data to be read on the socket.
const SSL_VERIFY_CLIENT_ONCE
Only request a client certificate once in server mode.
Definition: QC_Socket.dox.h:2713
const SOCK_STREAM
for sequenced, reliable, two-way connection-based byte streams (the default)
Definition: QC_Socket.dox.h:2942
const AI_ADDRCONFIG
if this bit is set, addresses of each family are returned only if they are configured on the system
Definition: QC_Socket.dox.h:2897
nothing setCharset(string encoding)
Sets the character encoding for the socket.
int setNoDelay(bool nd=True)
Sets the boolean TCP_NODELAY setting for the socket.
int sendBinary(string str, timeout timeout_ms=-1)
Sends string data over the socket without converting the string to the socket's encoding,...
const X509_V_ERR_CERT_CHAIN_TOO_LONG
Certificate chain too long.
Definition: QC_Socket.dox.h:2768
int close()
Closes an open socket.
int recvu2(timeout timeout_ms=-1)
Receives a 2-byte (16-bit) unsigned integer in big-endian format (network byte order) from the socket...
nothing setEncoding(string encoding)
Sets the character encoding for the socket.
const X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN
Self signed certificate in certificate chain.
Definition: QC_Socket.dox.h:2808
const X509_V_ERR_CRL_HAS_EXPIRED
CRL has expired.
Definition: QC_Socket.dox.h:2782
Socket accept()
Accepts connections on a listening socket.
const AI_PASSIVE
If this bit is set, then the returned information should be usable for a call to Socket::bind()
Definition: QC_Socket.dox.h:2916
int getPort()
Returns the port number of the socket for INET sockets.
nothing setEventQueue()
Removes any Queue object from the Socket object so that socket events are no longer added to the Queu...
int recvu1(timeout timeout_ms=-1)
Receives a 1-byte unsigned integer from the socket.
nothing connectINET(string host, softstring service, timeout timeout_ms=-1, softint family=AF_UNSPEC, softint socktype=SOCK_STREAM, softint protocol=0)
Connects to the given host and port with an optional timeout value with a millisecond resolution.
const SOCK_DGRAM
for datagrams (connectionless, unreliable messages of a fixed (typically small) maximum length
Definition: QC_Socket.dox.h:2938
const X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE
Unable to decrypt CRL's signature.
Definition: QC_Socket.dox.h:2816
readHTTPChunkedBodyWithCallback(code rcb, timeout timeout_ms=-1)
Reads in an HTTP message body sent in chunked transfer encoding and returns it with any footers recei...
nothing recvToOutputStream(Qore::OutputStream os, softint size=-1, timeout timeout_ms=-1)
Receives data from the socket and writes the bytes to an OutputStream.
setSslVerifyMode(int mode)
sets the SSL verification mode
nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash< auto > headers, string body, timeout timeout_ms=-1)
Sends an HTTP response with user-defined headers given as a hash and an optional message body.