mncc_sock: properly append an element to the end of the list
[lcr.git] / gsm_bs.cpp
index 710c237..8bb647f 100644 (file)
@@ -815,6 +815,7 @@ static int mncc_q_enqueue(struct gsm_mncc *mncc, unsigned int len)
        } else {
                /* append to tail of list */
                gsm->mncc_q_tail->next = qe;
        } else {
                /* append to tail of list */
                gsm->mncc_q_tail->next = qe;
+               gsm->mncc_q_tail = qe;
        }
 
        gsm->mncc_lfd.when |= LCR_FD_WRITE;
        }
 
        gsm->mncc_lfd.when |= LCR_FD_WRITE;
@@ -846,7 +847,7 @@ int mncc_send(struct gsm_network *instance, int msg_type, void *data)
        /* FIXME: the caller should provide this */
        switch (msg_type) {
        case GSM_TCHF_FRAME:
        /* FIXME: the caller should provide this */
        switch (msg_type) {
        case GSM_TCHF_FRAME:
-               len = 33;
+               len = sizeof(struct gsm_data_frame) + 33;
                break;
        default:
                len = sizeof(struct gsm_mncc);
                break;
        default:
                len = sizeof(struct gsm_mncc);
@@ -861,6 +862,7 @@ int mncc_send(struct gsm_network *instance, int msg_type, void *data)
 /* close MNCC socket */
 static int mncc_fd_close(struct lcr_fd *lfd)
 {
 /* close MNCC socket */
 static int mncc_fd_close(struct lcr_fd *lfd)
 {
+       printf("mncc_sock: closing\n");
        close(lfd->fd);
        unregister_fd(lfd);
        lfd->fd = -1;
        close(lfd->fd);
        unregister_fd(lfd);
        lfd->fd = -1;