[haiku-commits] r40247 - haiku/trunk/src/add-ons/kernel/network/devices/dialup

  • From: philippe.houdoin@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 18 Jan 2011 21:08:48 +0100 (CET)

Author: phoudoin
Date: 2011-01-18 21:08:48 +0100 (Tue, 18 Jan 2011)
New Revision: 40247
Changeset: http://dev.haiku-os.org/changeset/40247

Modified:
   haiku/trunk/src/add-ons/kernel/network/devices/dialup/dialup.cpp
Log:
Okay, by quick and dirty, one should read broken.


Modified: haiku/trunk/src/add-ons/kernel/network/devices/dialup/dialup.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/network/devices/dialup/dialup.cpp    
2011-01-18 19:57:22 UTC (rev 40246)
+++ haiku/trunk/src/add-ons/kernel/network/devices/dialup/dialup.cpp    
2011-01-18 20:08:48 UTC (rev 40247)
@@ -53,7 +53,7 @@
        char                    escape_string[8];
        bigtime_t               escape_silence;
        char                    hangup_string[16];
-       bigtime_t               flag_timeout;
+       bigtime_t               tx_flag_timeout;
        uint32                  rx_accm;
        uint32                  tx_accm[8];
 };
@@ -226,8 +226,8 @@
        device->tx_flag_timeout = 1000000;
 
        // default rx & tx Async-Control-Character-Map
-       memset(device->rx_accm, 0xFF, sizeof(device->rx_accm));
-       memset(device->tx_accm, 0xFF, sizeof(device->tx_accm));
+       memset(&device->rx_accm, 0xFF, sizeof(device->rx_accm));
+       memset(&device->tx_accm, 0xFF, sizeof(device->tx_accm));
 
        *_device = device;
        return B_OK;
@@ -401,8 +401,9 @@
        // more than a second ago.
        // Otherwise, the prior closing flag sequence is the open flag of this
        // frame
-       if (device->flag_timeout
-               && system_time() - device->last_closing_flag_sequence_time > 
device->flagt_timeout) {
+       if (device->tx_flag_timeout
+               && system_time() - device->last_closing_flag_sequence_time
+                       > device->tx_flag_timeout) {
                packet[packetSize++] = HDLC_FLAG_SEQUENCE;
        }
 
@@ -463,15 +464,17 @@
        if (buffer == NULL)
                return ENOBUFS;
 
+       status_t status;
        ssize_t bytesRead;
-       uint8* data;
-       packet = (uint8*)malloc(2 + 2 * buffer->size);
+       uint8* data = NULL;
+       uint8* packet = (uint8*)malloc(2 + 2 * buffer->size);
        if (packet == NULL) {
                status = B_NO_MEMORY;
                goto err;
        }
 
-       status_t status = gBufferModule->append_size(buffer, device->mtu + 
HDLC_HEADER_LENGTH, &data);
+       status = gBufferModule->append_size(buffer,
+               device->mtu + HDLC_HEADER_LENGTH, (void**)&data);
        if (status == B_OK && data == NULL) {
                dprintf("scattered I/O is not yet supported by dialup 
device.\n");
                status = B_NOT_SUPPORTED;
@@ -480,9 +483,10 @@
                goto err;
 
        while (true) {
-               bytesRead = read(device->fd, data, device->frame_size);
+               bytesRead = read(device->fd, data, device->mtu + 
HDLC_HEADER_LENGTH);
                if (bytesRead < 0) {
-
+                       // TODO
+               }
        }
 
        status = gBufferModule->trim(buffer, bytesRead);
@@ -495,10 +499,12 @@
        device->stats.receive.packets++;
 
        *_buffer = buffer;
-       return B_OK;
+       status = B_OK;
+       goto done;
 
 err:
        gBufferModule->free(buffer);
+       device->stats.receive.errors++;
 
 done:
        free(packet);


Other related posts:

  • » [haiku-commits] r40247 - haiku/trunk/src/add-ons/kernel/network/devices/dialup - philippe . houdoin