Fixed forwarding of sending-complete information.
[lcr.git] / mISDN.cpp
index 7be3d4f..dc6be83 100644 (file)
--- a/mISDN.cpp
+++ b/mISDN.cpp
 #include "main.h"
 #include "myisdn.h"
 
-extern "C" {
-#define MISDN_OLD_AF_COMPATIBILITY 1
-#include <compat_af_isdn.h>
-}
-#include <q931.h>
+#include <mISDN/mISDNcompat.h>
+int __af_isdn = MISDN_AF_ISDN;
+#include <mISDN/q931.h>
 
 #undef offsetof
 #ifdef __compiler_offsetof
@@ -56,12 +54,10 @@ int mISDN_initialize(void)
 {
        char filename[256];
 
-       init_af_isdn();
-
        /* try to open raw socket to check kernel */
        mISDNsocket = socket(PF_ISDN, SOCK_RAW, ISDN_P_BASE);
        if (mISDNsocket < 0) {
-               fprintf(stderr, "Cannot open mISDN due to '%s'. (Does your Kernel support socket based mISDN?)\n", strerror(errno));
+               fprintf(stderr, "Cannot open mISDN due to '%s'. (Does your Kernel support socket based mISDN? Protocol family is %d.)\n", strerror(errno), PF_ISDN);
                return(-1);
        }
 
@@ -1832,13 +1828,14 @@ static int mISDN_upqueue(struct lcr_fd *fd, unsigned int what, void *instance, i
        struct mbuffer *mb;
        struct l3_msg *l3m;
        char byte;
+       int ret;
 
        /* unset global semaphore */
        upqueue_avail = 0;
        // with a very small incident, upqueue_avail may be set by mISDN thread and
        // another byte may be sent to the pipe, which causes a call to this function
        // again with nothing in the upqueue. this is no problem.
-       read(fd->fd, &byte, 1);
+       ret = read(fd->fd, &byte, 1);
 
        /* process all ports */
        mISDNport = mISDNport_first;
@@ -2068,7 +2065,8 @@ int do_layer3(struct mlayer3 *ml3, unsigned int cmd, unsigned int pid, struct l3
                // this is no problem.
                upqueue_avail = 1;
                char byte = 0;
-               write(upqueue_pipe[1], &byte, 1);
+               int ret;
+               ret = write(upqueue_pipe[1], &byte, 1);
        }
        return 0;
 }