/[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.1 by pseudo, Mon Nov 8 10:02:30 2010 UTC revision 1.6.2.2 by pseudo, Wed Jan 12 13:54:00 2011 UTC
# Line 173  int setsockname(sockname_t *addr, char * Line 173  int setsockname(sockname_t *addr, char *
173        hp = NULL;        hp = NULL;
174      if (hp) {      if (hp) {
175        if (hp->h_addrtype == AF_INET)        if (hp->h_addrtype == AF_INET)
176          egg_memcpy(&addr->addr.s4.sin_addr, hp->h_addr, hp->h_length);          memcpy(&addr->addr.s4.sin_addr, hp->h_addr, hp->h_length);
177        else        else
178          egg_memcpy(&addr->addr.s6.sin6_addr, hp->h_addr, hp->h_length);          memcpy(&addr->addr.s6.sin6_addr, hp->h_addr, hp->h_length);
179        af = hp->h_addrtype;        af = hp->h_addrtype;
180      }      }
181    }    }
# Line 202  int setsockname(sockname_t *addr, char * Line 202  int setsockname(sockname_t *addr, char *
202      } else      } else
203        hp = NULL;        hp = NULL;
204      if (hp) {      if (hp) {
205        egg_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    } else
# Line 455  static int proxy_connect(int sock, sockn Line 455  static int proxy_connect(int sock, sockn
455      for (i = 0; i < threaddata()->MAXSOCKS; i++)      for (i = 0; i < threaddata()->MAXSOCKS; i++)
456        if (!(socklist[i].flags & SOCK_UNUSED) && socklist[i].sock == sock)        if (!(socklist[i].flags & SOCK_UNUSED) && socklist[i].sock == sock)
457          socklist[i].flags |= SOCK_PROXYWAIT;    /* drummer */          socklist[i].flags |= SOCK_PROXYWAIT;    /* drummer */
458      egg_memcpy(host, &addr->addr.s4.sin_addr.s_addr, 4);      memcpy(host, &addr->addr.s4.sin_addr.s_addr, 4);
459      egg_snprintf(s, sizeof s, "\004\001%c%c%c%c%c%c%s", port % 256,      egg_snprintf(s, sizeof s, "\004\001%c%c%c%c%c%c%s", port % 256,
460                   (port >> 8) % 256, host[0], host[1], host[2], host[3], botuser);                   (port >> 8) % 256, host[0], host[1], host[2], host[3], botuser);
461      tputs(sock, s, strlen(botuser) + 9);        /* drummer */      tputs(sock, s, strlen(botuser) + 9);        /* drummer */
# Line 907  int sockgets(char *s, int *len) Line 907  int sockgets(char *s, int *len)
907          /* Handling buffered binary data (must have been SOCK_BUFFER before). */          /* Handling buffered binary data (must have been SOCK_BUFFER before). */
908          if (socklist[i].handler.sock.inbuflen <= 510) {          if (socklist[i].handler.sock.inbuflen <= 510) {
909            *len = socklist[i].handler.sock.inbuflen;            *len = socklist[i].handler.sock.inbuflen;
910            egg_memcpy(s, socklist[i].handler.sock.inbuf, socklist[i].handler.sock.inbuflen);            memcpy(s, socklist[i].handler.sock.inbuf, socklist[i].handler.sock.inbuflen);
911            nfree(socklist[i].handler.sock.inbuf);            nfree(socklist[i].handler.sock.inbuf);
912            socklist[i].handler.sock.inbuf = NULL;            socklist[i].handler.sock.inbuf = NULL;
913            socklist[i].handler.sock.inbuflen = 0;            socklist[i].handler.sock.inbuflen = 0;
914          } else {          } else {
915            /* Split up into chunks of 510 bytes. */            /* Split up into chunks of 510 bytes. */
916            *len = 510;            *len = 510;
917            egg_memcpy(s, socklist[i].handler.sock.inbuf, *len);            memcpy(s, socklist[i].handler.sock.inbuf, *len);
918            egg_memcpy(socklist[i].handler.sock.inbuf, socklist[i].handler.sock.inbuf + *len, *len);            memcpy(socklist[i].handler.sock.inbuf, socklist[i].handler.sock.inbuf + *len, *len);
919            socklist[i].handler.sock.inbuflen -= *len;            socklist[i].handler.sock.inbuflen -= *len;
920            socklist[i].handler.sock.inbuf = nrealloc(socklist[i].handler.sock.inbuf, socklist[i].handler.sock.inbuflen);            socklist[i].handler.sock.inbuf = nrealloc(socklist[i].handler.sock.inbuf, socklist[i].handler.sock.inbuflen);
921          }          }
# Line 944  int sockgets(char *s, int *len) Line 944  int sockgets(char *s, int *len)
944        socklist[ret].handler.sock.inbuflen = *len;        socklist[ret].handler.sock.inbuflen = *len;
945        socklist[ret].handler.sock.inbuf = nmalloc(*len + 1);        socklist[ret].handler.sock.inbuf = nmalloc(*len + 1);
946        /* It might be binary data. You never know. */        /* It might be binary data. You never know. */
947        egg_memcpy(socklist[ret].handler.sock.inbuf, xx, *len);        memcpy(socklist[ret].handler.sock.inbuf, xx, *len);
948        socklist[ret].handler.sock.inbuf[*len] = 0;        socklist[ret].handler.sock.inbuf[*len] = 0;
949      }      }
950      socklist[ret].flags &= ~SOCK_CONNECT;      socklist[ret].flags &= ~SOCK_CONNECT;
# Line 952  int sockgets(char *s, int *len) Line 952  int sockgets(char *s, int *len)
952      return socklist[ret].sock;      return socklist[ret].sock;
953    }    }
954    if (socklist[ret].flags & SOCK_BINARY) {    if (socklist[ret].flags & SOCK_BINARY) {
955      egg_memcpy(s, xx, *len);      memcpy(s, xx, *len);
956      return socklist[ret].sock;      return socklist[ret].sock;
957    }    }
958    if (socklist[ret].flags & (SOCK_LISTEN | SOCK_PASS | SOCK_TCL)) {    if (socklist[ret].flags & (SOCK_LISTEN | SOCK_PASS | SOCK_TCL)) {
# Line 962  int sockgets(char *s, int *len) Line 962  int sockgets(char *s, int *len)
962    if (socklist[ret].flags & SOCK_BUFFER) {    if (socklist[ret].flags & SOCK_BUFFER) {
963      socklist[ret].handler.sock.inbuf = (char *) nrealloc(socklist[ret].handler.sock.inbuf,      socklist[ret].handler.sock.inbuf = (char *) nrealloc(socklist[ret].handler.sock.inbuf,
964                                              socklist[ret].handler.sock.inbuflen + *len + 1);                                              socklist[ret].handler.sock.inbuflen + *len + 1);
965      egg_memcpy(socklist[ret].handler.sock.inbuf + socklist[ret].handler.sock.inbuflen, xx, *len);      memcpy(socklist[ret].handler.sock.inbuf + socklist[ret].handler.sock.inbuflen, xx, *len);
966      socklist[ret].handler.sock.inbuflen += *len;      socklist[ret].handler.sock.inbuflen += *len;
967      /* We don't know whether it's binary data. Make sure normal strings      /* We don't know whether it's binary data. Make sure normal strings
968       * will be handled properly later on too. */       * will be handled properly later on too. */
# Line 1084  void tputs(register int z, char *s, unsi Line 1084  void tputs(register int z, char *s, unsi
1084        if (socklist[i].handler.sock.outbuf != NULL) {        if (socklist[i].handler.sock.outbuf != NULL) {
1085          /* Already queueing: just add it */          /* Already queueing: just add it */
1086          p = (char *) nrealloc(socklist[i].handler.sock.outbuf, socklist[i].handler.sock.outbuflen + len);          p = (char *) nrealloc(socklist[i].handler.sock.outbuf, socklist[i].handler.sock.outbuflen + len);
1087          egg_memcpy(p + socklist[i].handler.sock.outbuflen, s, len);          memcpy(p + socklist[i].handler.sock.outbuflen, s, len);
1088          socklist[i].handler.sock.outbuf = p;          socklist[i].handler.sock.outbuf = p;
1089          socklist[i].handler.sock.outbuflen += len;          socklist[i].handler.sock.outbuflen += len;
1090          return;          return;
# Line 1112  void tputs(register int z, char *s, unsi Line 1112  void tputs(register int z, char *s, unsi
1112        if (x < len) {        if (x < len) {
1113          /* Socket is full, queue it */          /* Socket is full, queue it */
1114          socklist[i].handler.sock.outbuf = nmalloc(len - x);          socklist[i].handler.sock.outbuf = nmalloc(len - x);
1115          egg_memcpy(socklist[i].handler.sock.outbuf, &s[x], len - x);          memcpy(socklist[i].handler.sock.outbuf, &s[x], len - x);
1116          socklist[i].handler.sock.outbuflen = len - x;          socklist[i].handler.sock.outbuflen = len - x;
1117        }        }
1118        return;        return;
# Line 1209  void dequeue_sockets() Line 1209  void dequeue_sockets()
1209    
1210          /* This removes any sent bytes from the beginning of the buffer */          /* This removes any sent bytes from the beginning of the buffer */
1211          socklist[i].handler.sock.outbuf = nmalloc(socklist[i].handler.sock.outbuflen - x);          socklist[i].handler.sock.outbuf = nmalloc(socklist[i].handler.sock.outbuflen - x);
1212          egg_memcpy(socklist[i].handler.sock.outbuf, p + x, socklist[i].handler.sock.outbuflen - x);          memcpy(socklist[i].handler.sock.outbuf, p + x, socklist[i].handler.sock.outbuflen - x);
1213          socklist[i].handler.sock.outbuflen -= x;          socklist[i].handler.sock.outbuflen -= x;
1214          nfree(p);          nfree(p);
1215        } else {        } else {

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

webmaster@eggheads.org
ViewVC Help
Powered by ViewVC 1.1.23