Yop all,
Je suis actuellement en train de coder un p'tit proxy web en python, tout bête.
En gros, je fais un listen, le fork() en cas de connexion, ensuite dans le fils, je récupère la requête (ça marche), je parse l'adresse de l'hôte (pour pas envoyer un GET http://www.google.fr HTTP/1.1 etc, mais bien un GET / HTTP/1.1), et je renvoie tout.
Bon, sauf que voila, je reçois rien en retour. J'ai jeté un oeil avec un sniffer (wireshark, pour ne pas le citer), et, comparé au résultat d'un sniff sur firefox sans proxy, j'ai ces 2 différences:
-la requête met beaucoup plus de temps à apparaitre dans ethereal avec un proxy (qques secondes de plus, y compris pour les paquets SYN/ACK...)... Mais ça vient pt'etre du fait que j'utilise sendall()... Je vais vérifier
-le paquet contenant la requête est identifié comme [TCP segment of a reassembled PCU], alors qu'avec firefox j'ai un GET / HTTP/1.1...
Du coup j'ai un p'tit peu jonglé avec les timeout, sans rien changer, et je me dis que ça vient du réseau, et pas de ma requête (elle est bien envoyée), et que doit me manquer un paramètre ici ou là. Sauf que j'ai utilisé le même style de code qu'un client ftp que j'avais codé, et qui, lui, marchait très bien...
Voila, si quelqu'un a une idée... Je poste pas (encore) le code, vu que je doute que ça viene de là (et que je code comme un malpropre), mais si il fait besoin, no pb.
Merci d'avance, et bonne soirée à tous
EDIT: okay, j'ai compris d'où vient le retard dans mes envois/receptions, en fait, tout se fait d'un bloc lorsque le process fils exit... forcément, ça peut pas le faire bien longtemps. Ca me rappelle un peu le C, tiens .
EDIT²: okay, aussi, en mettant un timeout, ça aide. Du coup retour au point de départ, je reçois rien du serveur, et mon paquet est bizarre...
EDIT3: une fois de plus j'ai trouvé tout seul comme un grand :p. En fait lors du parsing de la requete, un \r\n (apres http\1.1) sautait... Mais, fait bizarre, pour que ça marche maintenant, faut que je vire le dernier 1 de http/1.1 et que je rajoute un\r\n à la place, sinon, mauvaise requete.
EDIT 4: maintenant, autre problème, quoique je demande comme page, je me prend une erreur 302 qui me dit "le document a bougé àla même adresse...", du coup le browser recharge la même page, et ainsi de suite... Une idée d'où ça vient???
Partager