curl-library
RE: Port from URI is not taken
Date: Thu, 30 Aug 2012 20:34:11 +0000
> Date: Thu, 30 Aug 2012 22:18:06 +0200
> From: daniel_at_haxx.se
> To: curl-library_at_cool.haxx.se
> Subject: Re: Port from URI is not taken
> 
> On Thu, 30 Aug 2012, Sidde Gowda wrote:
> 
> > Using port 80, I am getting the html content instead of intended file.
> 
> Using a proxy? Otherwise, can you please show us a complete example code that 
> repeats this problem for you. Which libcurl version on what OS?
> 
> -- 
> 
>   / daniel.haxx.se
I am not using proxy. Version is 7.22.0 on QNX6
/*
 * http_curl_setopt_perform
 */
static fetchd_rc_t
http_curl_setopt_perform (CURL                   *curl,
                          FILE                   *file,
                          fetchd_client_msg_t    *msg)
{
#ifdef DEBUG_FETCH
    char                 buf[FETCHD_MAX_ERRBUF_LEN];
#endif
    char                 srv_cert[FETCHD_MAX_SRVRCERT_LEN];
    uint16_t             port;
    CURLcode             curl_rc;
    fetchd_rc_t          fetchd_rc = FETCHD_RC_OK;
    bool                 http_need_ssltls = false;
    if (msg == NULL) {
        fetchd_rc = FETCHD_RC_INVALID_MSG;
        return(fetchd_rc);
    }
    /* parse url and resolve name if needed */
    fetchd_rc = http_curl_parse_resolve_url(msg->frm_ctx_idx,
                                            msg->frm_url,
                                            &port,
                                            &http_need_ssltls);
    if (fetchd_rc != FETCHD_RC_OK) {
        return(fetchd_rc);
    }
#ifdef DEBUG_FETCH
    curl_rc = curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
    /* ASSERT_CLASS_LOGICAL */
    nv_assert(curl_rc == CURLE_OK, "VERBOSE failed %d", curl_rc);
    curl_rc = curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, buf);
    /* ASSERT_CLASS_LOGICAL */
    nv_assert(curl_rc == CURLE_OK, "ERRORBUFFER failed %d", curl_rc);
#endif
    curl_rc = curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
    /* ASSERT_CLASS_LOGICAL */
    nv_assert(curl_rc == CURLE_OK, "NOPROGRESS failed %d", curl_rc);
    curl_rc = curl_easy_setopt(curl, CURLOPT_URL, msg->frm_url);
    /* ASSERT_CLASS_LOGICAL */
    nv_assert(curl_rc == CURLE_OK, "URL failed %d", curl_rc);
    curl_rc = curl_easy_setopt(curl, CURLOPT_HEADER, 0L);
    /* ASSERT_CLASS_LOGICAL */
    nv_assert(curl_rc == CURLE_OK, "HEADER failed %d", curl_rc);
    curl_rc = curl_easy_setopt(curl, CURLOPT_PORT, port);
    /* ASSERT_CLASS_LOGICAL */
    nv_assert(curl_rc == CURLE_OK, "PORT failed %d", curl_rc);
    curl_rc = curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
    /* ASSERT_CLASS_LOGICAL */
    nv_assert(curl_rc == CURLE_OK, "FOLLOWLOCATION failed %d", curl_rc);
    //curl_rc = curl_easy_setopt(curl, CURLOPT_WILDCARDMATCH, 1L);
    /* ASSERT_CLASS_LOGICAL */
    //nv_assert(curl_rc == CURLE_OK, "WILDCARDMATCH failed %d", curl_rc);
    if (http_need_ssltls) {
        fetchd_rc = http_curl_find_ssltls_cert(msg->frm_ctx_name,
                                               srv_cert);
        if (fetchd_rc != FETCHD_RC_OK) {
            return(fetchd_rc);
        }
        /* Transport Layer Security (TLS)  for https service */
        curl_rc = curl_easy_setopt(curl, CURLOPT_USE_SSL,
                                   (long)CURLUSESSL_ALL);
        /* ASSERT_CLASS_LOGICAL */
        nv_assert(curl_rc == CURLE_OK, "USE_SSL failed %d", curl_rc);
        curl_rc = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
        /* ASSERT_CLASS_LOGICAL */
        nv_assert(curl_rc == CURLE_OK, "VERIFYPEER failed %d", curl_rc);
        curl_rc = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
        /* ASSERT_CLASS_LOGICAL */
        nv_assert(curl_rc == CURLE_OK, "VERIFYHOST failed %d", curl_rc);
        curl_rc = curl_easy_setopt(curl, CURLOPT_CAINFO, srv_cert);
        /* ASSERT_CLASS_LOGICAL */
        nv_assert(curl_rc == CURLE_OK, "CAINFO failed %d", curl_rc);
        curl_rc = curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM");
        /* ASSERT_CLASS_LOGICAL */
        nv_assert(curl_rc == CURLE_OK, "SSLCERTTYPE failed %d", curl_rc);
        curl_rc = curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION,
                                   http_curl_ssl_ctx);
        /* ASSERT_CLASS_LOGICAL */
        nv_assert(curl_rc == CURLE_OK, "CTX_FUNCTION failed %d", curl_rc);
        curl_rc = curl_easy_setopt(curl, CURLOPT_SSL_CTX_DATA, NULL);
        /* ASSERT_CLASS_LOGICAL */
        nv_assert(curl_rc == CURLE_OK, "CTX_DATA failed %d", curl_rc);
    }
    /* call this function to get a socket */
    curl_rc = curl_easy_setopt(curl, CURLOPT_OPENSOCKETFUNCTION,
                               http_curl_open_socket);
    /* ASSERT_CLASS_LOGICAL */
    nv_assert(curl_rc == CURLE_OK, "OPENSOCKETFUNCTION failed %d", curl_rc);
    curl_rc = curl_easy_setopt(curl, CURLOPT_OPENSOCKETDATA,
                               (void *)msg->frm_ctx_idx);
    /* ASSERT_CLASS_LOGICAL */
    nv_assert(curl_rc == CURLE_OK, "OPENSOCKETDATA failed %d", curl_rc);
    /* write to the file */
    //curl_rc = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,
    //                           http_curl_write_data);
    /* ASSERT_CLASS_LOGICAL */
    //nv_assert(curl_rc == CURLE_OK, "WRITEFUNCTION failed %d", curl_rc);
    /* write to the file */
    curl_rc = curl_easy_setopt(curl, CURLOPT_WRITEDATA, file);
    /* ASSERT_CLASS_LOGICAL */
    nv_assert(curl_rc == CURLE_OK, "WRITEDATA failed %d", curl_rc);
    /* perform the curl request */
    curl_rc = http_curl_perform(curl);
    if (curl_rc != CURLE_OK) {
#ifdef DEBUG_FETCH
        evl_fetchd_log_general("%s: error [rc %u] buf [%s]",
                               __FUNCTION__, curl_rc, buf);
#endif
        fetchd_rc = FETCHD_RC_CURL_PERFORM_FAIL;
    }
    return(fetchd_rc);
}
> -------------------------------------------------------------------
> List admin: http://cool.haxx.se/list/listinfo/curl-library
> Etiquette:  http://curl.haxx.se/mail/etiquette.html
                                               
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html
Received on 2012-08-30