CURL improvement

This commit is contained in:
Joshua Granick
2014-08-17 18:05:57 -07:00
parent 825372dab8
commit 4a5b1a22bb
3 changed files with 74 additions and 38 deletions

View File

@@ -187,6 +187,45 @@ namespace lime {
case CURLOPT_NOSIGNAL:
case CURLOPT_WILDCARDMATCH:
case CURLOPT_FAILONERROR:
case CURLOPT_DNS_USE_GLOBAL_CACHE:
case CURLOPT_TCP_NODELAY:
case CURLOPT_TCP_KEEPALIVE:
case CURLOPT_SASL_IR:
case CURLOPT_AUTOREFERER:
case CURLOPT_TRANSFER_ENCODING:
case CURLOPT_FOLLOWLOCATION:
case CURLOPT_UNRESTRICTED_AUTH:
case CURLOPT_PUT:
case CURLOPT_POST:
case CURLOPT_COOKIESESSION:
case CURLOPT_HTTPGET:
case CURLOPT_IGNORE_CONTENT_LENGTH:
case CURLOPT_HTTP_CONTENT_DECODING:
case CURLOPT_HTTP_TRANSFER_DECODING:
case CURLOPT_DIRLISTONLY:
case CURLOPT_APPEND:
case CURLOPT_FTP_USE_EPRT:
case CURLOPT_FTP_USE_EPSV:
case CURLOPT_FTP_USE_PRET:
case CURLOPT_FTP_CREATE_MISSING_DIRS:
case CURLOPT_FTP_SKIP_PASV_IP:
case CURLOPT_TRANSFERTEXT:
case CURLOPT_CRLF:
case CURLOPT_NOBODY:
case CURLOPT_UPLOAD:
case CURLOPT_FRESH_CONNECT:
case CURLOPT_FORBID_REUSE:
case CURLOPT_CONNECT_ONLY:
case CURLOPT_USE_SSL:
//case CURLOPT_SSL_ENABLE_ALPN:
//case CURLOPT_SSL_ENABLE_NPN:
case CURLOPT_SSL_VERIFYPEER:
case CURLOPT_SSL_VERIFYHOST:
case CURLOPT_SSL_SESSIONID_CACHE:
code = curl_easy_setopt (curl, type, val_bool (parameter));
break;
case CURLOPT_PROTOCOLS:
case CURLOPT_REDIR_PROTOCOLS:
case CURLOPT_PROXYPORT:
@@ -196,58 +235,32 @@ namespace lime {
case CURLOPT_LOCALPORT:
case CURLOPT_LOCALPORTRANGE:
case CURLOPT_DNS_CACHE_TIMEOUT:
case CURLOPT_DNS_USE_GLOBAL_CACHE:
case CURLOPT_BUFFERSIZE:
case CURLOPT_PORT:
case CURLOPT_TCP_NODELAY:
case CURLOPT_ADDRESS_SCOPE:
case CURLOPT_TCP_KEEPALIVE:
case CURLOPT_TCP_KEEPIDLE:
case CURLOPT_TCP_KEEPINTVL:
case CURLOPT_NETRC:
case CURLOPT_HTTPAUTH:
case CURLOPT_PROXYAUTH:
case CURLOPT_SASL_IR:
case CURLOPT_AUTOREFERER:
case CURLOPT_TRANSFER_ENCODING:
case CURLOPT_FOLLOWLOCATION:
case CURLOPT_UNRESTRICTED_AUTH:
case CURLOPT_MAXREDIRS:
case CURLOPT_POSTREDIR:
case CURLOPT_PUT:
case CURLOPT_POST:
case CURLOPT_POSTFIELDSIZE:
//case CURLOPT_HEADEROPT:
case CURLOPT_COOKIESESSION:
case CURLOPT_HTTPGET:
case CURLOPT_HTTP_VERSION:
case CURLOPT_IGNORE_CONTENT_LENGTH:
case CURLOPT_HTTP_CONTENT_DECODING:
case CURLOPT_HTTP_TRANSFER_DECODING:
//case CURLOPT_EXPECT_100_TIMEOUT_MS:
case CURLOPT_TFTP_BLKSIZE:
case CURLOPT_DIRLISTONLY:
case CURLOPT_APPEND:
case CURLOPT_FTP_USE_EPRT:
case CURLOPT_FTP_USE_EPSV:
case CURLOPT_FTP_USE_PRET:
case CURLOPT_FTP_CREATE_MISSING_DIRS:
case CURLOPT_FTP_RESPONSE_TIMEOUT:
case CURLOPT_FTP_SKIP_PASV_IP:
case CURLOPT_FTPSSLAUTH:
case CURLOPT_FTP_SSL_CCC:
case CURLOPT_FTP_FILEMETHOD:
case CURLOPT_RTSP_REQUEST:
case CURLOPT_RTSP_CLIENT_CSEQ:
case CURLOPT_RTSP_SERVER_CSEQ:
case CURLOPT_TRANSFERTEXT:
case CURLOPT_PROXY_TRANSFER_MODE:
case CURLOPT_CRLF:
case CURLOPT_RESUME_FROM:
case CURLOPT_FILETIME:
case CURLOPT_NOBODY:
case CURLOPT_INFILESIZE:
case CURLOPT_UPLOAD:
case CURLOPT_MAXFILESIZE:
case CURLOPT_TIMECONDITION:
case CURLOPT_TIMEVALUE:
@@ -256,22 +269,13 @@ namespace lime {
case CURLOPT_LOW_SPEED_LIMIT:
case CURLOPT_LOW_SPEED_TIME:
case CURLOPT_MAXCONNECTS:
case CURLOPT_FRESH_CONNECT:
case CURLOPT_FORBID_REUSE:
case CURLOPT_CONNECTTIMEOUT:
case CURLOPT_CONNECTTIMEOUT_MS:
case CURLOPT_IPRESOLVE:
case CURLOPT_CONNECT_ONLY:
case CURLOPT_USE_SSL:
case CURLOPT_ACCEPTTIMEOUT_MS:
//case CURLOPT_SSL_ENABLE_ALPN:
//case CURLOPT_SSL_ENABLE_NPN:
case CURLOPT_SSLENGINE_DEFAULT:
case CURLOPT_SSLVERSION:
case CURLOPT_SSL_VERIFYPEER:
case CURLOPT_SSL_VERIFYHOST:
case CURLOPT_CERTINFO:
case CURLOPT_SSL_SESSIONID_CACHE:
case CURLOPT_SSL_OPTIONS:
case CURLOPT_GSSAPI_DELEGATION:
case CURLOPT_SSH_AUTH_TYPES:
@@ -384,7 +388,6 @@ namespace lime {
case CURLOPT_FNMATCH_DATA:
case CURLOPT_STDERR:
case CURLOPT_HTTPPOST:
case CURLOPT_HTTPHEADER:
//case CURLOPT_PROXYHEADER:
case CURLOPT_HTTP200ALIASES:
case CURLOPT_MAIL_RCPT:
@@ -406,11 +409,26 @@ namespace lime {
case CURLOPT_READFUNCTION:
case CURLOPT_WRITEFUNCTION:
{
AutoGCRoot* callback = new AutoGCRoot (parameter);
code = curl_easy_setopt (curl, type, rw_callback);
curl_easy_setopt (curl, type == CURLOPT_READFUNCTION ? CURLOPT_READDATA : CURLOPT_WRITEDATA, callback);
break;
}
case CURLOPT_HTTPHEADER:
struct curl_slist *chunk = NULL;
int size = val_array_size (parameter);
for (int i = 0; i < size; i++) {
chunk = curl_slist_append (chunk, val_string (val_array_i (parameter, i)));
}
code = curl_easy_setopt (curl, type, chunk);
break;
}