From: Vlad S. <ser...@us...> - 2005-06-29 03:46:14
|
Update of /cvsroot/naviserver/naviserver/nsd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14098/nsd Modified Files: fastpath.c return.c Log Message: see ChangeLog Index: fastpath.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/fastpath.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** fastpath.c 28 Jun 2005 20:15:44 -0000 1.6 --- fastpath.c 29 Jun 2005 03:45:49 -0000 1.7 *************** *** 521,529 **** if (status == 200) { range = ParseRange(conn, stPtr->st_size, &offset1, &offset2); } if (range != NS_ERROR) { if (offset1 > offset2) { /* 416 Requested Range Not Satisfiable */ ! Ns_ConnVSetHeaders(conn, "Content-Range", "bytes */%lu", stPtr->st_size); Ns_ConnSetRequiredHeaders(conn, type, (int) stPtr->st_size); --- 521,530 ---- if (status == 200) { range = ParseRange(conn, stPtr->st_size, &offset1, &offset2); + Ns_Log(Debug,"bytes %lu-%lu/%lu",offset1,offset2,stPtr->st_size); } if (range != NS_ERROR) { if (offset1 > offset2) { /* 416 Requested Range Not Satisfiable */ ! Ns_ConnPrintfHeaders(conn, "Content-Range", "bytes */%lu", stPtr->st_size); Ns_ConnSetRequiredHeaders(conn, type, (int) stPtr->st_size); *************** *** 531,535 **** } /* Continue with returning a portion of the file */ ! Ns_ConnVSetHeaders(conn, "Content-Range", "bytes %lu-%lu/%lu", offset1, offset2, stPtr->st_size); size = (offset2 - offset1) + 1; --- 532,536 ---- } /* Continue with returning a portion of the file */ ! Ns_ConnPrintfHeaders(conn, "Content-Range", "bytes %lu-%lu/%lu", offset1, offset2, stPtr->st_size); size = (offset2 - offset1) + 1; *************** *** 707,712 **** if ((range = Ns_SetIGet(conn->headers, "Range")) != NULL ! && (range = strchr(range,'=')) != NULL) { ! range++; if (isdigit(*range)) { *offset1 = atol(range); --- 708,713 ---- if ((range = Ns_SetIGet(conn->headers, "Range")) != NULL ! && (range = strstr(range,"bytes=")) != NULL) { ! range += 6; if (isdigit(*range)) { *offset1 = atol(range); *************** *** 714,724 **** if (*range == '-') { range++; ! *offset2 = atol(range); ! if (*offset2 == 0 || *offset2 >= size) { *offset2 = size - 1; } } } else if (*range == '-') { range++; *offset2 = atol(range); if (*offset2 > size) { --- 715,738 ---- if (*range == '-') { range++; ! if (!isdigit(*range)) { ! if (*range != '\0') { ! return NS_ERROR; ! } ! *offset2 = size - 1; ! } else { ! *offset2 = atol(range); ! } ! if (*offset2 >= size) { *offset2 = size - 1; } + return NS_OK; + } else { + return NS_ERROR; } } else if (*range == '-') { range++; + if (!isdigit(*range)) { + return NS_ERROR; + } *offset2 = atol(range); if (*offset2 > size) { *************** *** 728,737 **** *offset1 = size - *offset2; *offset2 = *offset1 + *offset2 - 1; } } ! if (*offset2 == 0) { ! return NS_ERROR; ! } ! return NS_OK; } --- 742,749 ---- *offset1 = size - *offset2; *offset2 = *offset1 + *offset2 - 1; + return NS_OK; } } ! return NS_ERROR; } Index: return.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/return.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** return.c 28 Jun 2005 20:15:44 -0000 1.8 --- return.c 29 Jun 2005 03:45:49 -0000 1.9 *************** *** 371,375 **** *---------------------------------------------------------------------- * ! * Ns_ConnVSetHeaders -- * * Add a printf-style string as an output header. --- 371,375 ---- *---------------------------------------------------------------------- * ! * Ns_ConnPrintfHeaders -- * * Add a printf-style string as an output header. *************** *** 385,389 **** void ! Ns_ConnVSetHeaders(Ns_Conn *conn, char *field, char *fmt,...) { Ns_DString ds; --- 385,389 ---- void ! Ns_ConnPrintfHeaders(Ns_Conn *conn, char *field, char *fmt,...) { Ns_DString ds; *************** *** 604,644 **** *---------------------------------------------------------------------- * - * Ns_ConnPrintfHeader -- - * - * Write a printf-style string right to the conn. - * - * Results: - * NS_OK/NS_ERROR - * - * Side effects: - * Will write to the conn; you're expected to format this like a - * header (like "foo: bar\n"). - * - *---------------------------------------------------------------------- - */ - - int - Ns_ConnPrintfHeader(Ns_Conn *conn, char *fmt,...) - { - int result; - Ns_DString ds; - va_list ap; - - if (conn->request == NULL || conn->request->version < 1.0) { - return NS_OK; - } - Ns_DStringInit(&ds); - va_start(ap, fmt); - Ns_DStringVPrintf(&ds, fmt, ap); - va_end(ap); - result = Ns_ConnSendDString(conn, &ds); - Ns_DStringFree(&ds); - return result; - } - - - /* - *---------------------------------------------------------------------- - * * Ns_ConnResetReturn -- * --- 604,607 ---- |