aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2011-01-20 16:51:34 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2011-01-20 19:07:16 +0100
commitfa8cf2d9388001b052675a740ac07582b4849b9d (patch)
tree238e52becc04e5595bbf26af54b5b3be10f1d416 /src
parent9b8a4a7f49b8d926de4bd4a1866d9506b92e1dfa (diff)
mtp: Create a method for a link failure to restart the link.
Make sure that a failed link will be restarted by calling the reset method which should take the link down.
Diffstat (limited to 'src')
-rw-r--r--src/link_udp.c5
-rw-r--r--src/mtp_link.c8
2 files changed, 9 insertions, 4 deletions
diff --git a/src/link_udp.c b/src/link_udp.c
index 9a7d645..7e0b94b 100644
--- a/src/link_udp.c
+++ b/src/link_udp.c
@@ -91,12 +91,11 @@ static int udp_read_cb(struct bsc_fd *fd)
if (hdr->data_type == UDP_DATA_RETR_COMPL || hdr->data_type == UDP_DATA_RETR_IMPOS) {
LOGP(DINP, LOGL_ERROR, "Link retrieval done. Restarting the link.\n");
- mtp_link_down(link);
- mtp_link_up(link);
+ mtp_link_failure(link);
goto exit;
} else if (hdr->data_type > UDP_DATA_MSU_PRIO_3) {
LOGP(DINP, LOGL_ERROR, "Link failure. retrieved message.\n");
- mtp_link_down(link);
+ mtp_link_failure(link);
goto exit;
}
diff --git a/src/mtp_link.c b/src/mtp_link.c
index 20f4785..5423b33 100644
--- a/src/mtp_link.c
+++ b/src/mtp_link.c
@@ -78,7 +78,7 @@ static void mtp_sltm_t1_timeout(void *_link)
} else {
LOGP(DINP, LOGL_ERROR, "Two missing SLTAs. Restart link: %p\n", link);
bsc_del_timer(&link->t2_timer);
- link->reset(link);
+ mtp_link_failure(link);
}
}
@@ -148,3 +148,9 @@ int mtp_link_slta(struct mtp_link *link, uint16_t l3_len,
return 0;
}
+
+void mtp_link_failure(struct mtp_link *link)
+{
+ LOGP(DINP, LOGL_ERROR, "Link has failed. Resetting it: 0x%p\n", link);
+ link->reset(link);
+}