mirror of
git://git.psyced.org/git/psyclpc
synced 2024-08-15 03:20:16 +00:00
pkg-psyc: incomplete packet parsing - return 0 when not finished
This commit is contained in:
parent
dbe6e0a453
commit
79c479b563
2 changed files with 17 additions and 17 deletions
|
@ -17,10 +17,9 @@
|
||||||
debug_message(sprintf("p1: libpsyc returned %O\n", p1));
|
debug_message(sprintf("p1: libpsyc returned %O\n", p1));
|
||||||
mixed *p2 = psyc_parse("ing\n_notice_test_libpsyc\nJust [_topic] libpsyc.\n|\n");
|
mixed *p2 = psyc_parse("ing\n_notice_test_libpsyc\nJust [_topic] libpsyc.\n|\n");
|
||||||
debug_message(sprintf("p2: libpsyc returned %O\n", p2));
|
debug_message(sprintf("p2: libpsyc returned %O\n", p2));
|
||||||
mixed *p = ({ p1[0]+p2[0], p1[1]+p2[1],
|
|
||||||
(p1[2]||"") + p2[2], (p1[3]||"") + p2[3] });
|
mixed pr = psyc_render(p2);
|
||||||
mixed pr = psyc_render(p);
|
debug_message(sprintf("libpsyc returned %O (%s)\n", p2,
|
||||||
debug_message(sprintf("libpsyc returned %O (%s)\n", p,
|
|
||||||
pr == s ? "SUCCESS": "FAIL!"));
|
pr == s ? "SUCCESS": "FAIL!"));
|
||||||
|
|
||||||
string ls = ":_context\ttest\n\n:_list_foo\t|foo|bar|baz\n:_list_bar\t\n_notice_test_libpsyc\nJust [_topic] libpsyc.\n|\n";
|
string ls = ":_context\ttest\n\n:_list_foo\t|foo|bar|baz\n:_list_bar\t\n_notice_test_libpsyc\nJust [_topic] libpsyc.\n|\n";
|
||||||
|
@ -239,18 +238,21 @@ f_psyc_parse (svalue_t *sp) {
|
||||||
errorf("\npsyc_parse got type %d, not supported\n", sp->type);
|
errorf("\npsyc_parse got type %d, not supported\n", sp->type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free_svalue(sp);
|
||||||
|
|
||||||
if (!state->packet) {
|
if (!state->packet) {
|
||||||
state->packet = allocate_array(4);
|
state->packet = allocate_array(4);
|
||||||
if (!state->packet) errorf("Out of memory for psyc_parse array.\n");
|
if (!state->packet) errorf("Out of memory for psyc_parse array.\n");
|
||||||
}
|
v = state->packet;
|
||||||
v = state->packet;
|
|
||||||
|
|
||||||
map = allocate_mapping(0, 1); // empty mapping
|
map = allocate_mapping(0, 1); // empty mapping
|
||||||
if (!map) errorf("Out of memory for psyc_parse routing header.\n");
|
if (!map) errorf("Out of memory for psyc_parse routing header.\n");
|
||||||
put_mapping(&v->item[PACKET_ROUTING], map);
|
put_mapping(&v->item[PACKET_ROUTING], map);
|
||||||
map = allocate_mapping(0, 1); // empty mapping
|
map = allocate_mapping(0, 1); // empty mapping
|
||||||
if (!map) errorf("Out of memory for psyc_parse entity header.\n");
|
if (!map) errorf("Out of memory for psyc_parse entity header.\n");
|
||||||
put_mapping(&v->item[PACKET_ENTITY], map);
|
put_mapping(&v->item[PACKET_ENTITY], map);
|
||||||
|
} else
|
||||||
|
v = state->packet;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
ret = psyc_parse(state->parser, &oper, &name, &value);
|
ret = psyc_parse(state->parser, &oper, &name, &value);
|
||||||
|
@ -359,6 +361,7 @@ f_psyc_parse (svalue_t *sp) {
|
||||||
|
|
||||||
case PSYC_PARSE_COMPLETE:
|
case PSYC_PARSE_COMPLETE:
|
||||||
state->packet = NULL;
|
state->packet = NULL;
|
||||||
|
put_array(sp, v);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -373,6 +376,7 @@ f_psyc_parse (svalue_t *sp) {
|
||||||
} else
|
} else
|
||||||
state->remaining = NULL;
|
state->remaining = NULL;
|
||||||
|
|
||||||
|
put_number(sp, 0);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -431,11 +435,7 @@ f_psyc_parse (svalue_t *sp) {
|
||||||
if (buffer)
|
if (buffer)
|
||||||
pfree(buffer);
|
pfree(buffer);
|
||||||
|
|
||||||
free_svalue(sp);
|
|
||||||
put_array(sp, v);
|
|
||||||
state->packet = 0;
|
|
||||||
return sp;
|
return sp;
|
||||||
|
|
||||||
} /* f_psyc_parse */
|
} /* f_psyc_parse */
|
||||||
|
|
||||||
#endif /* USE_PSYC */
|
#endif /* USE_PSYC */
|
||||||
|
|
|
@ -17,7 +17,7 @@ version_longtype="stable"
|
||||||
# A timestamp, to be used by bumpversion and other scripts.
|
# A timestamp, to be used by bumpversion and other scripts.
|
||||||
# It can be used, for example, to 'touch' this file on every build, thus
|
# It can be used, for example, to 'touch' this file on every build, thus
|
||||||
# forcing revision control systems to add it on every checkin automatically.
|
# forcing revision control systems to add it on every checkin automatically.
|
||||||
version_stamp="Fri May 13 23:10:29 CEST 2011"
|
version_stamp="Thu May 19 18:45:43 CEST 2011"
|
||||||
|
|
||||||
# Okay, LDMUD is using 3.x.x so to avoid conflicts let's just use 4.x.x
|
# Okay, LDMUD is using 3.x.x so to avoid conflicts let's just use 4.x.x
|
||||||
version_major=4
|
version_major=4
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue