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