/[cvs]/eggdrop1.8/src/net.c
ViewVC logotype

Diff of /eggdrop1.8/src/net.c

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.6.2.2 by pseudo, Wed Jan 12 13:54:00 2011 UTC revision 1.6.2.3 by thommey, Tue Feb 8 22:06:01 2011 UTC
# Line 205  int setsockname(sockname_t *addr, char * Line 205  int setsockname(sockname_t *addr, char *
205        memcpy(&addr->addr.s4.sin_addr, hp->h_addr, hp->h_length);        memcpy(&addr->addr.s4.sin_addr, hp->h_addr, hp->h_length);
206        af = hp->h_addrtype;        af = hp->h_addrtype;
207      }      }
208    } else    }
     af = AF_INET;  
209        
210    addr->family = addr->addr.s4.sin_family = AF_INET;    addr->family = addr->addr.s4.sin_family = AF_INET;
211    addr->addr.sa.sa_family = addr->family;    addr->addr.sa.sa_family = addr->family;
# Line 728  int sockread(char *s, int *len, sock_lis Line 727  int sockread(char *s, int *len, sock_lis
727               SELECT_TYPE_ARG234 (have_w ? &fdw : NULL),               SELECT_TYPE_ARG234 (have_w ? &fdw : NULL),
728               SELECT_TYPE_ARG234 (have_e ? &fde : NULL),               SELECT_TYPE_ARG234 (have_e ? &fde : NULL),
729               SELECT_TYPE_ARG5 &t);               SELECT_TYPE_ARG5 &t);
730    if (x > 0) {    if (x == -1)
731      /* Something happened */      return -2;                  /* socket error */
732    
733      for (i = 0; i < slistmax; i++) {      for (i = 0; i < slistmax; i++) {
734        if (!tclonly && ((!(slist[i].flags & (SOCK_UNUSED | SOCK_TCL))) &&        if (!tclonly && ((!(slist[i].flags & (SOCK_UNUSED | SOCK_TCL))) &&
735            ((FD_ISSET(slist[i].sock, &fdr)) ||            ((FD_ISSET(slist[i].sock, &fdr)) ||
736  #ifdef TLS  #ifdef TLS
737            (slist[i].ssl && SSL_pending(slist[i].ssl)) ||          (slist[i].ssl && (SSL_pending(slist[i].ssl) ||
738             !SSL_is_init_finished(slist[i].ssl))) ||
739  #endif  #endif
740            ((slist[i].sock == STDOUT) && (!backgrd) &&            ((slist[i].sock == STDOUT) && (!backgrd) &&
741            (FD_ISSET(STDIN, &fdr)))))) {            (FD_ISSET(STDIN, &fdr)))))) {
# Line 747  int sockread(char *s, int *len, sock_lis Line 748  int sockread(char *s, int *len, sock_lis
748              grab = 10;              grab = 10;
749  #ifdef TLS  #ifdef TLS
750            else if (!(slist[i].flags & SOCK_STRONGCONN) &&            else if (!(slist[i].flags & SOCK_STRONGCONN) &&
751              (!(slist[i].ssl) || !SSL_in_init(slist[i].ssl))) {                   (!(slist[i].ssl) || SSL_is_init_finished(slist[i].ssl))) {
752  #else  #else
753            else if (!(slist[i].flags & SOCK_STRONGCONN)) {            else if (!(slist[i].flags & SOCK_STRONGCONN)) {
754  #endif  #endif
# Line 774  int sockread(char *s, int *len, sock_lis Line 775  int sockread(char *s, int *len, sock_lis
775            if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE)            if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE)
776              errno = EAGAIN;              errno = EAGAIN;
777                else                else
778                  debug1(_("SSL error: %s"), ERR_error_string(ERR_get_error(), 0));                debug2(_("%s: SSL error = %s"), "sockread()",
779                         ERR_error_string(ERR_get_error(), 0));
780                x = -1;                x = -1;
781              }              }
782            } else            } else
# Line 832  int sockread(char *s, int *len, sock_lis Line 834  int sockread(char *s, int *len, sock_lis
834            tclsock = i;            tclsock = i;
835        }        }
836      }      }
837    } else if (x == -1)    if (!tclonly) {
     return -2;                  /* socket error */  
   else if (!tclonly) {  
838      s[0] = 0;      s[0] = 0;
839      *len = 0;      *len = 0;
840    }    }
# Line 1098  void tputs(register int z, char *s, unsi Line 1098  void tputs(register int z, char *s, unsi
1098              errno = EAGAIN;              errno = EAGAIN;
1099            else if (!inhere) { /* Out there, somewhere */            else if (!inhere) { /* Out there, somewhere */
1100              inhere = 1;              inhere = 1;
1101              debug1(_("SSL error: %s"), ERR_error_string(ERR_get_error(), 0));              debug2(_("%s: SSL error = %s"), "tputs()",
1102                       ERR_error_string(ERR_get_error(), 0));
1103              inhere = 0;              inhere = 0;
1104            }            }
1105            x = -1;            x = -1;
# Line 1151  void dequeue_sockets() Line 1152  void dequeue_sockets()
1152    FD_ZERO(&wfds);    FD_ZERO(&wfds);
1153    tv.tv_sec = 0;    tv.tv_sec = 0;
1154    tv.tv_usec = 0;               /* we only want to see if it's ready for writing, no need to actually wait.. */    tv.tv_usec = 0;               /* we only want to see if it's ready for writing, no need to actually wait.. */
1155    for (i = 0; i < threaddata()->MAXSOCKS; i++) {    for (i = 0; i < threaddata()->MAXSOCKS; i++)
1156      if (!(socklist[i].flags & (SOCK_UNUSED | SOCK_TCL)) &&      if (!(socklist[i].flags & (SOCK_UNUSED | SOCK_TCL)) &&
1157          socklist[i].handler.sock.outbuf != NULL) {          (socklist[i].handler.sock.outbuf != NULL)) {
1158        FD_SET(socklist[i].sock, &wfds);        FD_SET(socklist[i].sock, &wfds);
1159        z = 1;        z = 1;
1160      }      }
   }  
