1 (edited by JoKnarf 2008-06-16 13:21:02)

Topic: Pb with VirtualHost

Bonjour,

J'ai un petit soucis avec <VirtualHost monnomip:22> : marche pô sad :
alors j'ai essayé de voir pourquoi :

parsing.c
      (void )snprintf(buffer, sizeof(buffer), "%ui.%ui.%ui.%ui",
                      (unsigned int)h->h_addr_list[0][0],
                      (unsigned int)h->h_addr_list[0][1],
                      (unsigned int)h->h_addr_list[0][2],
                      (unsigned int)h->h_addr_list[0][3]
                      );

souci avec %ui :

user.c
  current_host = (char *)hash_get("VIRTUALHOST_IP");
  current_port = hash_get_int("VIRTUALHOST_PORT");
// ajout print pour comprendre
  if(current_host != NULL) (void )printf("%s %i", current_host,current_port);

printf donne :
4294967224i.90i.23i.108i
au lieu de 184.90.23.108

avec %u
donne :
4294967224.90.23.108

mieux mais pas top

Visiblement ça se fait plutôt comme ça :

parsing.c :

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

      struct in_addr in;
      (void) memcpy(&in.s_addr, *h->h_addr_list, sizeof (in.s_addr));
      (void )snprintf(buffer, sizeof(buffer), "%s", inet_ntoa(in));

testé sur Solaris/Linux ok
JoK

Re: Pb with VirtualHost

Bonjour,

Effectivement il y avait déjà une fonction qui fait le nécessaire.

Le patch est pris en compte big_smile


Merci !