X-Git-Url: http://andersk.mit.edu/gitweb/libfaim.git/blobdiff_plain/78b3fb1309a7d926cb58b8322923feedd1ba47ef..3b101546ec5eb89988837c6134b01281dd0cfe0d:/aim_rxhandlers.c diff --git a/aim_rxhandlers.c b/aim_rxhandlers.c index 91db4a0..4f5cf74 100644 --- a/aim_rxhandlers.c +++ b/aim_rxhandlers.c @@ -188,49 +188,55 @@ faim_export int aim_conn_addhandler(struct aim_session_t *sess, rxcallback_t newhandler, u_short flags) { - struct aim_rxcblist_t *new,*cur; + struct aim_rxcblist_t *newcb; if (!conn) return -1; faimdprintf(1, "aim_conn_addhandler: adding for %04x/%04x\n", family, type); - new = (struct aim_rxcblist_t *)calloc(1, sizeof(struct aim_rxcblist_t)); - new->family = family; - new->type = type; - new->flags = flags; + if (!(newcb = (struct aim_rxcblist_t *)calloc(1, sizeof(struct aim_rxcblist_t)))) + return -1; + newcb->family = family; + newcb->type = type; + newcb->flags = flags; if (!newhandler) - new->handler = &bleck; + newcb->handler = &bleck; else - new->handler = newhandler; - new->next = NULL; + newcb->handler = newhandler; + newcb->next = NULL; - cur = conn->handlerlist; - if (!cur) - conn->handlerlist = new; - else - { - while (cur->next) - cur = cur->next; - cur->next = new; - } + if (!conn->handlerlist) + conn->handlerlist = newcb; + else { + struct aim_rxcblist_t *cur; + + cur = conn->handlerlist; + + while (cur->next) + cur = cur->next; + cur->next = newcb; + } return 0; } faim_export int aim_clearhandlers(struct aim_conn_t *conn) { - struct aim_rxcblist_t *cur,*tmp; + struct aim_rxcblist_t *cur; + if (!conn) return -1; cur = conn->handlerlist; - while(cur) - { - tmp = cur->next; - free(cur); - cur = tmp; - } + while(cur) { + struct aim_rxcblist_t *tmp; + + tmp = cur->next; + free(cur); + cur = tmp; + } + return 0; } @@ -255,6 +261,7 @@ faim_internal rxcallback_t aim_callhandler(struct aim_conn_t *conn, if (type==0xffff) return NULL; + return aim_callhandler(conn, family, 0xffff); }