fix "URL limit exceeded" when errors are present on quick payment entry, RT#9917
[freeside.git] / httemplate / elements / create_uri_query
diff --git a/httemplate/elements/create_uri_query b/httemplate/elements/create_uri_query
new file mode 100644 (file)
index 0000000..32d8e2f
--- /dev/null
@@ -0,0 +1,25 @@
+<% $query %>\
+<%init>
+
+my $query = $cgi->query_string;
+
+if ( length($query) > 1920 ) { #stupid IE 2083 URL limit
+
+  my $session = int(rand(4294967296)); #XXX
+  my $pref = new FS::access_user_pref({
+    'usernum'    => $FS::CurrentUser::CurrentUser->usernum,
+    'prefname'   => "redirect$session",
+    'prefvalue'  => $query,
+    'expiration' => time + 3600, #1h?  1m?
+  });
+  my $pref_error = $pref->insert;
+  if ( $pref_error ) {
+    die "FATAL: couldn't even set redirect cookie: $pref_error".
+        " attempting to set redirect$session to $query\n";
+  }
+
+  $query = "redirect=$session";
+
+}
+
+</%init>