1161    if (!z)    if (!z)
1162      return;                     /* nothing to write */      return;                     /* nothing to write */
1163    
# Line 1181  void dequeue_sockets() Line 1181  void dequeue_sockets()
1181            if (err == SSL_ERROR_WANT_WRITE || err == SSL_ERROR_WANT_READ)            if (err == SSL_ERROR_WANT_WRITE || err == SSL_ERROR_WANT_READ)
1182              errno = EAGAIN;              errno = EAGAIN;
1183            else            else
1184              debug1(_("SSL error: %s"), ERR_error_string(ERR_get_error(), 0));              debug2(_("%s: SSL error = %s"), "dequeue_sockets()",
1185                       ERR_error_string(ERR_get_error(), 0));
1186            x = -1;            x = -1;
1187          }          }
1188        } else        } else
1189  #endif    #endif  
1190        x = write(socklist[i].sock, socklist[i].handler.sock.outbuf, socklist[i].handler.sock.outbuflen);        x = write(socklist[i].sock, socklist[i].handler.sock.outbuf,
1191                    socklist[i].handler.sock.outbuflen);
1192        if ((x < 0) && (errno != EAGAIN)        if ((x < 0) && (errno != EAGAIN)
1193  #ifdef EBADSLT  #ifdef EBADSLT
1194            && (errno != EBADSLT)            && (errno != EBADSLT)
# Line 1208  void dequeue_sockets() Line 1210  void dequeue_sockets()
1210          char *p = socklist[i].handler.sock.outbuf;          char *p = socklist[i].handler.sock.outbuf;
1211    
1212          /* This removes any sent bytes from the beginning of the buffer */          /* This removes any sent bytes from the beginning of the buffer */
1213          socklist[i].handler.sock.outbuf = nmalloc(socklist[i].handler.sock.outbuflen - x);          socklist[i].handler.sock.outbuf =
1214          memcpy(socklist[i].handler.sock.outbuf, p + x, socklist[i].handler.sock.outbuflen - x);                              nmalloc(socklist[i].handler.sock.outbuflen - x);
1215            memcpy(socklist[i].handler.sock.outbuf, p + x,
1216                   socklist[i].handler.sock.outbuflen - x);
1217          socklist[i].handler.sock.outbuflen -= x;          socklist[i].handler.sock.outbuflen -= x;
1218          nfree(p);          nfree(p);
1219        } else {        } else {

Legend:
Removed from v.1.6.2.2  
changed lines
  Added in v.1.6.2.3

webmaster@eggheads.org
ViewVC Help
Powered by ViewVC 1.1.23