some more stream fixes

remotes/origin/master-1.0.x
Gurvinder Singh 16 years ago committed by Victor Julien
parent 94ae001dec
commit 6814ea1a0f

@ -212,12 +212,12 @@ static int HTPHandleResponseData(Flow *f, void *htp_state,
if (r == STREAM_STATE_ERROR) if (r == STREAM_STATE_ERROR)
{ {
if (hstate->connp->last_error != NULL) { if (hstate->connp->last_error != NULL) {
SCLogError(SC_ALPARSER_ERR, "Error in parsing HTTP server request: " SCLogError(SC_ALPARSER_ERR, "Error in parsing HTTP server response: "
"[%"PRId32"] [%s] [%"PRId32"] %s", hstate->connp->last_error->level, "[%"PRId32"] [%s] [%"PRId32"] %s", hstate->connp->last_error->level,
hstate->connp->last_error->file, hstate->connp->last_error->line, hstate->connp->last_error->file, hstate->connp->last_error->line,
hstate->connp->last_error->msg); hstate->connp->last_error->msg);
} else { } else {
SCLogError(SC_ALPARSER_ERR, "Error in parsing HTTP server request"); SCLogError(SC_ALPARSER_ERR, "Error in parsing HTTP server response");
} }
hstate->flags = HTP_FLAG_STATE_ERROR; hstate->flags = HTP_FLAG_STATE_ERROR;
ret = -1; ret = -1;

@ -580,8 +580,7 @@ static int HandleSegmentStartsBeforeListSegment(TcpStream *stream,
if (SEQ_GT(list_seg->seq, (list_seg->prev->seq + if (SEQ_GT(list_seg->seq, (list_seg->prev->seq +
list_seg->prev->payload_len))) list_seg->prev->payload_len)))
{ {
packet_length = list_seg->payload_len + (list_seg->seq - packet_length = list_seg->payload_len + (list_seg->seq - seg->seq);
(list_seg->prev->seq + list_seg->prev->payload_len));
TcpSegment *new_seg = StreamTcpGetSegment(packet_length); TcpSegment *new_seg = StreamTcpGetSegment(packet_length);
if (new_seg == NULL) { if (new_seg == NULL) {
@ -600,18 +599,16 @@ static int HandleSegmentStartsBeforeListSegment(TcpStream *stream,
} else { } else {
new_seg->seq = seg->seq; new_seg->seq = seg->seq;
} }
SCLogDebug("new_seg->seq %"PRIu32"",new_seg->seq); SCLogDebug("new_seg->seq %"PRIu32" and new->payload_len "
"%" PRIu16"", new_seg->seq, new_seg->payload_len);
new_seg->next = list_seg->next; new_seg->next = list_seg->next;
new_seg->prev = list_seg->prev; new_seg->prev = list_seg->prev;
StreamTcpSegmentDataCopy(new_seg, list_seg); StreamTcpSegmentDataCopy(new_seg, list_seg);
uint16_t copy_len = (uint16_t) (list_seg->seq - uint16_t copy_len = (uint16_t) (list_seg->seq - seg->seq);
(list_seg->prev->seq +
list_seg->prev->payload_len));
SCLogDebug("copy_len %" PRIu32 " (%" PRIu32 " - %" PRIu32 ")", SCLogDebug("copy_len %" PRIu32 " (%" PRIu32 " - %" PRIu32 ")",
copy_len, list_seg->seq, (list_seg->prev->seq + copy_len, list_seg->seq, seg->seq);
list_seg->prev->payload_len));
StreamTcpSegmentDataReplace(new_seg, seg, (list_seg->prev->seq + StreamTcpSegmentDataReplace(new_seg, seg, (list_seg->prev->seq +
list_seg->prev->payload_len), copy_len); list_seg->prev->payload_len), copy_len);
@ -662,7 +659,8 @@ static int HandleSegmentStartsBeforeListSegment(TcpStream *stream,
} else { } else {
new_seg->seq = seg->seq; new_seg->seq = seg->seq;
} }
SCLogDebug("new_seg->seq %"PRIu32"", new_seg->seq); SCLogDebug("new_seg->seq %"PRIu32" and new->payload_len "
"%" PRIu16"", new_seg->seq, new_seg->payload_len);
new_seg->next = list_seg->next; new_seg->next = list_seg->next;
new_seg->prev = list_seg->prev; new_seg->prev = list_seg->prev;

Loading…
Cancel
Save