Skip to content

Commit

Permalink
Implement basec alert sending
Browse files Browse the repository at this point in the history
  • Loading branch information
pquerna committed May 14, 2011
1 parent a49e612 commit a1b11ec
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 1 deletion.
43 changes: 43 additions & 0 deletions lib/backends/native/alert_io.c
Expand Up @@ -19,3 +19,46 @@
#include "alert_messages.h"
#include "sln_tok.h"

static selene_error_t *
sln_io_alert(selene_t *s, sln_alert_level_e level, sln_alert_description_e desc)
{
selene_error_t *err;
sln_bucket_t *btls = NULL;
sln_bucket_t *balert = NULL;
sln_msg_alert_t alert;
sln_native_msg_tls_t tls;

alert.level = level;
alert.description = desc;

SELENE_ERR(sln_alert_unparse(&alert, &balert));

if (err) {
return err;
}

tls.content_type = SLN_NATIVE_CONTENT_TYPE_ALERT;
tls.version_major = 3;
tls.version_minor = 1;
tls.length = balert->size;

SELENE_ERR(sln_tls_unparse_header(&tls, &btls));

SLN_BRIGADE_INSERT_TAIL(s->bb.out_enc, btls);

SLN_BRIGADE_INSERT_TAIL(s->bb.out_enc, balert);

return err;
}

selene_error_t *
sln_io_alert_fatal(selene_t *s, sln_alert_description_e desc)
{
return sln_io_alert(s, SLN_ALERT_LEVEL_FATAL, desc);
}

selene_error_t *
sln_io_alert_warning(selene_t *s, sln_alert_description_e desc)
{
return sln_io_alert(s, SLN_ALERT_LEVEL_WARNING, desc);
}
6 changes: 6 additions & 0 deletions lib/backends/native/alert_messages.h
Expand Up @@ -59,4 +59,10 @@ typedef struct sln_msg_alert_t {
selene_error_t*
sln_alert_unparse(sln_msg_alert_t *alert, sln_bucket_t **p_b);

selene_error_t*
sln_io_alert_fatal(selene_t *s, sln_alert_description_e desc);

selene_error_t*
sln_io_alert_warning(selene_t *s, sln_alert_description_e desc);

#endif
4 changes: 3 additions & 1 deletion lib/backends/native/tls_io.c
Expand Up @@ -17,6 +17,7 @@

#include "native.h"
#include "sln_tok.h"
#include "alert_messages.h"
#include <string.h>
#include <stdio.h>

Expand Down Expand Up @@ -171,7 +172,8 @@ sln_native_io_tls_read(selene_t *s, sln_native_baton_t *baton)
err = sln_tok_parser(s->bb.in_enc, read_tls, &rtls);

if (err) {
/* TODO: send alert message, abort connection? */
/* TODO: logging here? */
sln_io_alert_fatal(s, SLN_ALERT_DESC_INTERNAL_ERROR);
return err;
}

Expand Down

0 comments on commit a1b11ec

Please sign in to comment.