X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fmain.c;h=5981dbf2096c9ca05e507b290225ba74616e2cfc;hb=e22891eb4ebdc3d4b5c1d6c8107b779bbe0b76c3;hp=53e96c2168146b0c599df342a540092e3037cc29;hpb=aa02c3dfe7142904ddec12dbc55a9c7b55f1a4f9;p=routeros-api.git diff --git a/src/main.c b/src/main.c index 53e96c2..5981dbf 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,5 @@ /** - * libmikrotik - src/main.c + * librouteros - src/main.c * Copyright (C) 2009 Florian octo Forster * * This program is free software; you can redistribute it and/or modify it @@ -27,6 +27,8 @@ # define _POSIX_C_SOURCE 200112L #endif +#include + #include #include #include @@ -44,7 +46,7 @@ #include "routeros_api.h" -#if 1 +#if WITH_DEBUG # define ros_debug(...) fprintf (stdout, __VA_ARGS__) #else # define ros_debug(...) /**/ @@ -165,6 +167,7 @@ static int reply_add_keyval (ros_reply_t *r, const char *key, /* {{{ */ return (0); } /* }}} int reply_add_keyval */ +#if WITH_DEBUG static void reply_dump (const ros_reply_t *r) /* {{{ */ { if (r == NULL) @@ -188,6 +191,9 @@ static void reply_dump (const ros_reply_t *r) /* {{{ */ reply_dump (r->next); } /* }}} void reply_dump */ +#else +# define reply_dump(foo) /**/ +#endif static void reply_free (ros_reply_t *r) /* {{{ */ { @@ -635,10 +641,15 @@ static int login2_handler (ros_connection_t *c, const ros_reply_t *r, /* {{{ */ if (r == NULL) return (EINVAL); - printf ("login2_handler has been called.\n"); reply_dump (r); - if (strcmp (r->status, "done") != 0) + if (strcmp (r->status, "trap") == 0) + { + ros_debug ("login2_handler: Logging in failed: %s.\n", + ros_reply_param_val_by_key (r, "message")); + return (EACCES); + } + else if (strcmp (r->status, "done") != 0) { ros_debug ("login2_handler: Unexpected status: %s.\n", r->status); return (EPROTO); @@ -721,8 +732,6 @@ static int login_handler (ros_connection_t *c, const ros_reply_t *r, /* {{{ */ * =ret=ebddd18303a54111e2dea05a92ab46b4 * -- >8 -- */ - - printf ("login_handler has been called.\n"); reply_dump (r); if (strcmp (r->status, "done") != 0) @@ -797,6 +806,13 @@ ros_connection_t *ros_connect (const char *node, const char *service, /* {{{ */ status = ros_query (c, "/login", /* args num = */ 0, /* args = */ NULL, login_handler, &user_data); + if (status != 0) + { + ros_disconnect (c); + errno = status; + return (NULL); + } + return (c); } /* }}} ros_connection_t *ros_connect */