/[pengfork]/pengfork/src/p3/out.c
ViewVC logotype

Diff of /pengfork/src/p3/out.c

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

revision 1.3 by chupa, Sat Oct 19 12:11:59 2002 UTC revision 1.4 by chupa, Sun Dec 1 01:19:07 2002 UTC
# Line 40  p3_send (data, data_size) Line 40  p3_send (data, data_size)
40       char *data;       char *data;
41       size_t data_size;       size_t data_size;
42  {  {
43    p3_put_packet ( TYPE_DATA, data, data_size);    p3_put_packet (TYPE_DATA, data, data_size);
44  }  }
45    
46  void  void
# Line 56  p3_put_packet (type, data, data_size) Line 56  p3_put_packet (type, data, data_size)
56    if (!data)    if (!data)
57      data_size = 0;      data_size = 0;
58    
59    buf = malloc ( data_size + P3_DATA_OFFSET + 1);    buf = malloc (data_size + P3_DATA_OFFSET + 1);
60    header = (struct p3hdr *) buf;    header = (struct p3hdr *) buf;
61    pdata = &buf[P3_DATA_OFFSET];    pdata = &buf[P3_DATA_OFFSET];
62      
63    /* Fill header */    /* Fill header */
64    header->magic = P3_MAGIC;    header->magic = P3_MAGIC;
65    header->size = htons (data_size + P3_SIZE_OFFSET);    header->size = htons (data_size + P3_SIZE_OFFSET);
# Line 67  p3_put_packet (type, data, data_size) Line 67  p3_put_packet (type, data, data_size)
67      cli.lastseq = p3_next_seq (cli.lastseq);      cli.lastseq = p3_next_seq (cli.lastseq);
68    header->seq = cli.lastseq;    header->seq = cli.lastseq;
69    if (type == TYPE_NACK)    if (type == TYPE_NACK)
70      header->ack = p3_add_seq (srv.lastseq, (PACKET_MAX_SEQ - PACKET_MIN_SEQ) - 1);      header->ack =
71    else        p3_add_seq (srv.lastseq, (PACKET_MAX_SEQ - PACKET_MIN_SEQ) - 1);
72      header->ack =srv.lastseq;    else
73        header->ack = srv.lastseq;
74    header->client = 1;    header->client = 1;
75    header->type = type;    header->type = type;
76    /* Copy data */    /* Copy data */
77    memcpy (pdata, data, data_size);    memcpy (pdata, data, data_size);
78      
79    /* Calculate the checksum */    /* Calculate the checksum */
80    header->checksum =    header->checksum = htons (p3_crc16 ((char *) &header->size, data_size + 5));
     htons (p3_crc16 ((char *) &header->size, data_size + 5));  
81    pdata[data_size] = P3_STOP;    pdata[data_size] = P3_STOP;
82    
83    if (type == TYPE_DATA || type == TYPE_INIT)    if (type == TYPE_DATA || type == TYPE_INIT)
84      {      {
85        dump_raw ("P3 - output", (char *) header, data_size + P3_DATA_OFFSET + 1);        dump_raw ("P3 - output", (char *) header,
86                    data_size + P3_DATA_OFFSET + 1);
87        /* Put the packet into the not yet acknowledged packet window */        /* Put the packet into the not yet acknowledged packet window */
88        win_add(&wunack, buf, data_size + P3_DATA_OFFSET + 1);        win_add (&wunack, buf, data_size + P3_DATA_OFFSET + 1);
89      }      }
90      
91    /* Put the packet into the send window */    /* Put the packet into the send window */
92    win_add(&wsend, buf, data_size + P3_DATA_OFFSET + 1);    win_add (&wsend, buf, data_size + P3_DATA_OFFSET + 1);
93    free(buf);    free (buf);
94  }  }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26