4822l5

Listing 5. Server Accept Loop

94      while(1){
95        if((s=accept(sock,0,0))<0)
96          err_exit("Problem accepting");
97
98        if((pid=fork())){
99          close(s);
100        }
101        else {
102          sbio=BIO_new_socket(s,BIO_NOCLOSE);
103          ssl=SSL_new(ctx);
104          SSL_set_bio(ssl,sbio,sbio);
105
106          if((r=SSL_accept(ssl)<=0))
107            berr_exit("SSL accept error");
108
109          http_serve(ssl,s);
110          exit(0);
111        }
112      }
