diff options
author | Xavier Roche <xroche@users.noreply.github.com> | 2014-05-18 13:11:40 +0000 |
---|---|---|
committer | Xavier Roche <xroche@users.noreply.github.com> | 2014-05-18 13:11:40 +0000 |
commit | fe7ea8b140aebdff88d171ca57650917905c6639 (patch) | |
tree | 2f1f5aef63cda72f9cc81a77109bf462bf8bd058 /src/htscatchurl.c | |
parent | 1fd27d74afe877424122f510c6e1b81264992883 (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.c | 41 |
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))); } } |