[ekg2-commit] ekg2: sniff.c (HEAD) sniff_gg.h (HEAD) [darkjames]
CVS commit
cvs w amba.bydg.pdi.net
Czw, 15 Lut 2007, 11:53:49 CET
Module name: ekg2
Changes by: darkjames 07/02/15 11:53:45
Modified files:
sniff.c sniff_gg.h
Log message:
[sniff,gg] implement sniff_gg_new_status()
Index: sniff.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/sniff/sniff.c,v
diff -d -u -r1.6 -r1.7
--- sniff.c 15 Feb 2007 10:25:32 -0000 1.6
+++ sniff.c 15 Feb 2007 10:53:44 -0000 1.7
@@ -241,7 +241,7 @@
debug("[sniff,gg] unknown message ack status. consider upgrade\n");
break;
}
- print_window(build_windowip_name(hdr->srcip) /* ip and/or gg# */, s, 1,
+ print_window(build_windowip_name(hdr->dstip) /* ip and/or gg# */, s, 1,
format,
format_user(s, build_gg_uid(pkt->recipient))); /* XXX */
return 0;
@@ -272,7 +272,7 @@
descr = has_descr ? gg_cp_to_iso(xstrndup(pkt->status_data, len)) : NULL;
if (!has_descr && len > 0)
- debug_error("sniff_gg_status() !has_descr but len > 0?!\n");
+ debug_error("sniff_gg_status() !has_descr but len > 0?! (%d)\n", len);
print_window(build_windowip_name(hdr->dstip) /* ip and/or gg# */, s, 1,
ekg_status_label(status, descr, "status_"), /* formatka */
@@ -288,10 +288,43 @@
}
SNIFF_HANDLER(sniff_gg_new_status, gg_new_status) {
+ const char *status;
+ char *descr;
+ int has_descr;
+
CHECK_LEN(sizeof(gg_new_status)) len -= sizeof(gg_new_status);
/* XXX, update s->status/descr */
- debug_error("sniff_gg_new_status() XXX\n");
+ status = gg_status_to_text(pkt->status, &has_descr);
+
+ if (!xstrcmp(status, EKG_STATUS_AVAIL)) status = "back";
+ else if (!xstrcmp(status, EKG_STATUS_AWAY)) status = "away";
+ else if (!xstrcmp(status, EKG_STATUS_INVISIBLE)) status = "invsible";
+ else {
+/* XXX, rozlaczony */
+ debug_error("sniff_gg_new_status() bad status: %s\n", status);
+ return -5;
+ }
+
+ descr = has_descr ? gg_cp_to_iso(xstrndup(pkt->status_data, len)) : NULL;
+
+ if (!has_descr && len > 0)
+ debug_error("sniff_gg_new_status() !has_descr but len > 0?! (%d)\n", len);
+/* XXX tajm */
+
+/* XXX, session_name(s) is wrong here. */
+ if (descr) {
+ print_window(build_windowip_name(hdr->srcip) /* ip and/or gg# */, s, 1,
+ ekg_status_label(status, descr, NULL), /* formatka */
+
+ descr, "", session_name(s));
+ } else
+ print_window(build_windowip_name(hdr->srcip) /* ip and/or gg# */, s, 1,
+ ekg_status_label(status, descr, NULL), /* formatka */
+
+ session_name(s));
+
+
return -5;
}
@@ -304,6 +337,8 @@
int has_descr = 0;
CHECK_LEN(sizeof(gg_status60)) len -= sizeof(gg_status60);
+
+/* XXX, tajm */
#if 0
if (len > 4 && pkt->status_data[len - 5] == 0) {
has_time = 1;
Index: sniff_gg.h
===================================================================
RCS file: /home/cvs/ekg2/plugins/sniff/sniff_gg.h,v
diff -d -u -r1.4 -r1.5
--- sniff_gg.h 15 Feb 2007 10:12:25 -0000 1.4
+++ sniff_gg.h 15 Feb 2007 10:53:44 -0000 1.5
@@ -50,6 +50,7 @@
#define GG_NEW_STATUS 0x0002
typedef struct {
uint32_t status; /* na jaki zmieniÄ? */
+ char status_data[];
} GG_PACKED gg_new_status;
#define GG_LOGIN_OK 0x0003
Więcej informacji o liście dyskusyjnej ekg2-commit