summaryrefslogtreecommitdiff
path: root/src/htscatchurl.c
diff options
context:
space:
mode:
authorXavier Roche <xroche@users.noreply.github.com>2014-05-18 13:11:40 +0000
committerXavier Roche <xroche@users.noreply.github.com>2014-05-18 13:11:40 +0000
commitfe7ea8b140aebdff88d171ca57650917905c6639 (patch)
tree2f1f5aef63cda72f9cc81a77109bf462bf8bd058 /src/htscatchurl.c
parent1fd27d74afe877424122f510c6e1b81264992883 (diff)
Big cleanup in network address and dns functions:
* removed t_fullhostent insanity * removed (struct sockaddr*) casts * use SOCaddr everywhere rather than raw struct hostent*
Diffstat (limited to 'src/htscatchurl.c')
-rw-r--r--src/htscatchurl.c41
1 files changed, 12 insertions, 29 deletions
diff --git a/src/htscatchurl.c b/src/htscatchurl.c
index 0ed89d5..e5da40b 100644
--- a/src/htscatchurl.c
+++ b/src/htscatchurl.c
@@ -77,40 +77,25 @@ HTSEXT_API T_SOC catch_url_init_std(int *port_prox, char *adr_prox) {
// 1- Init the URL catcher
// catch_url_init(&port,&return_host);
-HTSEXT_API T_SOC catch_url_init(int *port, char *adr) {
+HTSEXT_API T_SOC catch_url_init(int *port, /* 128 bytes */ char *adr) {
T_SOC soc = INVALID_SOCKET;
- char h_loc[256 + 2];
+ char h_loc[256];
- if (gethostname(h_loc, 256) == 0) { // host name
+ if (gethostname(h_loc, sizeof(h_loc)) == 0) { // host name
SOCaddr server;
- int server_size = sizeof(server);
- t_hostent *hp_loc;
- t_fullhostent buffer;
-
- // effacer structure
- memset(&server, 0, sizeof(server));
-
- if ((hp_loc = vxgethostbyname(h_loc, &buffer))) { // notre host
-
- // copie adresse
- SOCaddr_copyaddr(server, server_size, hp_loc->h_addr_list[0],
- hp_loc->h_length);
-
+ if (hts_dns_resolve_nocache(h_loc, &server) != NULL) { // notre host
if ((soc =
(T_SOC) socket(SOCaddr_sinfamily(server), SOCK_STREAM,
0)) != INVALID_SOCKET) {
SOCaddr_initport(server, *port);
- if (bind(soc, (struct sockaddr *) &server, server_size) == 0) {
+ if (bind(soc, &SOCaddr_sockaddr(server), SOCaddr_size(server)) == 0) {
SOCaddr server2;
- SOClen len;
+ SOClen len = SOCaddr_capacity(server2);
- len = sizeof(server2);
- // effacer structure
- memset(&server2, 0, sizeof(server2));
- if (getsockname(soc, (struct sockaddr *) &server2, &len) == 0) {
+ if (getsockname(soc, &SOCaddr_sockaddr(server2), &len) == 0) {
*port = ntohs(SOCaddr_sinport(server)); // récupérer port
- if (listen(soc, 10) >= 0) { // au pif le 10
- SOCaddr_inetntoa(adr, 128, server2, len);
+ if (listen(soc, 1) >= 0) {
+ SOCaddr_inetntoa(adr, 128, server2);
} else {
#ifdef _WIN32
closesocket(soc);
@@ -168,14 +153,12 @@ HTSEXT_API int catch_url(T_SOC soc, char *url, char *method, char *data) {
/* INFOS */
{
SOCaddr server2;
- SOClen len = sizeof(server2);
+ SOClen len = SOCaddr_capacity(server2);
- // effacer structure
- memset(&server2, 0, sizeof(server2));
- if (getpeername(soc, (struct sockaddr *) &server2, &len) == 0) {
+ if (getpeername(soc, &SOCaddr_sockaddr(server2), &len) == 0) {
char dot[256 + 2];
- SOCaddr_inetntoa(dot, 256, server2, sizeof(server2));
+ SOCaddr_inetntoa(dot, sizeof(dot), server2);
sprintf(url, "%s:%d", dot, ntohs(SOCaddr_sinport(server2)));
}
}