Changes in uspace/lib/http/src/http.c [779541b:b623b68] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/http/src/http.c
r779541b rb623b68 34 34 */ 35 35 36 #include <errno.h>37 36 #include <stdio.h> 38 37 #include <stdlib.h> … … 40 39 #include <macros.h> 41 40 41 #include <net/socket.h> 42 42 #include <inet/dnsr.h> 43 #include <inet/tcp.h>44 43 45 44 #include <http/http.h> … … 49 48 { 50 49 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); 59 51 } 60 52 … … 85 77 int http_connect(http_t *http) 86 78 { 87 if (http->conn != NULL)79 if (http->connected) 88 80 return EBUSY; 89 81 … … 94 86 /* Interpret as a host name */ 95 87 dnsr_hostinfo_t *hinfo = NULL; 96 rc = dnsr_name2host(http->host, &hinfo, ip_any);88 rc = dnsr_name2host(http->host, &hinfo, AF_NONE); 97 89 98 90 if (rc != EOK) … … 103 95 } 104 96 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); 106 100 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; 110 104 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 } 122 117 123 118 return rc; … … 126 121 int http_close(http_t *http) 127 122 { 128 if ( http->conn == NULL)123 if (!http->connected) 129 124 return EINVAL; 130 125 131 tcp_conn_destroy(http->conn); 132 tcp_destroy(http->tcp); 133 return EOK; 126 return closesocket(http->conn_sd); 134 127 } 135 128
Note:
See TracChangeset
for help on using the changeset viewer.