Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/http/src/http.c

    r779541b rb623b68  
    3434 */
    3535
    36 #include <errno.h>
    3736#include <stdio.h>
    3837#include <stdlib.h>
     
    4039#include <macros.h>
    4140
     41#include <net/socket.h>
    4242#include <inet/dnsr.h>
    43 #include <inet/tcp.h>
    4443
    4544#include <http/http.h>
     
    4948{
    5049        http_t *http = client_data;
    51         size_t nrecv;
    52         int rc;
    53 
    54         rc = tcp_conn_recv_wait(http->conn, buf, buf_size, &nrecv);
    55         if (rc != EOK)
    56                 return rc;
    57 
    58         return nrecv;
     50        return recv(http->conn_sd, buf, buf_size, 0);
    5951}
    6052
     
    8577int http_connect(http_t *http)
    8678{
    87         if (http->conn != NULL)
     79        if (http->connected)
    8880                return EBUSY;
    8981       
     
    9486                /* Interpret as a host name */
    9587                dnsr_hostinfo_t *hinfo = NULL;
    96                 rc = dnsr_name2host(http->host, &hinfo, ip_any);
     88                rc = dnsr_name2host(http->host, &hinfo, AF_NONE);
    9789               
    9890                if (rc != EOK)
     
    10395        }
    10496       
    105         inet_ep2_t epp;
     97        struct sockaddr_in addr;
     98        struct sockaddr_in6 addr6;
     99        uint16_t af = inet_addr_sockaddr_in(&http->addr, &addr, &addr6);
    106100       
    107         inet_ep2_init(&epp);
    108         epp.remote.addr = http->addr;
    109         epp.remote.port = http->port;
     101        http->conn_sd = socket(PF_INET, SOCK_STREAM, 0);
     102        if (http->conn_sd < 0)
     103                return http->conn_sd;
    110104       
    111         rc = tcp_create(&http->tcp);
    112         if (rc != EOK)
    113                 return rc;
    114        
    115         rc = tcp_conn_create(http->tcp, &epp, NULL, NULL, &http->conn);
    116         if (rc != EOK)
    117                 return rc;
    118        
    119         rc = tcp_conn_wait_connected(http->conn);
    120         if (rc != EOK)
    121                 return rc;
     105        switch (af) {
     106        case AF_INET:
     107                addr.sin_port = htons(http->port);
     108                rc = connect(http->conn_sd, (struct sockaddr *) &addr, sizeof(addr));
     109                break;
     110        case AF_INET6:
     111                addr6.sin6_port = htons(http->port);
     112                rc = connect(http->conn_sd, (struct sockaddr *) &addr6, sizeof(addr6));
     113                break;
     114        default:
     115                return ENOTSUP;
     116        }
    122117       
    123118        return rc;
     
    126121int http_close(http_t *http)
    127122{
    128         if (http->conn == NULL)
     123        if (!http->connected)
    129124                return EINVAL;
    130125       
    131         tcp_conn_destroy(http->conn);
    132         tcp_destroy(http->tcp);
    133         return EOK;
     126        return closesocket(http->conn_sd);
    134127}
    135128
Note: See TracChangeset for help on using the changeset viewer.