Gå til innhold

Feil i lokka, kjorer kun en gang


Anbefalte innlegg

Halla har laget et lite program her som skal lese recipient to: feltet naar jeg sender mail. Men jeg faar bare kjoet gjennom en gang dvs at jeg ma starte programmet for hver mail jeg sender, og det er ikke saa gunstig. Hvis noen hadde funnet den feilen jeg har gjort hadde det vaert fint:)

smtpprox.pm

Endret av embret
Lenke til kommentar
Videoannonse
Annonse

Bra at noen poster kode her..

 

Er ingen hacker med sockets, men studerte koden litt og tror at feilen ligger i at du har blingset en smule med logikken, slik at parent blir sittende fast i den andre while(1) sløyfen og dermed ikke kan motta flere forbindelser.

 

Jeg ville opprettet to subrutiner som child procs kan benytte for å håndtere tilkoblinger, da får du mer oversiktelig kode. Noe slik kanskje:

   while (1) {
      #parent venter på forb.
      #...

       if ($client == $smtpSoc) {
           if ($pid = fork) {
                 #parent
               close $connect;      
           }
        
           else {    
                 #child
               DoSMTPSocStuff(ARGS);
           }
       }
  
       if {$client == $SMTPQuery) {
           if ($pid = fork) {
                 #parent
               close $connect;   
           }
           else {    
                 #child
               DoSMTPQueryStuff(ARGS);
           }
       }  
   }

 

En annen ting er at du vel burde bruke "use strict" her..fort å gå i surr når du får såpass langt script..samt skikkelig indentering skader heller ikke..men kult skript.Hva skal du bruke dette til?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...