summaryrefslogtreecommitdiff
path: root/cleopatre
diff options
context:
space:
mode:
authorlefranc2010-05-25 11:35:13 +0000
committerlefranc2010-05-25 11:35:13 +0000
commit186a763eb3c97154fbdd19cbd989728eaa9007bc (patch)
tree3e3c1c173903dc024dda0cfc2214aa94ecaf9229 /cleopatre
parent67125c79538a976c6fdab6931f5f5eb82acf07a8 (diff)
cleo/appli/managerd: delay VS_RESET.IND sending, closes #1558
- if VS_RESET.IND is send too early, bridge is not ready (not in forwarding state). Managerd delays MME sending (here 5 secs). git-svn-id: svn+ssh://pessac/svn/cesar/trunk@7130 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cleopatre')
-rw-r--r--cleopatre/application/managerd/src/vs_mme.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/cleopatre/application/managerd/src/vs_mme.c b/cleopatre/application/managerd/src/vs_mme.c
index 91baab946f..a3622266eb 100644
--- a/cleopatre/application/managerd/src/vs_mme.c
+++ b/cleopatre/application/managerd/src/vs_mme.c
@@ -250,12 +250,15 @@ enum bridge_status vs_mme_reset (struct managerd_ctx *ctx, MME_t *request, MME_t
return TO_DROP;
}
-void vs_mme_reset_ind (struct managerd_ctx *ctx)
+static void *_reset_ind_handler (void *arg)
{
MME_t *mme;
vs_reset_ind_t *vs_reset;
+ struct managerd_ctx *ctx;
- assert (NULL != ctx);
+ assert (NULL != arg);
+
+ ctx = (struct managerd_ctx *)arg;
if((mme = (MME_t *)malloc (sizeof(MME_t) + sizeof(vs_reset_ind_t))) == NULL)
return;
@@ -269,6 +272,21 @@ void vs_mme_reset_ind (struct managerd_ctx *ctx)
mme->fmi = 0;
memcpy (vs_reset->oui, OUI_SPIDCOM, 3);
+ /* wait for the bridge is ready */
+ sleep (5);
+ /* send VS_RESET_IND */
bridge_send_to_br(ctx, (uint8_t*) mme, sizeof(MME_t) + sizeof(vs_reset_ind_t));
+ free (mme);
return;
}
+
+void vs_mme_reset_ind (struct managerd_ctx *ctx)
+{
+ pthread_attr_t attr;
+ pthread_t reset_thread;
+
+ pthread_create(&reset_thread, NULL, &_reset_ind_handler, ctx);
+ pthread_detach (reset_thread);
+ return;
+}
+