Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • benchmark/io/http/main.cfa

    rce98816 r86c12d65  
    234234        int addrlen = prepaddr(address);
    235235
    236         int server_fd = listener(address, addrlen);
     236        int server_fd;
     237        if(!options.socket.manyreuse) {
     238                server_fd = listener(address, addrlen);
     239        }
    237240
    238241        //===================
     
    271274                                                workers[i].pipe[0] = fds[pipe_off + (i * 2) + 0];
    272275                                                workers[i].pipe[1] = fds[pipe_off + (i * 2) + 1];
    273                                                 workers[i].sockfd  = server_fd;
     276                                                workers[i].sockfd  = options.socket.manyreuse ?  listener(address, addrlen) : server_fd;
    274277                                                workers[i].addr    = (struct sockaddr *)&address;
    275278                                                workers[i].addrlen = (socklen_t*)&addrlen;
     
    311314
    312315                                sout | "Shutting down socket..." | nonl; flush( sout );
    313                                 int ret = shutdown( server_fd, SHUT_RD );
    314                                 if( ret < 0 ) {
    315                                         abort( "shutdown error: (%d) %s\n", (int)errno, strerror(errno) );
     316                                if(options.socket.manyreuse) {
     317                                        for(i; options.clopts.nworkers) {
     318                                                ret = shutdown( workers[i].sockfd, SHUT_RD );
     319                                                if(ret < 0) abort( "close socket %d error: (%d) %s\n", i, (int)errno, strerror(errno) );
     320                                        }
     321                                }
     322                                else {
     323                                        ret = shutdown( server_fd, SHUT_RD );
     324                                        if( ret < 0 ) {
     325                                                abort( "shutdown error: (%d) %s\n", (int)errno, strerror(errno) );
     326                                        }
    316327                                }
    317328                                sout | "done";
     
    320331                                // Close Socket
    321332                                sout | "Closing Socket..." | nonl; flush( sout );
    322                                 ret = close( server_fd );
    323                                 if(ret < 0) {
    324                                         abort( "close socket error: (%d) %s\n", (int)errno, strerror(errno) );
     333                                if(options.socket.manyreuse) {
     334                                        for(i; options.clopts.nworkers) {
     335                                                ret = close(workers[i].sockfd);
     336                                                if(ret < 0) abort( "close socket %d error: (%d) %s\n", i, (int)errno, strerror(errno) );
     337                                        }
     338                                }
     339                                else {
     340                                        ret = close( server_fd );
     341                                        if(ret < 0) {
     342                                                abort( "close socket error: (%d) %s\n", (int)errno, strerror(errno) );
     343                                        }
    325344                                }
    326345                                sout | "done";
Note: See TracChangeset for help on using the changeset viewer.