- Timestamp:
- Mar 9, 2014, 3:10:52 PM (11 years ago)
- Branches:
- master
- Children:
- c4a43f1
- Parents:
- e87ab6d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
icbd.c
re87ab6d rdcbd425 20 20 #include <sys/socket.h> 21 21 #include <sys/stat.h> 22 #include <sys/tree.h>23 22 #include <netinet/in_systm.h> 24 23 #include <netinet/in.h> … … 44 43 #include "icbd.h" 45 44 46 uint64_t sessionid;47 45 struct stat modtabst; 48 46 char modtabpath[MAXPATHLEN]; … … 69 67 void icbd_write(struct icb_session *, char *, ssize_t); 70 68 71 static inline int icbd_session_cmp(struct icb_session *, struct icb_session *);72 73 RB_HEAD(icbd_sessions, icb_session) icbd_sessions;74 RB_PROTOTYPE(icbd_sessions, icb_session, node, icbd_session_cmp);75 RB_GENERATE(icbd_sessions, icb_session, node, icbd_session_cmp);76 77 69 struct icbd_listener { 78 70 struct event ev, pause; … … 86 78 int ch, nsocks = 0, save_errno = 0; 87 79 int inet4 = 0, inet6 = 0; 88 89 RB_INIT(&icbd_sessions);90 80 91 81 /* init group lists before calling icb_addgroup */ … … 247 237 248 238 return (EX_UNAVAILABLE); 249 }250 251 static inline int252 icbd_session_cmp(struct icb_session *a, struct icb_session *b)253 {254 if (a->id > b->id)255 return (1);256 if (a->id < b->id)257 return (-1);258 return (0);259 }260 261 inline struct icb_session *262 icbd_session_lookup(uint64_t sid)263 {264 struct icb_session key;265 266 key.id = sid;267 return (RB_FIND(icbd_sessions, &icbd_sessions, &key));268 239 } 269 240 … … 322 293 return; 323 294 } 324 325 is->id = sessionid++;326 RB_INSERT(icbd_sessions, &icbd_sessions, is);327 295 328 296 /* save host information */ … … 450 418 (void)close(EVBUFFER_FD(is->bev)); 451 419 bufferevent_free(is->bev); 452 RB_REMOVE(icbd_sessions, &icbd_sessions, is);453 420 free(is); 454 421 }
Note:
See TracChangeset
for help on using the changeset viewer.