Qore Programming Language Reference Manual  0.9.3.1
QC_Socket.dox.h
1 namespace Qore {
4 
122 class Socket {
123 
124 public:
126 
140 Socket accept();
141 
142 public:
144 
160 *Socket accept(timeout timeout_ms);
161 
162 public:
164 
180  acceptAllCertificates(bool accept_all = True);
181 
182 public:
184 
198 Socket acceptSSL();
199 
200 public:
202 
218 *Socket acceptSSL(timeout timeout_ms);
219 
220 public:
222 
242 int bind(string str, softbool reuseaddr = False);
243 
244 public:
246 
260 int bind(int port, softbool reuseaddr = False);
261 
262 public:
264 
292 nothing bindINET(*string iface, *softstring service, softbool reuseaddr = False, softint family = AF_UNSPEC, softint socktype = SOCK_STREAM, softint protocol = 0);
293 
294 public:
296 
312 nothing bindUNIX(string path, softint socktype = SOCK_STREAM, softint protocol = 0);
313 
314 public:
316 
329 bool captureRemoteCertificates(bool set = True);
330 
331 public:
333 
342  clearStats();
343 
344 public:
346 
355 nothing clearWarningQueue();
356 
357 public:
359 
372 int close();
373 
374 public:
376 
401 nothing connect(string target, timeout timeout_ms = -1);
402 
403 public:
405 
429 nothing connectINET(string host, softstring service, timeout timeout_ms = -1, softint family = AF_UNSPEC, softint socktype = SOCK_STREAM, softint protocol = 0);
430 
431 public:
433 
458 nothing connectINETSSL(string host, softstring service, timeout timeout_ms = -1, softint family = AF_UNSPEC, softint socktype = SOCK_STREAM, softint protocol = 0);
459 
460 public:
462 
490 nothing connectSSL(string target, timeout timeout_ms = -1);
491 
492 public:
494 
513 nothing connectUNIX(string path, softint socktype = SOCK_STREAM, softint protocol = 0);
514 
515 public:
517 
537 nothing connectUNIXSSL(string path, softint socktype = SOCK_STREAM, softint protocol = 0);
538 
539 public:
541 
544  constructor();
545 
546 public:
548 
551  copy();
552 
553 public:
555 
573 
574 public:
576 
582 string getCharset();
583 
584 public:
586 
600 int getConnectionId();
601 
602 public:
604 
609 string getEncoding();
610 
611 public:
613 
625 bool getNoDelay();
626 
627 public:
629 
645 hash<auto> getPeerInfo(bool host_lookup = True);
646 
647 public:
649 
659 int getPort();
660 
661 public:
663 
673 int getRecvTimeout();
674 
675 public:
677 
689 
690 public:
692 
702 *string getSSLCipherName();
703 
704 public:
706 
716 *string getSSLCipherVersion();
717 
718 public:
720 
730 int getSendTimeout();
731 
732 public:
734 
744 int getSocket();
745 
746 public:
748 
764 hash<auto> getSocketInfo(bool host_lookup = True);
765 
766 public:
768 
785 int getSslVerifyMode();
786 
787 public:
789 
810 hash<auto> getUsageInfo();
811 
812 public:
814 
828 bool isDataAvailable(timeout timeout_ms = 0);
829 
830 public:
832 
842 bool isOpen();
843 
844 public:
846 
856 bool isSecure();
857 
858 public:
860 
874 bool isWriteFinished(timeout timeout_ms = 0);
875 
876 public:
878 
891 int listen(int backlog = 20);
892 
893 public:
895 
903 
904 public:
906 
927 hash<auto> readHTTPChunkedBody(timeout timeout_ms = -1);
928 
929 public:
931 
952 hash<auto> readHTTPChunkedBodyBinary(timeout timeout_ms = -1);
953 
954 public:
956 
984  readHTTPChunkedBodyBinaryWithCallback(code rcb, timeout timeout_ms = -1);
985 
986 public:
988 
1010 hash<auto> readHTTPChunkedBodyToOutputStream(Qore::OutputStream os, timeout timeout_ms = -1);
1011 
1012 public:
1014 
1042  readHTTPChunkedBodyWithCallback(code rcb, timeout timeout_ms = -1);
1043 
1044 public:
1046 
1093 hash<auto> readHTTPHeader(timeout timeout_ms = -1, *reference<hash<auto>> info);
1094 
1095 public:
1097 
1120 string readHTTPHeaderString(timeout timeout_ms = -1);
1121 
1122 public:
1124 
1149 string recv(softint size = 0, timeout timeout_ms = -1);
1150 
1151 public:
1153 
1176 binary recvBinary(softint size = 0, timeout timeout_ms = -1);
1177 
1178 public:
1180 
1203 nothing recvToOutputStream(Qore::OutputStream os, softint size = -1, timeout timeout_ms = -1);
1204 
1205 public:
1207 
1229 int recvi1(timeout timeout_ms = -1);
1230 
1231 public:
1233 
1255 int recvi2(timeout timeout_ms = -1);
1256 
1257 public:
1259 
1281 int recvi2LSB(timeout timeout_ms = -1);
1282 
1283 public:
1285 
1307 int recvi4(timeout timeout_ms = -1);
1308 
1309 public:
1311 
1333 int recvi4LSB(timeout timeout_ms = -1);
1334 
1335 public:
1337 
1359 int recvi8(timeout timeout_ms = -1);
1360 
1361 public:
1363 
1385 int recvi8LSB(timeout timeout_ms = -1);
1386 
1387 public:
1389 
1411 int recvu1(timeout timeout_ms = -1);
1412 
1413 public:
1415 
1437 int recvu2(timeout timeout_ms = -1);
1438 
1439 public:
1441 
1463 int recvu2LSB(timeout timeout_ms = -1);
1464 
1465 public:
1467 
1489 int recvu4(timeout timeout_ms = -1);
1490 
1491 public:
1493 
1515 int recvu4LSB(timeout timeout_ms = -1);
1516 
1517 public:
1519 
1545 int send(binary bin, timeout timeout_ms = -1);
1546 
1547 public:
1549 
1577 int send(string str, timeout timeout_ms = -1);
1578 
1579 public:
1581 
1604 nothing send2(binary bin, timeout timeout_ms = -1);
1605 
1606 public:
1608 
1633 nothing send2(string str, timeout timeout_ms = -1);
1634 
1635 public:
1637 
1662 int sendBinary(string str, timeout timeout_ms = -1);
1663 
1664 public:
1666 
1691 int sendBinary(binary bin, timeout timeout_ms = -1);
1692 
1693 public:
1695 
1717 nothing sendBinary2(string str, timeout timeout_ms = -1);
1718 
1719 public:
1721 
1743 nothing sendBinary2(binary bin, timeout timeout_ms = -1);
1744 
1745 public:
1747 
1768 nothing sendFromInputStream(Qore::InputStream is, softint size = -1, timeout timeout_ms = -1);
1769 
1770 public:
1772 
1795 nothing sendHTTPChunkedBodyFromInputStream(Qore::InputStream is, int max_chunk_size = 4096, timeout timeout_ms = -1, *code tcb);
1796 
1797 public:
1799 
1818 nothing sendHTTPChunkedBodyTrailer(*hash<auto> trailer, timeout timeout_ms = -1);
1819 
1820 public:
1822 
1853 nothing sendHTTPMessage(string method, string path, string http_version, hash<auto> headers, *string body, *reference<hash> info, timeout timeout_ms = -1);
1854 
1855 public:
1857 
1886 nothing sendHTTPMessage(string method, string path, string http_version, hash<auto> headers, binary body, *reference<hash<auto>> info, timeout timeout_ms = -1);
1887 
1888 public:
1890 
1921 nothing sendHTTPMessageWithCallback(code scb, string method, string path, string http_version, hash<auto> headers, *reference<hash<auto>> info, timeout timeout_ms = -1);
1922 
1923 public:
1925 
1949 nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash<auto> headers, *string body, timeout timeout_ms = -1);
1950 
1951 public:
1953 
1975 nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash<auto> headers, binary body, timeout timeout_ms = -1);
1976 
1977 public:
1979 
2003 nothing sendHTTPResponseWithCallback(code scb, softint status_code, string status_desc, string http_version, hash<auto> headers, timeout timeout_ms = -1);
2004 
2005 public:
2007 
2030 int sendi1(softint i = 0, timeout timeout_ms = -1);
2031 
2032 public:
2034 
2057 int sendi2(softint i = 0, timeout timeout_ms = -1);
2058 
2059 public:
2061 
2084 int sendi2LSB(softint i = 0, timeout timeout_ms = -1);
2085 
2086 public:
2088 
2111 int sendi4(softint i = 0, timeout timeout_ms = -1);
2112 
2113 public:
2115 
2138 int sendi4LSB(softint i = 0, timeout timeout_ms = -1);
2139 
2140 public:
2142 
2165 int sendi8(softint i = 0, timeout timeout_ms = -1);
2166 
2167 public:
2169 
2192 int sendi8LSB(softint i = 0, timeout timeout_ms = -1);
2193 
2194 public:
2196 
2203 nothing setCertificate(SSLCertificate cert);
2204 
2205 public:
2207 
2214 nothing setCertificate(string cert_pem);
2215 
2216 public:
2218 
2225 nothing setCertificate(binary cert_der);
2226 
2227 public:
2229 
2232 nothing setCharset(string encoding);
2233 
2234 public:
2236 
2238 nothing setEncoding(string encoding);
2239 
2240 public:
2242 
2249 nothing setEventQueue();
2250 
2251 public:
2253 
2264 nothing setEventQueue(Queue queue);
2265 
2266 public:
2268 
2286 int setNoDelay(bool nd = True);
2287 
2288 public:
2290 
2297 nothing setPrivateKey(SSLPrivateKey key);
2298 
2299 public:
2301 
2309 nothing setPrivateKey(string key_pem, *string pass);
2310 
2311 public:
2313 
2320 nothing setPrivateKey(binary key_der);
2321 
2322 public:
2324 
2336 int setRecvTimeout(timeout timeout_ms);
2337 
2338 public:
2340 
2352 int setSendTimeout(timeout timeout_ms);
2353 
2354 public:
2356 
2373  setSslVerifyMode(int mode);
2374 
2375 public:
2377 
2409 nothing setWarningQueue(int warning_ms, int warning_bs, Queue queue, auto arg, timeout min_ms = 1s);
2410 
2411 public:
2413 
2423 int shutdown();
2424 
2425 public:
2427 
2436 nothing shutdownSSL();
2437 
2438 public:
2440 
2454 nothing upgradeClientToSSL(timeout timeout_ms = -1);
2455 
2456 public:
2458 
2472 nothing upgradeServerToSSL(timeout timeout_ms = -1);
2473 
2474 public:
2476 
2486 *string verifyPeerCertificate();
2487 };
2493 
2495 
2507 
2519 
2528 
2545 
2552 
2554  const X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH = "X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH";
2556  const X509_V_ERR_AKID_SKID_MISMATCH = "X509_V_ERR_AKID_SKID_MISMATCH";
2558  const X509_V_ERR_APPLICATION_VERIFICATION = "X509_V_ERR_APPLICATION_VERIFICATION";
2560  const X509_V_ERR_CERT_CHAIN_TOO_LONG = "X509_V_ERR_CERT_CHAIN_TOO_LONG";
2562  const X509_V_ERR_CERT_HAS_EXPIRED = "X509_V_ERR_CERT_HAS_EXPIRED";
2564  const X509_V_ERR_CERT_NOT_YET_VALID = "X509_V_ERR_CERT_NOT_YET_VALID";
2566  const X509_V_ERR_CERT_REJECTED = "X509_V_ERR_CERT_REJECTED";
2568  const X509_V_ERR_CERT_REVOKED = "X509_V_ERR_CERT_REVOKED";
2570  const X509_V_ERR_CERT_SIGNATURE_FAILURE = "X509_V_ERR_CERT_SIGNATURE_FAILURE";
2572  const X509_V_ERR_CERT_UNTRUSTED = "X509_V_ERR_CERT_UNTRUSTED";
2574  const X509_V_ERR_CRL_HAS_EXPIRED = "X509_V_ERR_CRL_HAS_EXPIRED";
2576  const X509_V_ERR_CRL_NOT_YET_VALID = "X509_V_ERR_CRL_NOT_YET_VALID";
2578  const X509_V_ERR_CRL_SIGNATURE_FAILURE = "X509_V_ERR_CRL_SIGNATURE_FAILURE";
2580  const X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT = "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT";
2582  const X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD = "X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD";
2584  const X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD = "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD";
2586  const X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD = "X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD";
2588  const X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = "X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD";
2590  const X509_V_ERR_INVALID_CA = "X509_V_ERR_INVALID_CA";
2592  const X509_V_ERR_INVALID_PURPOSE = "X509_V_ERR_INVALID_PURPOSE";
2594  const X509_V_ERR_KEYUSAGE_NO_CERTSIGN = "X509_V_ERR_KEYUSAGE_NO_CERTSIGN";
2596  const X509_V_ERR_OUT_OF_MEM = "X509_V_ERR_OUT_OF_MEM";
2598  const X509_V_ERR_PATH_LENGTH_EXCEEDED = "X509_V_ERR_PATH_LENGTH_EXCEEDED";
2600  const X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN = "X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN";
2602  const X509_V_ERR_SUBJECT_ISSUER_MISMATCH = "X509_V_ERR_SUBJECT_ISSUER_MISMATCH";
2604  const X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY = "X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY";
2606  const X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE = "X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE";
2608  const X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE = "X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE";
2610  const X509_V_ERR_UNABLE_TO_GET_CRL = "X509_V_ERR_UNABLE_TO_GET_CRL";
2612  const X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT";
2614  const X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY";
2616  const X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE = "X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE";
2618  const X509_V_OK = "X509_V_OK";
2621  "X509_V_OK": "OK",
2622  "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT": "Unable to get issuer certificate",
2623  "X509_V_ERR_UNABLE_TO_GET_CRL": "Unable to get certificate CRL",
2624  "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",
2625  "X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE": "Unable to decrypt CRL's signature",
2626  "X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY": "Unable to decode issuer public key (SubjectPublicKeyInfo)",
2627  "X509_V_ERR_CERT_SIGNATURE_FAILURE": "Certificate signature failure; the signature of the certificate is invalid",
2628  "X509_V_ERR_CRL_SIGNATURE_FAILURE": "CRL signature failure; the signature of the certificate is invalid",
2629  "X509_V_ERR_CERT_NOT_YET_VALID": "Certificate is not yet valid",
2630  "X509_V_ERR_CERT_HAS_EXPIRED": "Certificate has expired",
2631  "X509_V_ERR_CRL_NOT_YET_VALID": "CRL is not yet valid",
2632  "X509_V_ERR_CRL_HAS_EXPIRED": "CRL has expired",
2633  "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD": "Format error in certificate's notBefore field (invalid time)",
2634  "X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD": "Format error in certificate's notAfter field (invalid time)",
2635  "X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD": "Format error in CRL's lastUpdate field (invalid time)",
2636  "X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD": "Format error in CRL's nextUpdate field (invalid time)",
2637  "X509_V_ERR_OUT_OF_MEM": "Out of memory error",
2638  "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT": "Certificate is self-signed and cannot be found in the trusted list",
2639  "X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN": "Self signed certificate in certificate chain",
2640  "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",
2641  "X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE": "Unable to verify the first certificate",
2642  "X509_V_ERR_CERT_CHAIN_TOO_LONG": "Certificate chain too long",
2643  "X509_V_ERR_CERT_REVOKED": "Certificate has been revoked",
2644  "X509_V_ERR_INVALID_CA": "Invalid CA certificate",
2645  "X509_V_ERR_PATH_LENGTH_EXCEEDED": "The basicConstraints pathlength parameter has been exceeded",
2646  "X509_V_ERR_INVALID_PURPOSE": "The certificate cannot be used for the specified purpose",
2647  "X509_V_ERR_CERT_UNTRUSTED": "Root CA is not marked as trusted for the specified purpose",
2648  "X509_V_ERR_CERT_REJECTED": "Root CA is marked to reject the specified purpose",
2649  "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",
2650  "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",
2651  "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",
2652  "X509_V_ERR_KEYUSAGE_NO_CERTSIGN": "The keyUsage extension does not permit certificate signing",
2653  "X509_V_ERR_APPLICATION_VERIFICATION": "Verification failure",
2654  );
2656 
2660 
2662  const AFMap = qore(get_network_address_family_map());
2664  const AFStrMap = (
2665  "AF_INET": AF_INET,
2666  "AF_INET6": AF_INET6,
2667  "AF_UNIX": AF_UNIX,
2668  "AF_LOCAL": AF_UNIX,
2669  "AF_UNSPEC": AF_UNSPEC,
2670  );
2672  const AF_INET = AF_INET;
2678  const AF_UNIX = AF_UNIX;
2682 
2687 
2691  const AI_ALL = AI_ALL;
2697 
2702 
2710 
2714 
2718 
2724 
2728 
2736 };
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:2526
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:2580
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:2680
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:2732
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:2695
const X509_V_ERR_CERT_NOT_YET_VALID
Certificate is not yet valid.
Definition: QC_Socket.dox.h:2564
const X509_V_ERR_OUT_OF_MEM
Out of memory error.
Definition: QC_Socket.dox.h:2596
const X509_V_ERR_PATH_LENGTH_EXCEEDED
The basicConstraints pathlength parameter has been exceeded.
Definition: QC_Socket.dox.h:2598
const AFMap
mapping from Network Address Family Constants to string codes
Definition: QC_Socket.dox.h:2662
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 as literal binary...
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:2606
const X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD
Format error in CRL's lastUpdate field (invalid time)
Definition: QC_Socket.dox.h:2586
const X509_V_ERR_APPLICATION_VERIFICATION
Verification failure.
Definition: QC_Socket.dox.h:2558
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:2691
*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:122
const X509_VerificationReasons
maps from varification strings to verification code descriptions
Definition: QC_Socket.dox.h:2620
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:2572
const X509_V_ERR_INVALID_CA
Invalid CA certificate.
Definition: QC_Socket.dox.h:2590
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:94
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:2700
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:2543
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:2612
*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:92
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.
nothing sendHTTPChunkedBodyFromInputStream(Qore::InputStream is, int max_chunk_size=4096, timeout timeout_ms=-1, *code tcb)
Sends an HTTP message body in chunked transfer encoding.
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:2664
const X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE
Unable to verify the first certificate.
Definition: QC_Socket.dox.h:2616
const X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY
Unable to decode issuer public key (SubjectPublicKeyInfo)
Definition: QC_Socket.dox.h:2604
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:2576
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:2556
const X509_V_ERR_INVALID_PURPOSE
The certificate cannot be used for the specified purpose.
Definition: QC_Socket.dox.h:2592
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:2588
*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:2517
bool getNoDelay()
Returns the TCP_NODELAY setting for the socket.
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.
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:2610
const X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD
Format error in certificate's notAfter field (invalid time)
Definition: QC_Socket.dox.h:2582
const X509_V_ERR_KEYUSAGE_NO_CERTSIGN
The keyUsage extension does not permit certificate signing.
Definition: QC_Socket.dox.h:2594
const X509_V_ERR_CERT_REJECTED
Root CA is marked to reject the specified purpose.
Definition: QC_Socket.dox.h:2566
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.
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 ...
This class implements a container for private key data.
Definition: QC_SSLPrivateKey.dox.h:9
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:2674
const AF_INET
IPv4 address family.
Definition: QC_Socket.dox.h:2672
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:2722
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:2570
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:2614
const X509_V_ERR_CERT_REVOKED
Certificate has been revoked.
Definition: QC_Socket.dox.h:2568
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:2554
const AF_UNIX
UNIX domain address family (UNIX socket files)
Definition: QC_Socket.dox.h:2678
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:2720
const X509_V_OK
Verification OK.
Definition: QC_Socket.dox.h:2618
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:2676
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:2712
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:2602
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:9
bool captureRemoteCertificates(bool set=True)
Sets the flag for capturing remote X.509 certificates; by default no capture of remote certificates i...
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:2584
*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:2578
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:2562
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:2693
main Qore-language namespace
Definition: Pseudo_QC_All.dox.h:2
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
nothing sendFromInputStream(Qore::InputStream is, softint size=-1, timeout timeout_ms=-1)
Reads data from an InputStream and sends the bytes over the socket.
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:2505
const SOCK_STREAM
for sequenced, reliable, two-way connection-based byte streams (the default)
Definition: QC_Socket.dox.h:2734
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:2689
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:2560
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:2600
const X509_V_ERR_CRL_HAS_EXPIRED
CRL has expired.
Definition: QC_Socket.dox.h:2574
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:2708
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:2730
const X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE
Unable to decrypt CRL's signature.
Definition: QC_Socket.dox.h:2608
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