gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r18381 - libmwmodem/src/main


From: gnunet
Subject: [GNUnet-SVN] r18381 - libmwmodem/src/main
Date: Tue, 29 Nov 2011 17:47:44 +0100

Author: ruppa
Date: 2011-11-29 17:47:44 +0100 (Tue, 29 Nov 2011)
New Revision: 18381

Modified:
   libmwmodem/src/main/libmwmodem.c
Log:
Bug fixes at init and run functions
AUTHOR: Christian Rupp
DATE: 2011-11-29

Modified: libmwmodem/src/main/libmwmodem.c
===================================================================
--- libmwmodem/src/main/libmwmodem.c    2011-11-29 16:34:20 UTC (rev 18380)
+++ libmwmodem/src/main/libmwmodem.c    2011-11-29 16:47:44 UTC (rev 18381)
@@ -24,17 +24,12 @@
 #include <malloc.h>
 #include <netinet/in.h>
 #include <string.h>
+#include <sys/ioctl.h>
 
-static union MWAddress
-{
-       const struct sockaddr_in address4;
-       const struct sockaddr_in6 address6;
-};
-
 struct MWMODEM_Context * MWMODEM_init (uint16_t port, int af_int, 
MWMODEM_InformationCallback *cb, void *cb_cls)
 {
     struct MWMODEM_Context *context;
-    struct MWAddress address;
+    const struct sockaddr *address;
     struct sockaddr_in address4;
     struct sockaddr_in6 address6;
 
@@ -52,7 +47,7 @@
 
        if (-1 == context->socket)
        {
-               fprintf(stderr, "Error no socket created: %s", strerror(errno));
+               fprintf(stderr, "Error no socket created: %s", strerror(0));
                free (context);
                return;
        }       
@@ -60,47 +55,41 @@
        if (af_int==AF_INET)
        {
 
-               memset (&adress4, 0, sizeof(adress4));
-               adress4->sin_family = af_int;
-               // ->sin_len field on FreeBSD not set!
+               memset (&address4, 0, sizeof(address4));
+               address4.sin_family = af_int;
                if (port == 0)
                        {
-                               address4->sin_port = htons(MWMODEM_PORT);
+                               address4.sin_port = htons(MWMODEM_PORT);
                        }
                        else
                        {
-                               address4->sin_port = htons(port);
+                               address4.sin_port = htons(port);
                        }
-               address = address4;
+               address =(const struct sockaddr *) &address4;
        }
        else
        {
 
                memset( &address6, 0, sizeof (address6));
-               (*adress6).sin6_family = af_int;
+               address6.sin6_family = af_int;
                if (port == 0)
                        {
-                               address6->sin6_port = htons(MWMODEM_PORT);
+                               address6.sin6_port = htons(MWMODEM_PORT);
                        }
                        else
                        {
-                               address6->sin6_port = htons(port);
+                               address6.sin6_port = htons(port);
                        }
-               adress = address6;
+               address =(const struct sockaddr *) &address6;
        }
-       
-       if (-1==bind(context->socket, adress6, sizeof(address)))// check return 
value!
+
+       if (-1==bind(context->socket, address, sizeof(address4)))// check 
return value!
        {
                fprintf(stderr, "The port bind have produced a 
failure!");//Failure messafe TODO
-               //LEAK!
                free(context);
                return;
        }
 
-       free (address);
-       free (address4);
-       free (address6);
-
        return context;
 }
 
@@ -152,11 +141,11 @@
        struct MWChannel *chl;
        int package_length;
 
-       octl(context->socket, FIONREAD, &package_length);
+       octl(fc->socket, FIONREAD, &package_length);
 
        if (package_length==0)
        {
-               fprintf(sderr, "Error no message to receive!");
+               fprintf(stderr, "Error no message to receive!");
                return;
        }
 
@@ -235,7 +224,7 @@
        
        package->channel = list;
 
-       (&fc->cb)(fc->cls, package);
+       (*fc->cb)(fc->cls, package);
 }
 
 void MWMODEM_free (struct MWMODEM_Context *fc)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]