summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-03-05 19:42:09 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-03-08 14:32:39 +0100
commita49951fed75d681722df6d65fd318a697c87e4bd (patch)
tree8a803fa50cea734902909d6c55884df7a61bf73c
parent1e9086684f258a9b8eed8f5c8d7d4f6c98665636 (diff)
write_queue: Make the bfd cb public so it can be used in a different context
* I'm doing a nonblocking connect and for this I need to select on writable and the first thing I need to do is to check the SOL_SOCKET SO_ERROR state. I realize this by setting a different cb on the embedded bfd during setup and then go back to the real implementation.
-rw-r--r--include/osmocore/write_queue.h1
-rw-r--r--src/write_queue.c4
2 files changed, 3 insertions, 2 deletions
diff --git a/include/osmocore/write_queue.h b/include/osmocore/write_queue.h
index af3d44be..c84000c1 100644
--- a/include/osmocore/write_queue.h
+++ b/include/osmocore/write_queue.h
@@ -39,5 +39,6 @@ struct write_queue {
void write_queue_init(struct write_queue *queue, int max_length);
int write_queue_enqueue(struct write_queue *queue, struct msgb *data);
+int write_queue_bfd_cb(struct bsc_fd *fd, unsigned int what);
#endif
diff --git a/src/write_queue.c b/src/write_queue.c
index 597fbe75..7d908b4c 100644
--- a/src/write_queue.c
+++ b/src/write_queue.c
@@ -23,7 +23,7 @@
#include <osmocore/write_queue.h>
-static int queue_cb(struct bsc_fd *fd, unsigned int what)
+int write_queue_bfd_cb(struct bsc_fd *fd, unsigned int what)
{
struct write_queue *queue;
@@ -57,7 +57,7 @@ void write_queue_init(struct write_queue *queue, int max_length)
queue->current_length = 0;
queue->read_cb = NULL;
queue->write_cb = NULL;
- queue->bfd.cb = queue_cb;
+ queue->bfd.cb = write_queue_bfd_cb;
INIT_LLIST_HEAD(&queue->msg_queue);
}