2007-11-25 16:49:37 +00:00
|
|
|
/** GSWHTTPIO.m - GSWeb: Class GSWHTTPIO
|
|
|
|
|
|
|
|
Copyright (C) 2007 Free Software Foundation, Inc.
|
|
|
|
|
|
|
|
Written by: David Wetzel <dave@turbocat.de>
|
|
|
|
Date: 12.11.2007
|
|
|
|
|
|
|
|
This file is part of the GNUstep Web Library.
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Library General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
Library General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
|
|
License along with this library; if not, write to the Free
|
|
|
|
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
**/
|
|
|
|
|
|
|
|
#include "GSWHTTPIO.h"
|
|
|
|
#include <Foundation/NSString.h>
|
|
|
|
#include <Foundation/NSFileHandle.h>
|
|
|
|
#include <Foundation/NSData.h>
|
2010-06-05 21:08:12 +00:00
|
|
|
#include <GNUstepBase/NSString+GNUstepBase.h>
|
2007-11-25 16:49:37 +00:00
|
|
|
#include <Foundation/NSError.h>
|
|
|
|
#include <Foundation/NSException.h>
|
|
|
|
#include <Foundation/NSDictionary.h>
|
|
|
|
#include <Foundation/Foundation.h>
|
|
|
|
|
|
|
|
#include "GSWDefines.h"
|
|
|
|
#include "GSWConstants.h"
|
|
|
|
#include "GSWUtils.h"
|
|
|
|
#include "GSWDebug.h"
|
|
|
|
|
|
|
|
#include "GSWMessage.h"
|
|
|
|
#include "GSWResponse.h"
|
|
|
|
#include "GSWRequest.h"
|
2014-04-13 19:34:39 +00:00
|
|
|
#include "GSWApplication.h"
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
#include "GSWPrivate.h"
|
2010-01-20 07:52:01 +00:00
|
|
|
#include <netinet/in.h>
|
2010-04-16 00:18:46 +00:00
|
|
|
#include <arpa/inet.h>
|
2007-11-25 16:49:37 +00:00
|
|
|
|
2008-03-02 13:58:11 +00:00
|
|
|
#define READ_SIZE 2048
|
2007-11-25 16:49:37 +00:00
|
|
|
|
|
|
|
static NSString *URIResponseString = @" GNUstep Web\r\n";
|
2013-02-27 04:27:07 +00:00
|
|
|
static NSString *CONTENT_LENGTHCOLON = @"Content-Length: ";
|
2007-11-25 16:49:37 +00:00
|
|
|
static NSString *GET = @"GET";
|
|
|
|
static NSString *POST = @"POST";
|
|
|
|
static NSString *HEAD = @"HEAD";
|
|
|
|
static NSString *SPACE = @" ";
|
|
|
|
static NSString *HEADERSEP = @": ";
|
|
|
|
static NSString *NEWLINE = @"\r\n";
|
|
|
|
static NSString *NEWLINE2 = @"\r\n";
|
|
|
|
static NSString *HTTP11 = @"HTTP/1.1";
|
2013-02-27 04:27:07 +00:00
|
|
|
static NSString *CONNECTION = @"Connection";
|
2007-11-25 16:49:37 +00:00
|
|
|
static NSString *KEEP_ALIVE = @"keep-alive";
|
2010-01-20 07:52:01 +00:00
|
|
|
static BOOL _alwaysAppendContentLength = YES;
|
|
|
|
|
2008-08-20 20:32:10 +00:00
|
|
|
//static NSString *CLOSE = @"close";
|
2007-11-25 16:49:37 +00:00
|
|
|
|
2013-05-31 08:28:05 +00:00
|
|
|
#ifdef GNUSTEP
|
|
|
|
@class GSFileHandle;
|
|
|
|
#endif
|
2007-11-25 16:49:37 +00:00
|
|
|
|
|
|
|
/* Get error information.
|
|
|
|
*/
|
|
|
|
@interface NSError (GSCategories)
|
|
|
|
+ (NSError*) _last;
|
|
|
|
@end
|
|
|
|
|
|
|
|
@interface NSFileHandle (GSWFileHandleExtensions)
|
2008-08-20 20:32:10 +00:00
|
|
|
//- (void) setNonBlocking: (BOOL)flag;
|
2007-11-25 16:49:37 +00:00
|
|
|
|
|
|
|
- (NSData*) readDataLine;
|
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation NSFileHandle (GSWFileHandleExtensions)
|
|
|
|
|
|
|
|
- (NSData*) readDataLine
|
|
|
|
{
|
|
|
|
NSMutableData *d;
|
2008-03-02 13:58:11 +00:00
|
|
|
int got,pos=0;
|
2007-11-25 16:49:37 +00:00
|
|
|
char buf[READ_SIZE];
|
2010-04-22 04:28:50 +00:00
|
|
|
int fileDescriptor = [self fileDescriptor];
|
2007-11-25 16:49:37 +00:00
|
|
|
|
|
|
|
d = [NSMutableData dataWithCapacity: READ_SIZE];
|
|
|
|
do {
|
2008-03-02 13:58:11 +00:00
|
|
|
got = recv(fileDescriptor, &buf[pos], 1, 0);
|
2007-11-25 16:49:37 +00:00
|
|
|
if (got > 0) {
|
2008-03-02 13:58:11 +00:00
|
|
|
if (buf[pos] != 0xd) { // CR
|
|
|
|
if (buf[pos] == 0xa) { // NL
|
|
|
|
break;
|
2007-11-25 16:49:37 +00:00
|
|
|
}
|
2008-03-02 13:58:11 +00:00
|
|
|
pos++;
|
2007-11-25 16:49:37 +00:00
|
|
|
}
|
|
|
|
} else if (got < 0) {
|
|
|
|
[NSException raise: NSFileHandleOperationException
|
|
|
|
format: @"unable to read from descriptor - %@",
|
|
|
|
[NSError _last]];
|
|
|
|
}
|
2008-03-02 13:58:11 +00:00
|
|
|
} while ((got > 0) && (pos < READ_SIZE));
|
2007-11-25 16:49:37 +00:00
|
|
|
|
2008-03-02 13:58:11 +00:00
|
|
|
if (pos>0) {
|
|
|
|
[d appendBytes: buf length: pos];
|
|
|
|
}
|
2007-11-25 16:49:37 +00:00
|
|
|
return d;
|
|
|
|
}
|
|
|
|
|
2010-01-20 07:52:01 +00:00
|
|
|
|
2007-11-25 16:49:37 +00:00
|
|
|
@end
|
|
|
|
|
|
|
|
|
|
|
|
@implementation GSWHTTPIO
|
|
|
|
|
2010-01-20 07:52:01 +00:00
|
|
|
/* Apple is accessing this in Application.java in wotaskd example code -- dw */
|
2010-04-16 00:18:46 +00:00
|
|
|
+ (void) _setAlwaysAppendContentLength:(BOOL) yn
|
2010-01-20 07:52:01 +00:00
|
|
|
{
|
|
|
|
_alwaysAppendContentLength = yn;
|
|
|
|
}
|
|
|
|
|
|
|
|
+ (BOOL) _alwaysAppendContentLength
|
|
|
|
{
|
|
|
|
return _alwaysAppendContentLength;
|
|
|
|
}
|
2007-11-25 16:49:37 +00:00
|
|
|
|
|
|
|
// PRIVATE
|
|
|
|
void _unpackHeaderLineAddToDict(NSString *line, NSMutableDictionary* headers)
|
|
|
|
{
|
|
|
|
NSArray * components = [line componentsSeparatedByString:HEADERSEP];
|
|
|
|
NSString * value = nil;
|
|
|
|
NSArray * newValue = nil;
|
|
|
|
NSString * key = nil;
|
|
|
|
NSArray * prevValue = nil;
|
|
|
|
|
|
|
|
if ((components) && ([components count] == 2)) {
|
|
|
|
value = [components objectAtIndex:1];
|
|
|
|
key = [components objectAtIndex:0];
|
2013-02-27 04:27:07 +00:00
|
|
|
|
2015-03-11 16:57:56 +00:00
|
|
|
key = [[key stringByTrimmingSpaces]lowercaseString];
|
2007-11-25 16:49:37 +00:00
|
|
|
|
|
|
|
if ([key isEqualToString:GSWHTTPHeader_AdaptorVersion[GSWNAMES_INDEX]]
|
|
|
|
|| [key isEqualToString:GSWHTTPHeader_ServerName[GSWNAMES_INDEX]]) {
|
|
|
|
// _requestNamingConv=GSWNAMES_INDEX;
|
|
|
|
goto keyDone;
|
|
|
|
}
|
|
|
|
if ([key isEqualToString:GSWHTTPHeader_AdaptorVersion[WONAMES_INDEX]]
|
|
|
|
|| [key isEqualToString:GSWHTTPHeader_ServerName[WONAMES_INDEX]]) {
|
|
|
|
// _requestNamingConv=WONAMES_INDEX;
|
|
|
|
goto keyDone;
|
|
|
|
}
|
|
|
|
|
|
|
|
keyDone:
|
|
|
|
|
|
|
|
prevValue=[headers objectForKey:key];
|
|
|
|
if (prevValue) {
|
|
|
|
newValue=[prevValue arrayByAddingObject:value];
|
|
|
|
} else {
|
|
|
|
newValue=[NSArray arrayWithObject:value];
|
|
|
|
}
|
|
|
|
|
|
|
|
[headers setObject: newValue
|
|
|
|
forKey: key];
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//PRIVATE
|
|
|
|
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
void _appendMessageHeaders(GSWResponse * message,NSMutableString * headers, IMP* headersAppStringIMPPtr)
|
2007-11-25 16:49:37 +00:00
|
|
|
{
|
|
|
|
NSMutableDictionary * headerDict = [message headers];
|
|
|
|
NSArray * keyArray = nil;
|
|
|
|
int i = 0;
|
|
|
|
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
if (headerDict != nil)
|
|
|
|
{
|
|
|
|
NSUInteger count = 0;
|
|
|
|
IMP keyArray_oaiIMP=NULL;
|
|
|
|
if (![headerDict isKindOfClass:[NSMutableDictionary class]])
|
|
|
|
headerDict = [[headerDict mutableCopy] autorelease];
|
2007-11-25 16:49:37 +00:00
|
|
|
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
[headerDict removeObjectForKey:GSWHTTPHeader_ContentLength];
|
|
|
|
keyArray = [headerDict allKeys];
|
|
|
|
count = [keyArray count];
|
|
|
|
|
|
|
|
for (; i < count; i++)
|
|
|
|
{
|
|
|
|
NSString * currentKey = GSWeb_objectAtIndexWithImpPtr(keyArray,&keyArray_oaiIMP,i);
|
|
|
|
NSArray * currentValueArray = [headerDict objectForKey:currentKey];
|
|
|
|
if ([currentValueArray isKindOfClass:[NSArray class]])
|
|
|
|
{
|
|
|
|
int x = 0;
|
|
|
|
int valueCount = [currentValueArray count];
|
|
|
|
for (; x < valueCount; x++)
|
|
|
|
{
|
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,currentKey);
|
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,HEADERSEP);
|
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,[currentValueArray objectAtIndex:x]);
|
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,NEWLINE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
NSString * myStrValue = (NSString*) currentValueArray;
|
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,currentKey);
|
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,HEADERSEP);
|
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,myStrValue);
|
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,NEWLINE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2007-11-25 16:49:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//PRIVATE
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
void _sendMessage(GSWResponse * message,
|
|
|
|
NSFileHandle* fh,
|
|
|
|
NSString * httpVersion,
|
|
|
|
GSWRequest * request,
|
|
|
|
NSMutableString * headers,
|
|
|
|
IMP* headersAppStringIMPPtr)
|
2007-11-25 16:49:37 +00:00
|
|
|
{
|
|
|
|
int contentLength = 0;
|
2014-04-13 19:34:39 +00:00
|
|
|
//BOOL keepAlive = NO;
|
2007-11-25 16:49:37 +00:00
|
|
|
BOOL requestIsHead = NO;
|
2010-06-22 05:02:29 +00:00
|
|
|
|
2007-11-25 16:49:37 +00:00
|
|
|
if (message) {
|
|
|
|
contentLength = [message _contentLength];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (request) {
|
|
|
|
NSString * connectionValue = [request headerForKey:CONNECTION];
|
|
|
|
if (connectionValue) {
|
2014-04-13 19:34:39 +00:00
|
|
|
//keepAlive = [connectionValue isEqualToString:KEEP_ALIVE];
|
2007-11-25 16:49:37 +00:00
|
|
|
}
|
|
|
|
requestIsHead = [[request method] isEqualToString:HEAD];
|
|
|
|
}
|
2010-06-22 05:02:29 +00:00
|
|
|
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,GSWIntToNSString([message status]));
|
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,URIResponseString);
|
2007-11-25 16:49:37 +00:00
|
|
|
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
_appendMessageHeaders(message,headers,headersAppStringIMPPtr);
|
2010-06-22 05:02:29 +00:00
|
|
|
|
2007-11-25 16:49:37 +00:00
|
|
|
if ([httpVersion isEqualToString:HTTP11]) {
|
2008-08-28 06:42:53 +00:00
|
|
|
// bug #24006 keep-alive is not implemented.
|
|
|
|
// I am uable to reproduce the need for double clicking on links/forms,
|
|
|
|
// but for now, we send close. -- dw
|
|
|
|
if (YES /*keepAlive == NO*/) {
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,@"Connection: close\r\n");
|
2007-11-25 16:49:37 +00:00
|
|
|
} else {
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,@"Connection: keep-alive\r\n");
|
2007-11-25 16:49:37 +00:00
|
|
|
}
|
|
|
|
}
|
2010-06-22 05:02:29 +00:00
|
|
|
|
2010-01-20 07:52:01 +00:00
|
|
|
if ((contentLength > 0) || _alwaysAppendContentLength) {
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,CONTENT_LENGTHCOLON);
|
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,[NSString stringWithFormat:@"%d\r\n", contentLength]);
|
2007-11-25 16:49:37 +00:00
|
|
|
}
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
GSWeb_appendStringWithImpPtr(headers,headersAppStringIMPPtr,NEWLINE2);
|
2007-11-25 16:49:37 +00:00
|
|
|
|
|
|
|
[fh writeData: [headers dataUsingEncoding:NSISOLatin1StringEncoding
|
|
|
|
allowLossyConversion:YES]];
|
|
|
|
|
2010-06-22 05:02:29 +00:00
|
|
|
if (((requestIsHead == NO) && (contentLength > 0)) &&
|
|
|
|
([message status] != 304)) {
|
2007-11-25 16:49:37 +00:00
|
|
|
[fh writeData: [message content]];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-01-20 07:52:01 +00:00
|
|
|
//PRIVATE
|
|
|
|
+ (void) _getConnectionInfoFromHandle:(NSFileHandle*) fh
|
|
|
|
remoteAddress:(NSString**) rAddress
|
|
|
|
remotePort:(uint16_t*) rPort
|
|
|
|
{
|
2010-04-22 04:28:50 +00:00
|
|
|
int fileDescriptor = [fh fileDescriptor];
|
2010-01-20 07:52:01 +00:00
|
|
|
struct sockaddr_in sockAddress;
|
|
|
|
socklen_t address_len = sizeof(sockAddress);
|
|
|
|
char str[INET_ADDRSTRLEN];
|
|
|
|
|
|
|
|
if (getpeername(fileDescriptor, (struct sockaddr *) &sockAddress, &address_len) == 0) {
|
|
|
|
|
|
|
|
inet_ntop(AF_INET, &sockAddress.sin_addr, str, sizeof(str));
|
|
|
|
|
|
|
|
*rAddress = [NSString stringWithUTF8String:str];
|
|
|
|
|
|
|
|
*rPort = ntohs(sockAddress.sin_port);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-11-25 16:49:37 +00:00
|
|
|
+ (NSDictionary*) readHeadersFromHandle:(NSFileHandle*) fh
|
|
|
|
{
|
|
|
|
NSData *currentLineData = nil;
|
|
|
|
unsigned int length = 0;
|
|
|
|
NSMutableDictionary *headers = [NSMutableDictionary dictionary];
|
|
|
|
NSString * tmpString = nil;
|
|
|
|
|
|
|
|
NS_DURING {
|
|
|
|
while (YES) {
|
|
|
|
currentLineData = [fh readDataLine];
|
|
|
|
length = [currentLineData length];
|
|
|
|
if (length == 0) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
tmpString=[[NSString alloc] initWithData: currentLineData
|
|
|
|
encoding:NSASCIIStringEncoding];
|
|
|
|
|
|
|
|
_unpackHeaderLineAddToDict(tmpString,headers);
|
|
|
|
|
|
|
|
[tmpString release]; tmpString = nil;
|
|
|
|
}
|
|
|
|
} NS_HANDLER {
|
|
|
|
NSLog(@"%s -- %@",__PRETTY_FUNCTION__, localException);
|
|
|
|
if (tmpString != nil) {
|
|
|
|
[tmpString release]; tmpString = nil;
|
|
|
|
}
|
|
|
|
headers = nil;
|
|
|
|
} NS_ENDHANDLER;
|
|
|
|
|
|
|
|
return headers;
|
|
|
|
}
|
|
|
|
|
|
|
|
// GET /infotext.html HTTP/1.1
|
|
|
|
// Host: www.example.net
|
|
|
|
+ (NSArray*) readRequestLineFromHandle:(NSFileHandle*) fh
|
|
|
|
{
|
|
|
|
NSString * tmpString = nil;
|
|
|
|
NSArray * components = nil;
|
|
|
|
NSData * currentLineData = nil;
|
|
|
|
int length = 0;
|
|
|
|
|
|
|
|
NS_DURING {
|
|
|
|
currentLineData = [fh readDataLine];
|
|
|
|
length = [currentLineData length];
|
|
|
|
|
|
|
|
if (length > 0) {
|
|
|
|
tmpString=[[NSString alloc] initWithData: currentLineData
|
|
|
|
encoding:NSASCIIStringEncoding];
|
|
|
|
|
|
|
|
components = [tmpString componentsSeparatedByString:@" "];
|
|
|
|
|
|
|
|
[tmpString release]; tmpString = nil;
|
|
|
|
}
|
|
|
|
} NS_HANDLER {
|
|
|
|
NSLog(@"%s -- %@",__PRETTY_FUNCTION__, localException);
|
|
|
|
if (tmpString != nil) {
|
|
|
|
[tmpString release]; tmpString = nil;
|
|
|
|
}
|
|
|
|
components = nil;
|
|
|
|
} NS_ENDHANDLER;
|
|
|
|
return components;
|
|
|
|
}
|
|
|
|
|
|
|
|
+ (NSData*) readContentFromFromHandle: fh
|
|
|
|
method: (NSString *) method
|
|
|
|
length: (int) length
|
|
|
|
{
|
|
|
|
NSData* data = nil;
|
|
|
|
|
|
|
|
if ((([method isEqualToString:GET]) || ([method isEqualToString:HEAD])) ||
|
|
|
|
([method isEqualToString:POST] == NO || (length <1))) {
|
2010-04-22 04:28:50 +00:00
|
|
|
NSLog(@"%s: unsupportet method '%@'", __PRETTY_FUNCTION__, method);
|
2007-11-25 16:49:37 +00:00
|
|
|
return nil;
|
|
|
|
}
|
|
|
|
|
|
|
|
data = [fh readDataOfLength: length];
|
2013-02-27 04:27:07 +00:00
|
|
|
|
2007-11-25 16:49:37 +00:00
|
|
|
return data;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-03-02 13:58:11 +00:00
|
|
|
|
2007-11-25 16:49:37 +00:00
|
|
|
+ (GSWRequest*) readRequestFromFromHandle:(NSFileHandle*) fh
|
|
|
|
{
|
|
|
|
NSDictionary * headers;
|
|
|
|
NSArray * requestArray;
|
|
|
|
int contentLength = 0;
|
|
|
|
NSArray * tmpValue = nil;
|
|
|
|
NSString * method = nil;
|
|
|
|
NSData * contentData = nil;
|
|
|
|
GSWRequest * request = nil;
|
2010-01-20 07:52:01 +00:00
|
|
|
uint16_t rPort = 0;
|
|
|
|
NSString * rAddress = nil;
|
2007-11-25 16:49:37 +00:00
|
|
|
|
2013-05-31 08:28:05 +00:00
|
|
|
#ifdef GNUSTEP
|
|
|
|
[(GSFileHandle *)fh setNonBlocking: NO];
|
|
|
|
#endif
|
2010-04-22 04:28:50 +00:00
|
|
|
|
2010-01-20 07:52:01 +00:00
|
|
|
// get info about who talks to us
|
|
|
|
|
|
|
|
[self _getConnectionInfoFromHandle: fh
|
|
|
|
remoteAddress: &rAddress
|
|
|
|
remotePort: &rPort];
|
|
|
|
|
2007-11-25 16:49:37 +00:00
|
|
|
requestArray = [self readRequestLineFromHandle:fh];
|
|
|
|
if ((!requestArray) || ([requestArray count] <3)) {
|
|
|
|
return nil;
|
|
|
|
}
|
2008-03-02 13:58:11 +00:00
|
|
|
|
2007-11-25 16:49:37 +00:00
|
|
|
headers = [self readHeadersFromHandle:fh];
|
|
|
|
if (!headers) {
|
|
|
|
return nil;
|
|
|
|
}
|
|
|
|
|
|
|
|
method = [requestArray objectAtIndex:0];
|
2010-01-20 07:52:01 +00:00
|
|
|
|
2007-11-25 16:49:37 +00:00
|
|
|
|
2013-02-27 04:27:07 +00:00
|
|
|
if ((tmpValue = [headers objectForKey:GSWHTTPHeader_ContentLength]) && ([tmpValue count])) {
|
2007-11-25 16:49:37 +00:00
|
|
|
NSString * tmpString = [tmpValue objectAtIndex:0];
|
|
|
|
|
|
|
|
contentLength = [tmpString intValue];
|
|
|
|
contentData = [self readContentFromFromHandle: fh
|
|
|
|
method: [requestArray objectAtIndex:0]
|
|
|
|
length: contentLength];
|
|
|
|
}
|
2013-02-27 04:27:07 +00:00
|
|
|
|
2014-04-13 19:34:39 +00:00
|
|
|
request = [[[[GSWApplication application]requestClass]
|
|
|
|
alloc] initWithMethod:method
|
|
|
|
uri:[requestArray objectAtIndex:1]
|
|
|
|
httpVersion:[requestArray objectAtIndex:2]
|
|
|
|
headers:headers
|
|
|
|
content:contentData
|
|
|
|
userInfo:nil];
|
2007-11-25 16:49:37 +00:00
|
|
|
|
2010-01-20 07:52:01 +00:00
|
|
|
if (request != nil)
|
|
|
|
{
|
|
|
|
[request _setOriginatingAddress:rAddress];
|
|
|
|
[request _setOriginatingPort:rPort];
|
|
|
|
// [request _setAcceptingAddress:xxx];
|
|
|
|
// [request _setAcceptingPort:yyy];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-11-25 16:49:37 +00:00
|
|
|
return [request autorelease];
|
|
|
|
}
|
|
|
|
|
|
|
|
+ (void) sendResponse:(GSWResponse*) response
|
|
|
|
toHandle:(NSFileHandle*) fh
|
|
|
|
request:(GSWRequest*) request
|
|
|
|
{
|
|
|
|
NSString * httpVersion = [response httpVersion];
|
|
|
|
NSMutableString * bufferStr = [NSMutableString string];
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
IMP bufferAppStringIMP = NULL;
|
|
|
|
|
|
|
|
GSWeb_appendStringWithImpPtr(bufferStr,&bufferAppStringIMP,httpVersion);
|
|
|
|
GSWeb_appendStringWithImpPtr(bufferStr,&bufferAppStringIMP,SPACE);
|
2007-11-25 16:49:37 +00:00
|
|
|
|
* GSWeb/GSWUtils.m
fix rangeOfData:range:
* GSWExtensions/GSWCollapsibleComponentContent.gswc/GSWCollapsibleComponentContent.gswd
set framework binding
* GSWExtensions/GSWCollapsibleComponentContent.[hm]
handle framework binding
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
set framework binding
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
set framework binding
* GSWeb/GSWApplication.[hm]
add -frameworkNameGSWExtensions
* GSWeb/GSWPasswordField.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWPasswordField.h
remove unneeded declarations
* GSWeb/GSWHiddenField.m
fix
* GSWeb/GSWHiddenField.h
remove unneeded declarations
* GSWeb/GSWString.m
fix appendToResponse:inContext: when formattedValue is nil
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWTemplateParser.m:
fix exception error messages
* GSWeb/GSWPopUpButton.m
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWRepetition.m
respect GNUstep coding standard (curly brackets placement, etc.)
reimplement startIndex and stopIndex bindings
clean code
* GSWeb/GSWCheckBoxList.m
fix -initWithName:...: prefix__Key duplicate, _value
* GSWeb.framework/GSWRadioButtonList.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug in -initWithName (valueAssoc)
Fix bug in _slowTakeValuesFromRequest: (call NSStringWithObject())
* GSWeb/GSWTextField.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWText.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
Fix bug (call NSStringWithObject())
* GSWeb/GSWCheckBox.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWRadioButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb.framework/GSWInput.h
remove initWithName:associations:contentElements:
* GSWeb.framework/GSWInput.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
ensure name is a string in -nameInContext:
fix name escaping in -_appendNameAttributeToResponse:
ensure value is a string in _appendValueAttributeToResponse:
remove initWithName:associations:contentElements:
* GSWeb/GSWHTMLDynamicElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion in -_finishInitialization
rename variables to make code understandable
* GSWeb/GSWConditional.m
respect GNUstep coding standard (curly brackets placement, etc.)
* GSWeb/GSWActionImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
fix secure stuff
ensure string conversion
* GSWeb/GSWActionURL.m
respect GNUstep coding standard (curly brackets placement, etc.)
ensure string conversion
* GSWeb/GSWBody.h
remove uneeded declarations
* GSWeb/GSWBody.m
remove uneeded stuff
fix initWithName:...
* GSWeb.framework/GSWBrowser.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
rename variables to make code understandable
Fix bugs
* GSWeb.framework/GSWFileUpload.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWFrame.h
remove uneeded declarations
* GSWeb/GSWFrame.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericContainer.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericContainer.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWGenericElement.h
remove uneeded declarations
change inheritence
* GSWeb/GSWGenericElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
clean code
* GSWeb/GSWForm.h
remove uneeded declarations
* GSWeb/GSWForm.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWHTMLURLValuedElement.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
finish appendAttributesToResponse:inContext implementation
* GSWeb/GSWHyperlink.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
ensure string conversion
* GSWeb/GSWImage.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWClientSideScript.h
remove uneeded declarations
change inheritence
add -setLanguage
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWSubmitButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
clean code
* GSWeb/GSWImageButton.m
respect GNUstep coding standard (curly brackets placement, etc.)
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
* GSWeb/GSWSwitchComponent.m
clean and update code
* GSWeb/GSWJavaScript.m
clean and update code
* GSWeb/GSWContext.m
clean & fix -computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary:
fix componentActionURL... methods
* GSWeb/GSWHTTPIO.m:
use GSWeb_appendStringWithImpPtr()
* GSWeb/GSWActionURL.h
remove uneeded declarations
* GSWeb/GSWPrivate.h
add GSWeb_objectAtIndexWithImpPtr
* GSWDatabase/WODisplayGroup.m
Don't raise validation exceptions in _qualifierForKey:value:operatorSelector:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37899 72102866-910b-0410-8b05-ffd578937521
2014-05-22 11:09:50 +00:00
|
|
|
_sendMessage(response, fh, httpVersion, request, bufferStr,&bufferAppStringIMP);
|
2007-11-25 16:49:37 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@end
|